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;