2026-10-04 11:44:51 +02:00
|
|
|
namespace decePubClient.Models;
|
2026-10-04 11:03:14 +02:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 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.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static class APIs
|
|
|
|
|
{
|
|
|
|
|
public const string ClientApiPrefix = "clientapi/";
|
|
|
|
|
public const string MastodonPrefix = "api/";
|
|
|
|
|
public const string OAuthPrefix = "oauth/";
|
|
|
|
|
|
|
|
|
|
public static class ClientApi
|
|
|
|
|
{
|
|
|
|
|
public const string POST_Login = "clientapi/user/login";
|
|
|
|
|
public const string GET_Logout = "clientapi/user/logout";
|
|
|
|
|
public const string GET_SniffAgain = "clientapi/user/sniff/again";
|
2026-10-05 18:32:47 +02:00
|
|
|
public const string POST_UpdatePassword = "clientapi/user/update/password";
|
|
|
|
|
public const string POST_DeleteAccount = "clientapi/user/delete";
|
2026-10-04 11:03:14 +02:00
|
|
|
public const string GET_CurrentVersion = "clientapi/data/current-version";
|
|
|
|
|
public const string GET_Personas = "clientapi/avatar/private/list";
|
2026-10-05 06:20:18 +02:00
|
|
|
public const string POST_InsertPersona = "clientapi/avatar/private/insert";
|
2026-10-04 11:03:14 +02:00
|
|
|
public const string GET_Groups = "clientapi/group/list";
|
2026-10-05 18:24:39 +02:00
|
|
|
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";
|
2026-10-04 11:03:14 +02:00
|
|
|
public const string GET_Posts = "clientapi/post/list";
|
|
|
|
|
public const string GET_Nearby = "clientapi/post/nearby";
|
|
|
|
|
public const string POST_InsertPost = "clientapi/post/insert";
|
2026-10-07 02:14:53 +02:00
|
|
|
public const string POST_DeletePost = "clientapi/post/delete";
|
2026-10-05 06:20:18 +02:00
|
|
|
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_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";
|
2026-10-07 12:45:30 +02:00
|
|
|
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)}";
|
2026-10-04 11:03:14 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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";
|
2026-10-05 06:20:18 +02:00
|
|
|
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";
|
2026-10-04 11:03:14 +02:00
|
|
|
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";
|
2026-10-05 06:20:18 +02:00
|
|
|
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)}";
|
2026-10-04 11:03:14 +02:00
|
|
|
public const string GET_Notifications = "api/v1/notifications";
|
|
|
|
|
public const string POST_Media = "api/v2/media";
|
2026-10-07 11:56:59 +02:00
|
|
|
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 const string GET_InstanceV2 = "api/v2/instance";
|
|
|
|
|
public const string DELETE_ProfileAvatar = "api/v1/profile/avatar";
|
|
|
|
|
public const string DELETE_ProfileHeader = "api/v1/profile/header";
|
2026-10-05 01:23:18 +02:00
|
|
|
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";
|
2026-10-04 11:03:14 +02:00
|
|
|
|
|
|
|
|
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";
|
2026-10-05 06:20:18 +02:00
|
|
|
public static string GET_M_AccountFollowing(string accountId) => $"api/v1/accounts/{Uri.EscapeDataString(accountId)}/following";
|
2026-10-04 11:03:14 +02:00
|
|
|
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}";
|
2026-10-05 01:23:18 +02:00
|
|
|
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}";
|
2026-10-05 02:49:51 +02:00
|
|
|
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)}";
|
2026-10-05 03:53:51 +02:00
|
|
|
public const string GET_ScheduledStatuses = "api/v1/scheduled_statuses";
|
2026-10-05 04:42:42 +02:00
|
|
|
public static string GET_M_StatusSource(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/source";
|
2026-10-06 13:03:19 +02:00
|
|
|
public static string GET_M_StatusHistory(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}/history";
|
2026-10-06 16:47:19 +02:00
|
|
|
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";
|
2026-10-06 16:47:51 +02:00
|
|
|
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")}";
|
2026-10-05 04:42:42 +02:00
|
|
|
public static string PUT_M_Status(string statusId) => $"api/v1/statuses/{Uri.EscapeDataString(statusId)}";
|
2026-10-05 03:53:51 +02:00
|
|
|
public const string GET_FollowedTags = "api/v1/followed_tags";
|
2026-10-05 04:35:23 +02:00
|
|
|
public const string GET_GroupedNotifications = "api/v2/notifications";
|
|
|
|
|
public const string GET_UnreadNotifications = "api/v2/notifications/unread_count";
|
|
|
|
|
public const string POST_Markers = "api/v1/markers";
|
2026-10-05 03:53:51 +02:00
|
|
|
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)}";
|
2026-10-05 03:10:27 +02:00
|
|
|
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)}";
|
2026-10-04 11:03:14 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class PrivaPub
|
|
|
|
|
{
|
|
|
|
|
public const string GET_Instances = "api/privapub/v1/instances";
|
2026-10-04 11:44:51 +02:00
|
|
|
public const string GET_Cdns = "api/privapub/v1/cdns";
|
|
|
|
|
|
|
|
|
|
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)}";
|
2026-10-04 11:03:14 +02:00
|
|
|
|
|
|
|
|
public static string GET_M_Provenance(string statusId) => $"api/privapub/v1/statuses/{Uri.EscapeDataString(statusId)}/provenance";
|
2026-10-05 15:19:07 +02:00
|
|
|
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";
|
2026-10-04 11:03:14 +02:00
|
|
|
}
|
|
|
|
|
}
|