namespace decePubClient.Models; /// /// Every PrivaPub route the client calls, relative to AppConfiguration.ApiBaseAddress (b2b.next's naming: the HTTP /// method first, _M_ for a route built from parameters). HttpService picks the credentials from the prefix: /// clientapi/ the root's JWT, api/ the current persona's Mastodon token, oauth/ none. /// public static class APIs { public const string ClientApiPrefix = "clientapi/"; public const string MastodonPrefix = "api/"; public static class ClientApi { public const string POST_Login = "clientapi/user/login"; public const string GET_Setup = "clientapi/user/setup"; public const string POST_Setup = "clientapi/user/setup"; public const string POST_InvitationSignUp = "clientapi/user/invitation/signup"; public const string GET_Logout = "clientapi/user/logout"; public const string GET_SniffAgain = "clientapi/user/sniff/again"; public const string POST_UpdatePassword = "clientapi/user/update/password"; public const string POST_LogoutEverywhere = "clientapi/user/logout/everywhere"; public const string POST_RecoverPassword = "clientapi/user/recover/password"; public const string POST_RecoverValid = "clientapi/user/recover/valid"; public const string POST_RecoverUpdatePassword = "clientapi/user/recover/update/password"; public const string GET_Account = "clientapi/user/account"; public const string POST_Email = "clientapi/user/email"; public const string POST_EmailVerify = "clientapi/user/email/verify"; public const string POST_EmailRemove = "clientapi/user/email/remove"; public const string POST_TotpSetup = "clientapi/user/totp/setup"; public const string POST_TotpEnable = "clientapi/user/totp/enable"; public const string POST_TotpDisable = "clientapi/user/totp/disable"; public const string GET_UserSettings = "clientapi/user/settings"; public const string POST_UpdateUserSettings = "clientapi/user/update/settings"; public const string POST_DeleteAccount = "clientapi/user/delete"; public const string GET_Personas = "clientapi/avatar/private/list"; public const string POST_InsertPersona = "clientapi/avatar/private/insert"; public const string GET_Groups = "clientapi/group/list"; public const string GET_GroupMembers = "clientapi/group/members"; public const string POST_InsertGroup = "clientapi/group/insert"; public const string POST_UpdateGroup = "clientapi/group/update"; public const string POST_JoinGroup = "clientapi/group/join"; public const string POST_LeaveGroup = "clientapi/group/leave"; public const string POST_ApproveGroupMember = "clientapi/group/approve"; public const string POST_RejectGroupMember = "clientapi/group/reject"; public const string POST_RemoveGroupMember = "clientapi/group/remove"; public const string GET_Posts = "clientapi/post/list"; public const string GET_Nearby = "clientapi/post/nearby"; public const string POST_InsertPost = "clientapi/post/insert"; public const string POST_DeletePost = "clientapi/post/delete"; public const string GET_ModeratorReports = "clientapi/moderator/reports"; public static string POST_M_ResolveReport(string reportId) => $"clientapi/moderator/reports/{Uri.EscapeDataString(reportId)}/resolve"; public const string GET_ModeratorLog = "clientapi/moderator/log"; public const string GET_AdminSettings = "clientapi/admin/settings"; public const string POST_AdminSettings = "clientapi/admin/settings"; public const string POST_AdminThumbnail = "clientapi/admin/settings/thumbnail"; public const string DELETE_AdminThumbnail = "clientapi/admin/settings/thumbnail"; public const string GET_AdminAnnouncements = "clientapi/admin/announcements/list"; public const string POST_AdminAnnouncementInsert = "clientapi/admin/announcements/insert"; public const string POST_AdminAnnouncementUpdate = "clientapi/admin/announcements/update"; public static string POST_M_AdminAnnouncementDelete(string id) => $"clientapi/admin/announcements/delete?id={Uri.EscapeDataString(id)}"; public const string GET_AdminRelays = "clientapi/admin/relays"; public const string POST_AdminRelayInsert = "clientapi/admin/relays/insert"; public static string POST_M_AdminRelayDelete(string address) => $"clientapi/admin/relays/delete?address={Uri.EscapeDataString(address)}"; public const string GET_AdminDomainBlocks = "clientapi/admin/domainblocks/list"; public const string POST_AdminDomainBlock = "clientapi/admin/domainblocks/insert"; public static string POST_M_AdminDomainUnblock(string domain) => $"clientapi/admin/domainblocks/delete?domain={Uri.EscapeDataString(domain)}"; public const string GET_StatisticsOverview = "clientapi/admin/statistics/overview"; public const string GET_StatisticsHosts = "clientapi/admin/statistics/hosts"; public const string GET_StatisticsCrawler = "clientapi/admin/statistics/crawler"; public static string GET_M_StatisticsHost(string host) => $"clientapi/admin/statistics/hosts/{Uri.EscapeDataString(host)}"; public static string POST_M_StatisticsDescribe(string host) => $"clientapi/admin/statistics/hosts/{Uri.EscapeDataString(host)}/describe"; public const string GET_StatisticsEvents = "clientapi/admin/statistics/events"; public const string GET_StatisticsServer = "clientapi/admin/statistics/server"; public const string GET_AdminBackups = "clientapi/admin/backups"; public const string POST_AdminBackup = "clientapi/admin/backups"; public static string DELETE_M_AdminBackup(string id) => $"clientapi/admin/backups/{Uri.EscapeDataString(id)}"; public static string POST_M_AdminBackupTicket(string id) => $"clientapi/admin/backups/{Uri.EscapeDataString(id)}/ticket"; public static string POST_M_AdminBackupRestore(string id) => $"clientapi/admin/backups/{Uri.EscapeDataString(id)}/restore"; public const string POST_AdminBackupUpload = "clientapi/admin/backups/uploads"; public static string PUT_M_AdminBackupUpload(string id) => $"clientapi/admin/backups/uploads/{Uri.EscapeDataString(id)}"; public static string POST_M_AdminBackupUploadFinish(string id) => $"clientapi/admin/backups/uploads/{Uri.EscapeDataString(id)}/finish"; public static string DELETE_M_AdminBackupUpload(string id) => $"clientapi/admin/backups/uploads/{Uri.EscapeDataString(id)}"; public static string GET_M_PersonaArchive(string personaId) => $"clientapi/persona/{Uri.EscapeDataString(personaId)}/archive"; public static string POST_M_PersonaArchive(string personaId) => $"clientapi/persona/{Uri.EscapeDataString(personaId)}/archive"; public static string POST_M_PersonaArchiveTicket(string personaId) => $"clientapi/persona/{Uri.EscapeDataString(personaId)}/archive/ticket"; public static string POST_M_PersonaArchiveImport(string personaId) => $"clientapi/persona/{Uri.EscapeDataString(personaId)}/archive/import"; public static string POST_M_PersonaArchiveImportStop(string personaId) => $"clientapi/persona/{Uri.EscapeDataString(personaId)}/archive/import/stop"; public const string POST_PersonaArchiveUpload = "clientapi/persona/archive/uploads"; public static string PUT_M_PersonaArchiveUpload(string id) => $"clientapi/persona/archive/uploads/{Uri.EscapeDataString(id)}"; public static string DELETE_M_PersonaArchiveUpload(string id) => $"clientapi/persona/archive/uploads/{Uri.EscapeDataString(id)}"; } public static class OAuth { public const string POST_Token = "oauth/token"; public const string POST_Revoke = "oauth/revoke"; public const string TokenExchangeGrant = "urn:ietf:params:oauth:grant-type:token-exchange"; public const string JwtTokenType = "urn:ietf:params:oauth:token-type:jwt"; public const string Scopes = "read write follow"; } public static class Mastodon { public const string GET_VerifyCredentials = "api/v1/accounts/verify_credentials"; public const string PATCH_UpdateCredentials = "api/v1/accounts/update_credentials"; public const string GET_Mutes = "api/v1/mutes"; public const string GET_Blocks = "api/v1/blocks"; public const string GET_DomainBlocks = "api/v1/domain_blocks"; public const string POST_DomainBlocks = "api/v1/domain_blocks"; public const string DELETE_DomainBlocks = "api/v1/domain_blocks"; public const string GET_HomeTimeline = "api/v1/timelines/home"; public const string GET_PublicTimeline = "api/v1/timelines/public"; public const string GET_Statuses = "api/v1/statuses"; public const string POST_Statuses = "api/v1/statuses"; public const string GET_Favourites = "api/v1/favourites"; public const string GET_Bookmarks = "api/v1/bookmarks"; public const string GET_Conversations = "api/v1/conversations"; public static string POST_M_ReadConversation(string conversationId) => $"api/v1/conversations/{Uri.EscapeDataString(conversationId)}/read"; public static string DELETE_M_Conversation(string conversationId) => $"api/v1/conversations/{Uri.EscapeDataString(conversationId)}"; public const string POST_Media = "api/v2/media"; public static string GET_M_Media(string mediaId) => $"api/v1/media/{Uri.EscapeDataString(mediaId)}"; public static string PUT_M_Media(string mediaId) => $"api/v1/media/{Uri.EscapeDataString(mediaId)}"; public static string DELETE_M_Media(string mediaId) => $"api/v1/media/{Uri.EscapeDataString(mediaId)}"; public const string GET_InstanceV2 = "api/v2/instance"; public const string GET_InstanceRules = "api/v1/instance/rules"; public const string GET_InstanceExtendedDescription = "api/v1/instance/extended_description"; public const string GET_InstancePrivacyPolicy = "api/v1/instance/privacy_policy"; public const string GET_InstanceTermsOfService = "api/v1/instance/terms_of_service"; public const string GET_InstanceDomainBlocks = "api/v1/instance/domain_blocks"; public const string GET_Announcements = "api/v1/announcements"; public static string POST_M_DismissAnnouncement(string announcementId) => $"api/v1/announcements/{Uri.EscapeDataString(announcementId)}/dismiss"; public static string M_AnnouncementReaction(string announcementId, string emoji) => $"api/v1/announcements/{Uri.EscapeDataString(announcementId)}/reactions/{Uri.EscapeDataString(emoji)}"; public const string DELETE_ProfileAvatar = "api/v1/profile/avatar"; public const string DELETE_ProfileHeader = "api/v1/profile/header"; public const string GET_AccountLookup = "api/v1/accounts/lookup"; public const string GET_Relationships = "api/v1/accounts/relationships"; public const string GET_FollowRequests = "api/v1/follow_requests"; public const string GET_Search = "api/v2/search"; public static string GET_M_TagTimeline(string tag) => $"api/v1/timelines/tag/{Uri.EscapeDataString(tag)}"; public static string GET_M_Account(string accountId) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}"; public static string GET_M_AccountStatuses(string accountId) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}/statuses"; public static string GET_M_AccountFollowing(string accountId) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}/following"; public static string GET_M_AccountFollowers(string accountId) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}/followers"; public static string POST_M_RemoveFromFollowers(string accountId) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}/remove_from_followers"; public static string GET_M_Status(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}"; public static string GET_M_Context(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/context"; public static string DELETE_M_Status(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}"; public static string POST_M_StatusAction(string statusId, string action) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/{action}"; public static string POST_M_AccountAction(string accountId, string action) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}/{action}"; public static string M_Reaction(string statusId, string emoji) => $"api/v1/pleroma/statuses/{Uri.EscapeDataString(statusId)}/reactions/{Uri.EscapeDataString(emoji)}"; public static string POST_M_PollVotes(string pollId) => $"api/v1/polls/{Uri.EscapeDataString(pollId)}/votes"; public static string POST_M_FollowRequest(string accountId, string answer) => $"api/v1/follow_requests/{Uri.EscapeDataString(accountId)}/{answer}"; public const string GET_Lists = "api/v1/lists"; public const string POST_List = "api/v1/lists"; public const string GET_AccountSearch = "api/v1/accounts/search"; public static string PUT_M_List(string listId) => $"api/v1/lists/{Uri.EscapeDataString(listId)}"; public static string DELETE_M_List(string listId) => $"api/v1/lists/{Uri.EscapeDataString(listId)}"; public static string M_ListAccounts(string listId) => $"api/v1/lists/{Uri.EscapeDataString(listId)}/accounts"; public static string GET_M_AccountLists(string accountId) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}/lists"; public static string GET_M_ListTimeline(string listId) => $"api/v1/timelines/list/{Uri.EscapeDataString(listId)}"; public const string GET_ScheduledStatuses = "api/v1/scheduled_statuses"; public static string GET_M_StatusSource(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/source"; public static string GET_M_StatusHistory(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/history"; public static string GET_M_FavouritedBy(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/favourited_by"; public static string GET_M_RebloggedBy(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/reblogged_by"; public const string POST_Reports = "api/v1/reports"; public const string GET_NotificationPolicy = "api/v2/notifications/policy"; public const string PATCH_NotificationPolicy = "api/v2/notifications/policy"; public const string GET_NotificationRequests = "api/v1/notifications/requests"; public static string POST_M_NotificationRequest(string requestId, bool accept) => $"api/v1/notifications/requests/{Uri.EscapeDataString(requestId)}/{(accept ? "accept" : "dismiss")}"; public static string PUT_M_Status(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}"; public static string PUT_M_StatusInteractionPolicy(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/interaction_policy"; public static string POST_M_RevokeQuote(string quotedId, string quotingId) => $"api/v1/statuses/{Uri.EscapeDataString(quotedId)}/quotes/{Uri.EscapeDataString(quotingId)}/revoke"; public const string GET_FollowedTags = "api/v1/followed_tags"; public const string GET_GroupedNotifications = "api/v2/notifications"; public const string GET_UnreadNotifications = "api/v2/notifications/unread_count"; public static string POST_M_DismissNotificationGroup(string groupKey) => $"api/v2/notifications/{Uri.EscapeDataString(groupKey)}/dismiss"; public const string POST_Markers = "api/v1/markers"; public const string GET_TrendingTags = "api/v1/trends/tags"; public const string GET_TrendingStatuses = "api/v1/trends/statuses"; public const string GET_TrendingLinks = "api/v1/trends/links"; public const string GET_Directory = "api/v1/directory"; public static string GET_M_Tag(string name) => $"api/v1/tags/{Uri.EscapeDataString(name)}"; public static string POST_M_TagAction(string name, string action) => $"api/v1/tags/{Uri.EscapeDataString(name)}/{action}"; public static string PUT_M_ScheduledStatus(string id) => $"api/v1/scheduled_statuses/{Uri.EscapeDataString(id)}"; public static string DELETE_M_ScheduledStatus(string id) => $"api/v1/scheduled_statuses/{Uri.EscapeDataString(id)}"; public const string GET_Filters = "api/v2/filters"; public const string POST_Filter = "api/v2/filters"; public static string PUT_M_Filter(string filterId) => $"api/v2/filters/{Uri.EscapeDataString(filterId)}"; public static string DELETE_M_Filter(string filterId) => $"api/v2/filters/{Uri.EscapeDataString(filterId)}"; public static string POST_M_FilterStatus(string filterId) => $"api/v2/filters/{Uri.EscapeDataString(filterId)}/statuses"; public static string DELETE_M_FilterStatus(string filterStatusId) => $"api/v2/filters/statuses/{Uri.EscapeDataString(filterStatusId)}"; } public static class PrivaPub { public const string GET_Instances = "api/privapub/v1/instances"; public static string GET_M_InstanceHistory(string host) => $"api/privapub/v1/instances/{Uri.EscapeDataString(host)}/history"; public static string GET_M_Cdn(string key) => $"api/privapub/v1/cdns/{Uri.EscapeDataString(key)}"; public static string GET_M_Provenance(string statusId) => $"api/privapub/v1/statuses/{Uri.EscapeDataString(statusId)}/provenance"; public static string POST_M_Join(string statusId) => $"api/privapub/v1/statuses/{Uri.EscapeDataString(statusId)}/join"; public static string POST_M_Leave(string statusId) => $"api/privapub/v1/statuses/{Uri.EscapeDataString(statusId)}/leave"; } }