d9f7ea6
use utoipa::OpenApi;
use crate::features::avatar::types::{AvatarFormat, AvatarView, UploadAvatarCmd};
use crate::features::deletion::types::{
DeletionRequestView, DeletionStatus, RequestDeletionCmd,
};
use crate::features::devices::types::{DeviceView, UpdateDeviceCmd};
use crate::features::emails::types::{
AddEmailCmd, AddEmailResp, ConfirmEmailChangeCmd, EmailChangeTicketStatus,
EmailChangeTicketView, EmailView, SetPrimaryEmailResp,
};
use crate::features::notifications::types::{
ListNotificationsQuery, MarkReadCmd, NotificationType, NotificationView,
RecentMentionView, ReportStatus, ReportView, SaveMessageCmd, SavedMessageView,
ScheduledMessageStatus, ScheduledMessageView, SubmitReportCmd, UnreadCountResp,
UpdateReportCmd,
};
use crate::features::preferences::types::{Audience, UpdatePreferencesCmd, UserPreferences};
use crate::features::profile::types::{
MemeView, ProfileView, UpdateProfileCmd, UpdateProfileFields, UserMe,
UserPublic, UpsertMemeCmd,
};
use crate::config::ProfileVisibility;
use crate::features::security::types::{
AccessKeyScope, AccessKeyView, AddSshKeyCmd, CreateAccessKeyCmd, CreateAccessKeyResp,
PushPlatform, PushSubscriptionView, RecoveryCodeView, RegenerateRecoveryResp, SshKeyType,
SshKeyView, UpsertPushCmd,
};
use crate::features::sessions::types::{ListSessionsQuery, SessionKind, SessionView};
use crate::features::social::types::{
BlockedSummary, FollowerSummary, ListBlocksQuery, ListFollowersQuery, ListFollowingQuery,
};
use crate::features::suspensions::types::{
RevokeSuspensionCmd, SuspendCmd, SuspensionType, SuspensionView,
};
#[derive(OpenApi)]
#[openapi(
info(
title = "User API",
version = "1.0.0",
description = "Account, profile, preferences, social graph, sessions, devices, suspensions, deletion, security credentials, notifications endpoints."
),
tags(
(name = "user", description = "User profile, account, sessions and notifications endpoints.")
),
paths(
// === avatar ===
crate::handler::avatar::current::handler,
crate::handler::avatar::upload::handler,
crate::handler::avatar::delete::handler,
// === profile ===
crate::handler::profile::me::handler,
crate::handler::profile::public_view::handler,
crate::handler::profile::update_profile::handler,
crate::handler::profile::update_admin::handler,
crate::handler::profile::profile_view::handler,
crate::handler::profile::memes::list_handler,
crate::handler::profile::memes::create_handler,
crate::handler::profile::memes::delete_handler,
// === preferences ===
crate::handler::preferences::get::handler,
crate::handler::preferences::update::handler,
// === social ===
crate::handler::social::follow::handler,
crate::handler::social::unfollow::handler,
crate::handler::social::list_followers::handler,
crate::handler::social::list_following::handler,
crate::handler::social::block::handler,
crate::handler::social::unblock::handler,
crate::handler::social::list_blocks::handler,
// === devices ===
crate::handler::devices::list_devices::handler,
crate::handler::devices::update_device::handler,
crate::handler::devices::delete_device::handler,
// === sessions ===
crate::handler::sessions::list_sessions::handler,
crate::handler::sessions::revoke_session::handler,
crate::handler::sessions::revoke_sessions::handler,
// === emails ===
crate::handler::emails::list_emails::handler,
crate::handler::emails::add_email::handler,
crate::handler::emails::set_primary::handler,
crate::handler::emails::delete_email::handler,
crate::handler::emails::request_change::handler,
crate::handler::emails::confirm_change::handler,
crate::handler::emails::cancel_change::handler,
// === deletion ===
crate::handler::deletion::request::handler,
crate::handler::deletion::cancel::handler,
crate::handler::deletion::confirm::handler,
crate::handler::deletion::list_pending::handler,
crate::handler::deletion::complete::handler,
// === suspensions ===
crate::handler::suspensions::create::handler,
crate::handler::suspensions::revoke::handler,
crate::handler::suspensions::list_user::handler,
crate::handler::suspensions::list_all::handler,
crate::handler::suspensions::list_self::handler,
// === security ===
crate::handler::security::recovery_codes::list::handler,
crate::handler::security::recovery_codes::regenerate::handler,
crate::handler::security::access_keys::list_keys::handler,
crate::handler::security::access_keys::create_key::handler,
crate::handler::security::access_keys::delete_key::handler,
crate::handler::security::ssh_keys::list_keys::handler,
crate::handler::security::ssh_keys::add_key::handler,
crate::handler::security::ssh_keys::delete_key::handler,
crate::handler::security::push_subscriptions::list::handler,
crate::handler::security::push_subscriptions::upsert::handler,
crate::handler::security::push_subscriptions::delete::handler,
// === notifications ===
crate::handler::notifications::list_notifications::handler,
crate::handler::notifications::mark_read::handler,
crate::handler::notifications::mark_all_read::handler,
crate::handler::notifications::unread_count::handler,
crate::handler::notifications::recent_mentions::handler,
crate::handler::notifications::reports::submit::handler,
crate::handler::notifications::reports::list_my::handler,
crate::handler::notifications::saved_messages::list::handler,
crate::handler::notifications::saved_messages::save::handler,
crate::handler::notifications::saved_messages::unsave::handler,
crate::handler::notifications::scheduled_messages::list::handler,
crate::handler::notifications::scheduled_messages::cancel::handler,
),
components(schemas(
UserPublic, UserMe, ProfileView, ProfileVisibility, UpdateProfileCmd, UpdateProfileFields,
MemeView, UpsertMemeCmd,
AvatarView, AvatarFormat, UploadAvatarCmd,
UserPreferences, UpdatePreferencesCmd, Audience,
FollowerSummary, BlockedSummary, ListFollowersQuery, ListFollowingQuery, ListBlocksQuery,
DeviceView, UpdateDeviceCmd,
SessionView, SessionKind, ListSessionsQuery,
EmailView, AddEmailCmd, AddEmailResp, SetPrimaryEmailResp,
EmailChangeTicketView, EmailChangeTicketStatus, ConfirmEmailChangeCmd,
DeletionRequestView, DeletionStatus, RequestDeletionCmd,
SuspensionView, SuspensionType, SuspendCmd, RevokeSuspensionCmd,
RecoveryCodeView, RegenerateRecoveryResp,
AccessKeyView, AccessKeyScope, CreateAccessKeyCmd, CreateAccessKeyResp,
SshKeyView, SshKeyType, AddSshKeyCmd,
PushSubscriptionView, PushPlatform, UpsertPushCmd,
NotificationView, NotificationType, ListNotificationsQuery, MarkReadCmd, UnreadCountResp,
RecentMentionView,
ReportView, ReportStatus, SubmitReportCmd, UpdateReportCmd,
SavedMessageView, SaveMessageCmd,
ScheduledMessageView, ScheduledMessageStatus,
))
)]
pub struct UserApiDoc;