asyncapi: 2.0.0 info: title: Lemmy WebSocket API version: '2.0' contact: name: Mastodon url: https://mastodon.social/@LemmyDev description: |- ### About Lemmy [**Lemmy**](https://github.com/LemmyNet/lemmy) is a decentralized alternative to widely-used proprietary link aggregators like Reddit. ### How to use this WebSocket API document You can either use it to: - **Interactively browse the WebSocket API.** Browse the *Channels*, check out the responses and examples (tailor the *PUBLISH* requests to suit with your favorite WebSocket API client). For testing purposes, either [set up your own server](https://lemmy.ml/docs/en/administration/administration.html) or use the Enterprise server (*ws://enterprise.lemmy.ml/api/v2/ws*) - **[Open and save](asyncapi.yaml) this specification file** and use it with the various [AsyncAPI tools](https://www.asyncapi.com/docs/community/tooling) (perhaps to generate code or documentation). ### The HTTP API Lemmy also has an HTTP API. The WebSocket and HTTP API are almost identical: - WebSocket API needs `let send = { op: userOperation[op], data: form}` as shown below - HTTP API requires the form at the top level and an HTTP operation (GET, PUT or POST) and endpoint. For example: `PUT /comment`. For more information, see [http.ts](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/http.ts) license: name: AGPL url: 'https://www.gnu.org/licenses/agpl-3.0.en.html' servers: ds9: url: ds9.lemmy.ml/api/v2/ws protocol: WebSocket description: DS9 test server enterprise: url: enterprise.lemmy.ml/api/v2/ws protocol: WebSocket description: Enterprise test server voyager: url: voyager.lemmy.ml/api/v2/ws protocol: WebSocket description: Voyager test server local: url: localhost:1235/api/v2/ws protocol: WebSocket description: Local Docker container externalDocs: description: Lemmy documentation url: 'https://lemmy.ml/docs/index.html' tags: - name: User, authentication and admin - name: Site - name: Community - name: Post - name: Comments channels: Login: publish: summary: Login (request) description: |- Login with username or registered email. #### HTTP API - operation and endpoint. `POST /user/login` operationId: loginRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/loginRequest' subscribe: summary: Login (response) description: 'You will receive an authentication string (`jwt`)' operationId: loginResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/loginResponse' - $ref: '#/components/messages/errorResponse' GetCaptcha: publish: summary: GetCaptcha (request) description: |- Get Captcha details for registering a user. These details expire after 10 minutes. #### HTTP API - operation and endpoint. `GET /user/get_captcha` operationId: getCaptchaRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/getCaptchaRequest' subscribe: summary: GetCaptcha (response) description: Captcha details returned from the server operationId: getCaptchaResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/getCaptchaResponse' - $ref: '#/components/messages/errorResponse' Register: publish: summary: Register (request) description: |- Register a user on the Lemmy server. If Captcha is enabled on the server, obtain those details by using **GetCaptcha** (*before* attempting to register) #### HTTP API - operation and endpoint. `POST /user/register` operationId: registerRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/registerRequest' subscribe: summary: Register (response) description: 'The response to the registration request will be an authentication string (`jwt`) for that user' operationId: registerResponseMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/registerResponse' GetUserDetails: publish: summary: GetUserDetails (request) description: |- - Use the `username` field to return details about a local user - Use the `user-id` field to return details about a federated user. #### HTTP API - operation and endpoint. `GET /user` operationId: getUserDetailsMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/getUserDetailsRequest' subscribe: summary: GetUserDetails (response) description: Returns full details about a specified user (including the last post the user wrote) operationId: getUserDetailsResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/getUserDetailsResponse' - $ref: '#/components/messages/errorResponse' SaveUserSettings: publish: summary: SaveUserSettings (request) description: |- Set profile for an existing user. If you want to set a new password, you *must* provide **old_password**. #### HTTP API - operation and endpoint. `PUT /user/save_user_settings` operationId: saverUserSettingsRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/saveUserSettingsRequest' subscribe: summary: SaveUserSettings (response) description: Get details about a specified user operationId: saveUserSettingsResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/saveUserSettingsResponse' - $ref: '#/components/messages/errorResponse' GetReplies: publish: summary: GetReplies (request) description: |- See all notifications and comments on all a user's posts #### HTTP API - operation and endpoint. `GET /user/replies` operationId: getUserRepliesRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/getUserRepliesRequest' subscribe: summary: GetReplies (response) description: Returns detailed reply data operationId: getRepliesResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/repliesResponse' - $ref: '#/components/messages/errorResponse' GetUserMentions: publish: summary: GetUserMentions (request) description: |- Return any @ mentions of the user in posts and comments #### HTTP API - operation and endpoint. `GET /user/mention` operationId: getUserMentionsRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/getUserMentionsRequest' subscribe: summary: GetUserMentions (response) description: Returns detailed data about mentions operationId: getMentionsResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/mentionsResponse' - $ref: '#/components/messages/errorResponse' MarkUserMentionAsRead: publish: summary: MarkUserMentionAsRead (request) description: |- Mark a specified mention as read. Only the recipient of a mention can do this. #### HTTP API - operation and endpoint. `POST /user/mention/mark_as_read` operationId: markMentionsRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/markMentionsRequest' subscribe: summary: MarkUserMentionAsRead (response) description: Returns detailed data about the mention operationId: markMentionResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/markMentionResponse' - $ref: '#/components/messages/errorResponse' GetPrivateMessages: publish: summary: GetPrivateMessages (request) description: |- Request a list of messages sent to the user. #### HTTP API - operation and endpoint. `GET /private_message/list` operationId: getPrivateMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/privateMessageRequest' subscribe: summary: GetPrivateMessages (response) description: Returns list of messages operationId: getMessagesResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/privateMessagesResponse' - $ref: '#/components/messages/errorResponse' CreatePrivateMessage: publish: summary: CreatePrivateMessage (request) description: |- Send a private message to another user. #### HTTP API - operation and endpoint. `POST /private_message` operationId: createPrivateMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/createPrivateMessageRequest' subscribe: summary: CreatePrivateMessage (response) description: Confirm sending of a private message operationId: createPrivateMessageResponse tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/createPrivateMessageResponse' - $ref: '#/components/messages/errorResponse' EditPrivateMessage: publish: summary: EditPrivateMessage (request) description: |- Replace an existing private message with the provided content. #### HTTP API - operation and endpoint. `PUT /private_message` operationId: editPrivateMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/editPrivateMessageRequest' subscribe: summary: EditPrivateMessage (response) description: Confirm replacement of a private message operationId: editPrivateMessageResponse tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/editPrivateMessageResponse' - $ref: '#/components/messages/errorResponse' DeletePrivateMessage: publish: summary: DeletePrivateMessage (request) description: |- Delete a specified private message. #### HTTP API - operation and endpoint. `POST /private_message/delete` operationId: deletePrivateMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/deletePrivateMessageRequest' subscribe: summary: DeletePrivateMessage (response) description: Confirm deletion of a private message operationId: deletePrivateMessageResponse tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/deletePrivateMessageResponse' - $ref: '#/components/messages/errorResponse' MarkPrivateMessageAsRead: publish: summary: MarkPrivateMessageAsRead (request) description: |- Mark a specified private message as read. Only the recipient of a message can do this. #### HTTP API - operation and endpoint. `POST /private_message/mark_as_read` operationId: markPrivateMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/markPrivateMessageRequest' subscribe: summary: MarkPrivateMessageAsRead (response) description: 'Confirm that a private message has been marked as *read*' operationId: markPrivateMessageResponse tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/markPrivateMessageResponse' - $ref: '#/components/messages/errorResponse' MarkAllAsRead: publish: summary: MarkAllAsRead (request) description: |- Marks all user replies and mentions as read. #### HTTP API - operation and endpoint. `POST /user/mark_all_as_read` operationId: markAllReadMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/markAllReadRequest' subscribe: summary: MarkAllAsRead (response) description: 'Confirm that all replies and mentions have been marked as *read*' operationId: markAllReadResponse tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/markAllReadResponse' - $ref: '#/components/messages/errorResponse' DeleteAccount: publish: summary: DeleteAccount (request) description: |- Deletes user account and permanently deletes that user's posts and comments. #### HTTP API - operation and endpoint. `POST /user/delete_account` operationId: deleteAccountRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/deleteAccountRequest' subscribe: summary: DeleteAccount (response) description: Confirm that the account has been deleted operationId: deleteAccountResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/deleteAccountResponse' - $ref: '#/components/messages/errorResponse' AddAdmin: publish: summary: AddAdmin (request) description: |- Grant admin rights to the specified user. Only admin users can do this - `auth` must be the authentication string for an existing admin user. #### HTTP API - operation and endpoint. `POST /admin/add` operationId: addAdminRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/addAdminRequest' subscribe: summary: AddAdmin (response) description: Confirm that the user has been given admin privileges operationId: addAdminResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/addAdminResponse' - $ref: '#/components/messages/errorResponse' BanUser: publish: summary: BanUser (request) description: |- Ban user from posting, commenting or adding communities. Optionally, remove all comments, posts and communities at the same time. Only admin users can do this - `auth` must be the authentication string for an existing admin user. #### HTTP API - operation and endpoint. `POST /user/ban` operationId: banUserRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/banUserRequest' subscribe: summary: BanUser (response) description: Confirm that the user has been banned operationId: banUserResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/banUserResponse' - $ref: '#/components/messages/errorResponse' UserJoin: publish: summary: UserJoin (request) description: |- Forthcoming... #### HTTP API - operation and endpoint. `POST /user/join` operationId: userJoinRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/userJoinRequest' subscribe: summary: UserJoin (response) description: Forthcoming... operationId: userJoinResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/userJoinResponse' - $ref: '#/components/messages/errorResponse' GetReportCount: publish: summary: GetReportCount (request) description: |- - If `community` is specified, returns the *report count* (number of posts and comments) for that community - If it is not specified, returns the report count for all communities the user moderates. User must either be a moderator of a community or an admin user. #### HTTP API - operation and endpoint. `GET /user/report_count` operationId: getReportCountRequestMessage tags: - name: User, authentication and admin message: $ref: '#/components/messages/getReportCountRequest' subscribe: summary: GetReportCount (response) description: |- Report on the number of posts and comments in one or all of the user's communities operationId: getReportCountResponseMessage tags: - name: User, authentication and admin message: oneOf: - $ref: '#/components/messages/getReportCountResponse' - $ref: '#/components/messages/errorResponse' ListCategories: publish: summary: ListCategories (request) description: |- List all community categories. #### HTTP API - operation and endpoint. `GET /categories` operationId: getCategoriesMessage tags: - name: Site message: $ref: '#/components/messages/getCategoriesRequest' subscribe: summary: ListCategories (response) description: List all options for community categories operationId: getCategoriesResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/getCategoriesResponse' - $ref: '#/components/messages/errorResponse' Search: publish: summary: Search (request) description: |- Find comments, posts, communities users and links. #### HTTP API - operation and endpoint. `GET /search` operationId: searchMessage tags: - name: Site message: $ref: '#/components/messages/searchRequest' subscribe: summary: Search (response) description: Search results operationId: searchResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/searchResponse' - $ref: '#/components/messages/errorResponse' GetModLog: publish: summary: GetModLog (request) description: |- Details of the site's *Modlog*: sticky and lockwed posts and so on. #### HTTP API - operation and endpoint. `GET /modlog` operationId: getmodLogRequestMessage tags: - name: Site message: $ref: '#/components/messages/getModLogRequest' subscribe: summary: GetModLog (response) description: Modlog request results operationId: getModLogResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/getModLogResponse' - $ref: '#/components/messages/errorResponse' CreateSite: publish: summary: CreateSite (request) description: |- Creates a site on a 'virgin' server (that is one that does't have Lemmy installed on it already) #### HTTP API - operation and endpoint. `POST /site` operationId: createSiteRequestMessage tags: - name: Site message: $ref: '#/components/messages/createSiteRequest' # COMMENT. Not sure how to set up virgin server to test CreateSite, hence no 'subscribe' option documented EditSite: publish: summary: EditSite (Request) description: |- Change the name and, optionally other details of the Lemmy site. Only admin users can do this - `auth` must be the authentication string for an existing admin user. #### HTTP API - operation and endpoint. `PUT /site` operationId: editSiteRequestMessage tags: - name: Site message: $ref: '#/components/messages/editSiteRequest' subscribe: summary: EditSite (response) description: Returns confirmation of site edit operationId: editSiteResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/editSiteResponse' - $ref: '#/components/messages/errorResponse' GetSite: publish: summary: GetSite (request) description: |- Get the basic details of the Lemmy site, assoicated with the authentication string `auth` #### HTTP API - operation and endpoint. `GET /site` operationId: getSiteRequestMessage tags: - name: Site message: $ref: '#/components/messages/getSiteRequest' subscribe: summary: GetSite (response) description: Return full details about the site operationId: getSiteResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/getSiteResponse' - $ref: '#/components/messages/errorResponse' TransferSite: publish: summary: TransferSite (request) description: |- Transfer ownership of the site from one admin user (`auth`) to another (`user_id`) #### HTTP API - operation and endpoint. `POST /site/transfer` operationId: transferSiteRequestMessage tags: - name: Site message: $ref: '#/components/messages/transferSiteRequest' subscribe: summary: TransferSite (response) description: Return full details about the site operationId: transferSiteResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/transferSiteResponse' - $ref: '#/components/messages/errorResponse' GetSiteConfig: publish: summary: GetSiteConfig (request) description: |- Request the configuration data file for a Lemmy server #### HTTP API - operation and endpoint. `GET /site/config` operationId: getSiteConfigRequestMessage tags: - name: Site message: $ref: '#/components/messages/getSiteConfigRequest' subscribe: summary: GetSiteConfig (response) description: Return the configuration data for a Lemmy server operationId: getSiteConfigResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/getSiteConfigResponse' - $ref: '#/components/messages/errorResponse' SaveSiteConfig: publish: summary: SaveSiteConfig (request) description: |- Request to send configuration data to a Lemmy server #### HTTP API - operation and endpoint. `PUT /site/config` operationId: saveSiteConfigRequestMessage tags: - name: Site message: $ref: '#/components/messages/saveSiteConfigRequest' subscribe: summary: SaveSiteConfig (response) description: Return the configuration data file for a Lemmy server operationId: saveSiteConfigResponseMessage tags: - name: Site message: oneOf: - $ref: '#/components/messages/saveSiteConfigResponse' - $ref: '#/components/messages/errorResponse' # SaveSiteConfig response not verified. Did not get response from server GetCommunity: publish: summary: GetCommunity (request) description: |- Request to get details of a specified community #### HTTP API - operation and endpoint. `GET /community` operationId: getCommunityRequestMessage tags: - name: Community message: $ref: '#/components/messages/getCommunityRequest' subscribe: summary: GetCommunity (response) description: Return the details for a community operationId: getCommunityResponseMessage tags: - name: Community message: oneOf: - $ref: '#/components/messages/getCommunityResponse' - $ref: '#/components/messages/errorResponse' CreateCommunity: publish: summary: CreateCommunity (request) description: |- Request to create a new community #### HTTP API - operation and endpoint. `POST /community` operationId: createCommunityRequestMessage tags: - name: Community message: $ref: '#/components/messages/createCommunityRequest' subscribe: summary: CreateCommunity (response) description: Return the details for a community operationId: createCommunityResponseMessage tags: - name: Community message: oneOf: - $ref: '#/components/messages/createCommunityResponse' - $ref: '#/components/messages/errorResponse' ListCommunities: publish: summary: ListCommunities (request) description: |- Request to list all communities on the Lemmy server #### HTTP API - operation and endpoint. `GET /community/list` operationId: listCommunityRequestMessage tags: - name: Community message: $ref: '#/components/messages/listCommunityRequest' subscribe: summary: ListCommunities (response) description: Return the details for all communities operationId: listCommunityResponseMessage tags: - name: Community message: oneOf: - $ref: '#/components/messages/listCommunityResponse' - $ref: '#/components/messages/errorResponse' BanFromCommunity: publish: summary: BanFromCommunity (request) description: |- Request to ban a user (`user_id`) from a specified community. #### HTTP API - operation and endpoint. `POST /community/ban_user` operationId: banFromCommunityRequestMessage tags: - name: Community message: $ref: '#/components/messages/banFromCommunityRequest' # COMMENT Issues with Docker, hence subscribe not documented AddModToCommunity: publish: summary: AddModToCommunity (request) description: |- Request to add another moderator (`user_id`) to the specified community (`community_id`). The account making the request (`auth`) must be either an admin or a moderator of that community. #### HTTP API - operation and endpoint. `POST /community/mod` operationId: addModToCommunityRequestMessage tags: - name: Community message: $ref: '#/components/messages/addModToCommunityRequest' # COMMENT Issues with Docker, hence subscribe not documented TransferCommunity: publish: summary: TransferCommunity (Request) description: |- Request to transfer ownership of a community from one person (`auth`) to another (`user_id`). The account making the request (`auth`) must be an admin user. #### HTTP API - operation and endpoint. `POST /community/transfer` operationId: transferCommunityRequestMessage tags: - name: Community message: $ref: '#/components/messages/transferCommunityRequest' # COMMENT Issues with Docker, hence subscribe not documented CommunityJoin: publish: summary: CommunityJoin (request) description: |- Forthcoming... #### HTTP API - operation and endpoint. `POST /community/join` operationId: communityJoinRequestMessage tags: - name: Community message: $ref: '#/components/messages/communityJoinRequest' subscribe: summary: CommunityJoin (response) description: Forthcoming... operationId: CommunityJoinResponseMessage tags: - name: Community message: oneOf: - $ref: '#/components/messages/communityJoinResponse' - $ref: '#/components/messages/errorResponse' ModJoin: publish: summary: ModJoin (request) description: |- Forthcoming... #### HTTP API - operation and endpoint. `POST /community/mod/join` operationId: modJoinRequestMessage tags: - name: Community message: $ref: '#/components/messages/modJoinRequest' subscribe: summary: ModJoin (response) description: Forthcoming... operationId: modJoinResponseMessage tags: - name: Community message: oneOf: - $ref: '#/components/messages/modJoinResponse' - $ref: '#/components/messages/errorResponse' CreatePost: publish: summary: CreatePost (request) description: |- Create a new post. #### HTTP API - operation and endpoint. `POST /post` operationId: createPostRequestMessage tags: - name: Post message: $ref: '#/components/messages/createPostRequest' subscribe: summary: CreatePost (response) description: Forthcoming... operationId: createPostResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/createPostResponse' - $ref: '#/components/messages/errorResponse' GetPost: publish: summary: GetPost (request) description: |- Request details of a post. #### HTTP API - operation and endpoint. `GET /post` operationId: getPostRequestMessage tags: - name: Post message: $ref: '#/components/messages/getPostRequest' subscribe: summary: GetPost (response) description: Details of a post operationId: getPostResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/getPostResponse' - $ref: '#/components/messages/errorResponse' GetPosts: publish: summary: GetPosts (request) description: |- Request details of all posts on the Lemmy server (or, optionally, in a community). If specifying a community, use: - `community_name` for a local community - `community_id` for a federated community. #### HTTP API - operation and endpoint. `GET /post/list` operationId: getPostListRequestMessage tags: - name: Post message: $ref: '#/components/messages/getPostListRequest' subscribe: summary: GetPost (response) description: Details of a post operationId: getPostListResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/getPostListResponse' - $ref: '#/components/messages/errorResponse' CreatePostLike: publish: summary: CreatePostLike (request) description: |- Forthcoming... #### HTTP API - operation and endpoint. `POST /post/like` operationId: createPostLikeRequestMessage tags: - name: Post message: $ref: '#/components/messages/createPostLikeRequest' subscribe: summary: CreatePostLike (response) description: Forthcoming... operationId: createPostLikeResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/createPostLikeResponse' - $ref: '#/components/messages/errorResponse' DeletePost: publish: summary: DeletePost (request) description: |- Request that a post is deleted. *Deleted posts can be restored later.* #### HTTP API - operation and endpoint. `POST /post/delete` operationId: deletePostRequestMessage tags: - name: Post message: $ref: '#/components/messages/deletePostRequest' subscribe: summary: DeletePost (response) description: Response to a post deletion request operationId: deletePostResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/deletePostResponse' - $ref: '#/components/messages/errorResponse' RemovePost: publish: summary: RemovePost (request) description: |- Request that a post is *permanently* deleted. Only admin and moderator roles can do this. #### HTTP API - operation and endpoint. `POST /post/remove` operationId: removePostRequestMessage tags: - name: Post message: $ref: '#/components/messages/removePostRequest' subscribe: summary: RemovePost (response) description: Response to a post removal request operationId: removePostResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/removePostResponse' - $ref: '#/components/messages/errorResponse' LockPost: publish: summary: LockPost (request) description: |- Request to lock a post. Only admin and moderator roles can do this. #### HTTP API - operation and endpoint. `POST /post/lock` operationId: postLockRequestMessage tags: - name: Post message: $ref: '#/components/messages/postLockRequest' subscribe: summary: LockPost (response) description: Response to a post lock request operationId: postLockResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/postLockResponse' - $ref: '#/components/messages/errorResponse' # COMMENT. Request would not work ('variant not found') with post id set to either edit_id (as in the docs) or to post_id (as in StickyPost) StickyPost: publish: summary: StickyPost (request) description: |- Request to make a post 'sticky' (sit at the top of a list of posts). Only admin and moderator roles can do this. #### HTTP API - operation and endpoint. `POST /post/sticky` operationId: stickyPostRequestMessage tags: - name: Post message: $ref: '#/components/messages/stickyPostRequest' subscribe: summary: StickyPost (response) description: |- Response to a request to make a post 'sticky' operationId: stickyPostResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/stickyPostResponse' - $ref: '#/components/messages/errorResponse' SavePost: publish: summary: SavePost (request) description: |- Add a post to the user's list of saved posts. #### HTTP API - operation and endpoint. `POST /post/save` operationId: savePostRequestMessage tags: - name: Post message: $ref: '#/components/messages/savePostRequest' subscribe: summary: SavePost (response) description: Response to a request to add a post to the list of saved posts operationId: savePostResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/savePostResponse' - $ref: '#/components/messages/errorResponse' PostJoin: publish: summary: PostJoin (request) description: |- Forthcoming... #### HTTP API - operation and endpoint. `POST /post/join` operationId: postJoinRequestMessage tags: - name: Post message: $ref: '#/components/messages/postJoinRequest' subscribe: summary: PostJoin (response) description: Forthcoming... operationId: postJoinResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/postJoinResponse' - $ref: '#/components/messages/errorResponse' CreatePostReport: publish: summary: CreatePostReport (request) description: |- Raise a report (query) against a post. #### HTTP API - operation and endpoint. `POST /post/report` operationId: createPostReportRequestMessage tags: - name: Post message: $ref: '#/components/messages/createPostReportRequest' subscribe: summary: CreatePostReport (response) description: Forthcoming... operationId: createPostReportResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/createPostReportResponse' - $ref: '#/components/messages/errorResponse' ResolvePostReport: publish: summary: ResolvePostReport (request) description: |- Resolve (clear) a report against a post. See `ListPostReports` for a list of all reported posts. #### HTTP API - operation and endpoint. `PUT /post/report/resolve` operationId: resolvePostReportRequestMessage tags: - name: Post message: $ref: '#/components/messages/resolvePostReportRequest' subscribe: summary: ResolvePostReport (response) description: Response to request to resolve a report against a post operationId: resolvePostReportResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/resolvePostReportResponse' - $ref: '#/components/messages/errorResponse' ListPostReports: publish: summary: ListPostReports (request) description: |- - If `community` is supplied, returns reports for only that community - Otherwise returns reports for all communities the user (`auth`) moderates. #### HTTP API - operation and endpoint. `GET /post/report/list` operationId: listPostReportsRequestMessage tags: - name: Post message: $ref: '#/components/messages/listPostReportsRequest' subscribe: summary: ListPostReports (response) description: Response to request to list all reports against posts operationId: listPostReportsResponseMessage tags: - name: Post message: oneOf: - $ref: '#/components/messages/listPostReportsResponse' - $ref: '#/components/messages/errorResponse' CreateComment: publish: summary: CreateComment (request) description: |- Add a comment to a post. #### HTTP API - operation and endpoint. `POST /comment` operationId: createCommentRequestMessage tags: - name: Comment message: $ref: '#/components/messages/createCommentRequest' subscribe: summary: CreateComment (response) description: Response to request to create a comment operationId: createCommentResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/createCommentResponse' - $ref: '#/components/messages/errorResponse' EditComment: publish: summary: EditComment (request) description: |- Edit a comment (only the comment's creator can do this). #### HTTP API - operation and endpoint. `PUT /comment` operationId: editCommentRequestMessage tags: - name: Comment message: $ref: '#/components/messages/createCommentRequest' subscribe: summary: EditComment (response) description: Response to request to edit a comment operationId: editCommentResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/editCommentResponse' - $ref: '#/components/messages/errorResponse' DeleteComment: publish: summary: DeleteComment (request) description: |- Delete a comment (only the comment's creator can do this). #### HTTP API - operation and endpoint. `POST /comment/delete` operationId: deleteCommentRequestMessage tags: - name: Comment message: $ref: '#/components/messages/deleteCommentRequest' subscribe: summary: DeleteComment (response) description: Response to request to delete a comment operationId: deleteCommentResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/deleteCommentResponse' - $ref: '#/components/messages/errorResponse' RemoveComment: publish: summary: RemoveComment (request) description: |- Request that a comment is *permanently* deleted. Only admin and moderator roles can do this. #### HTTP API - operation and endpoint. `POST /comment/remove` operationId: removeCommentRequestMessage tags: - name: Comment message: $ref: '#/components/messages/removeCommentRequest' subscribe: summary: RemoveComment (response) description: Response to request to permanently delete a comment operationId: removeCommentResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/removeCommentResponse' - $ref: '#/components/messages/errorResponse' GetComments: publish: summary: GetComments (request) description: |- Request details of all comments on the Lemmy server (or, optionally, in a community). If specifying a community, use: - `community_name` for a local community - `community_id` for a federated community. #### HTTP API - operation and endpoint. `GET /comment/list` operationId: getCommentsRequestMessage tags: - name: Comment message: $ref: '#/components/messages/getCommentsRequest' subscribe: summary: GetComments (response) description: Response to request to list all comments operationId: getCommentsResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/getCommentsResponse' - $ref: '#/components/messages/errorResponse' MarkCommentAsRead: publish: summary: MarkCommentAsRead (request) description: |- Mark a specified comment as read. Only the recipient of a comment can do this. #### HTTP API - operation and endpoint. `POST /comment/mark_as_read` operationId: markCommentRequestMessage tags: - name: Comment message: $ref: '#/components/messages/markCommentRequest' subscribe: summary: MarkCommentAsRead (response) description: Response to request mark a comment as read operationId: markCommentResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/markCommentResponse' - $ref: '#/components/messages/errorResponse' SaveComment: publish: summary: SaveComment (request) description: |- Add comment to the user's list of saved comments. #### HTTP API - operation and endpoint. `PUT /comment/save` operationId: saveCommentRequestMessage tags: - name: Comment message: $ref: '#/components/messages/saveCommentRequest' subscribe: summary: SaveComment (response) description: Response to request to save a comment operationId: saveCommentResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/saveCommentResponse' - $ref: '#/components/messages/errorResponse' CreateCommentLike: publish: summary: CreateCommentLike (request) description: |- Forthcoming... #### HTTP API - operation and endpoint. `POST /comment/like` operationId: createCommentLikeRequestMessage tags: - name: Comment message: $ref: '#/components/messages/createCommentLikeRequest' subscribe: summary: CreateCommentLike (response) description: Forthcoming... operationId: createCommentLikeResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/createCommentLikeResponse' - $ref: '#/components/messages/errorResponse' CreateCommentReport: publish: summary: CreateCommentReport (request) description: |- Raise a report (query) against a comment. #### HTTP API - operation and endpoint. `POST /comment/report` operationId: createCommentReportRequestMessage tags: - name: Comment message: $ref: '#/components/messages/createCommentReportRequest' subscribe: summary: CreateCommentReport(response) description: Response to raising a report against a comment operationId: createCommentReportResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/createCommentReportResponse' - $ref: '#/components/messages/errorResponse' ResolveCommentReport: publish: summary: ResolveCommentReport (request) description: |- Resolve (clear) a report against a comment. See `ListCommentReports` for a list of all reported comments. #### HTTP API - operation and endpoint. `PUT /comment/report/resolve` operationId: resolveCommentReportRequestMessage tags: - name: Comment message: $ref: '#/components/messages/resolveCommentReportRequest' subscribe: summary: ResolveCommentReport (response) description: Response to a request to clear a report against a comment operationId: resolveCommentReportResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/resolveCommentReportResponse' - $ref: '#/components/messages/errorResponse' ListCommentReports: publish: summary: ListCommentReports (request) description: |- - If `community` is supplied, returns reports for only that community - Otherwise returns reports for all communities the user (`auth`) moderates. #### HTTP API - operation and endpoint. `GET /comment/report/list` operationId: listCommentReportsRequestMessage tags: - name: Comment message: $ref: '#/components/messages/listCommentReportsRequest' subscribe: summary: ListCommentReports (response) description: Response to a request to list all comment reports operationId: listCommentReportsResponseMessage tags: - name: Comment message: oneOf: - $ref: '#/components/messages/listCommentReportsResponse' - $ref: '#/components/messages/errorResponse' components: messages: errorResponse: name: Error response payload: type: object properties: error: description: 'The error message' type: string example: 'passwords_dont_match' loginRequest: name: Login request payload: type: object properties: op: type: string pattern: '^Login$' default: 'Login' data: type: object properties: username_or_email: type: string description: '**(Required)** Username or registered email' example: 'lemmy' password: $ref: '#/components/schemas/passwordRequired' loginResponse: name: Login response payload: type: object properties: op: type: string pattern: '^Login$' default: 'Login' data: $ref: '#/components/schemas/authSchema' getUserRepliesRequest: name: User replies request payload: type: object properties: op: type: string pattern: '^GetReplies$' default: 'GetReplies' data: $ref: '#/components/schemas/repliesMentionsRequest' getUserMentionsRequest: name: User mentions request payload: type: object properties: op: type: string pattern: '^GetUserMentions$' default: 'GetUserMentions' data: $ref: '#/components/schemas/repliesMentionsRequest' getCaptchaRequest: name: Captcha request payload: type: object properties: op: type: string pattern: '^GetCaptcha$' default: 'GetCaptcha' data: type: object getCaptchaResponse: name: Return Captcha request details payload: type: object properties: op: type: string pattern: '^GetCaptcha$' default: 'GetCaptcha' data: type: object properties: ok: type: object description: 'Will be *undefined* if Captcha is disabled on the Lemmy server' properties: png: type: string description: 'A [Base64 encoded](https://www.base64encode.org/) representation of the Captcha image (in .PNG format)' wav: type: string description: 'A [Base64 encoded](https://www.base64encode.org/) representation of the Captcha audio (in .WAV format)' uuid: type: string description: The unique id of the Catpcha request example: '77cfa414-999e-4445-9940-cebe86139d14' registerRequest: name: Register a user on the Lemmy server payload: type: object properties: op: type: string pattern: '^Register$' default: 'Register' data: type: object properties: username: type: string description: '**(Required)** The username for the new user' example: 'testuser' password: $ref: '#/components/schemas/passwordRequired' password_verify: $ref: '#/components/schemas/passwordRequired' admin: type: boolean description: 'Set to *true* if this is to be the admin user. Only the user who was *first* registered on the Lemmy server is allowed to be admin.' example: false default: false show_nsfw: $ref: '#/components/schemas/show_nsfw' captcha_uuid: type: string description: 'The unique id of the Catpcha request (as reported by **GetCaptcha**)' example: '77cfa414-999e-4445-9940-cebe86139d14' captcha_answer: type: string description: 'The *answer* to the Captcha test' example: 'EjhBi7' registerResponse: name: Registration request response payload: type: object properties: op: type: string pattern: '^Register$' default: 'Register' data: $ref: '#/components/schemas/authSchema' saveUserSettingsRequest: name: Save user settings - response payload: type: object properties: op: type: string pattern: '^SaveUserSettings$' default: 'SaveUserSettings' data: type: object properties: show_nsfw: $ref: '#/components/schemas/show_nsfw' theme: $ref: '#/components/schemas/theme' default_sort_type: $ref: '#/components/schemas/default_sort_type' default_listing_type: $ref: '#/components/schemas/default_listing_type' lang: $ref: '#/components/schemas/lang' avatar: $ref: '#/components/schemas/avatar' banner: $ref: '#/components/schemas/banner' preferred_username: $ref: '#/components/schemas/preferred_username' email: $ref: '#/components/schemas/email' bio: $ref: '#/components/schemas/bio' matrix_user_id: $ref: '#/components/schemas/matrix_user_id' new_password: $ref: '#/components/schemas/passwordOptional' new_password_verify: $ref: '#/components/schemas/passwordOptional' old_password: $ref: '#/components/schemas/passwordOptional' show_avatars: $ref: '#/components/schemas/show_avatars' send_notifications_to_email: $ref: '#/components/schemas/send_notifications_to_email' auth: $ref: '#/components/schemas/authStringSchema' getUserDetailsRequest: name: Return requested user details payload: type: object properties: op: type: string pattern: '^GetUserDetails$' default: 'GetUserDetails' data: type: object properties: sort: $ref: '#/components/schemas/sort' page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' community_id: $ref: '#/components/schemas/community_id' saved_only: type: boolean description: Forthcoming... default: false example: false auth: $ref: '#/components/schemas/authStringSchema' saveUserSettingsResponse: name: Response to saving user settings (profile) payload: type: object properties: jwt: $ref: '#/components/schemas/authStringSchema' op: type: string pattern: '^SaveUserSettings$' default: 'SaveUserSettings' getUserDetailsResponse: name: Registration request response payload: type: object properties: op: type: string pattern: '^GetUserDetails$' default: 'GetUserDetails' data: type: object user: $ref: '#/components/schemas/user_view' posts: $ref: '#/components/schemas/replies' comments: $ref: '#/components/schemas/comments' moderates: $ref: '#/components/schemas/moderators' follows: description: The list of followers (members) for each community type: array items: properties: follower: $ref: '#/components/schemas/user' community: $ref: '#/components/schemas/community' repliesResponse: name: Returning user replies response payload: type: object properties: data: type: object properties: replies: $ref: '#/components/schemas/replies' op: type: string pattern: '^GetReplies$' default: 'GetReplies' mentionsResponse: name: Returning user mentions response payload: type: object properties: data: type: object properties: mentions: description: A list of all user mentions type: array items: properties: UserMentionView: $ref: '#/components/schemas/mentions' op: type: string pattern: '^GetUserMentions$' default: 'GetUserMentions' markMentionsRequest: name: Request to make a user mention as read payload: type: object properties: op: type: string pattern: '^MarkUserMentionAsRead$' default: 'MarkUserMentionAsRead' data: type: object properties: user_mention_id: description: 'The id of the recipient' type: integer format: int32 read: description: 'Forthcoming...' type: boolean example: false auth: $ref: '#/components/schemas/authStringSchema' markMentionResponse: name: Returning response for marked mention payload: type: object properties: data: type: object properties: mention: $ref: '#/components/schemas/mentions' op: type: string pattern: '^MarkUserMentionAsRead$' default: 'MarkUserMentionAsRead' privateMessageRequest: name: Request to list all a user's private messages payload: type: object properties: op: type: string pattern: '^GetPrivateMessages$' default: 'GetPrivateMessages' data: type: object properties: unread_only: $ref: '#/components/schemas/unread_only' page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' auth: $ref: '#/components/schemas/authStringSchema' privateMessagesResponse: name: List of all a user's private messages payload: type: object properties: data: type: object properties: private_messages: type: array items: $ref: '#/components/schemas/private_message_view' op: type: string pattern: '^GetPrivateMessages$' default: 'GetPrivateMessages' createPrivateMessageRequest: name: |- Request to create a private message payload: type: object properties: op: type: string pattern: '^CreatePrivateMessage$' default: 'CreatePrivateMessage' data: type: object properties: content: $ref: '#/components/schemas/content' recipient_id: $ref: '#/components/schemas/recipient' auth: $ref: '#/components/schemas/authStringSchema' createPrivateMessageResponse: name: |- Confirmation of the sent private message payload: type: object properties: op: type: string pattern: '^CreatePrivateMessage$' default: 'CreatePrivateMessage' data: type: object properties: private_message_view: $ref: '#/components/schemas/private_message_view' editPrivateMessageRequest: name: Request to edit a private message payload: type: object properties: op: type: string pattern: '^EditPrivateMessage$' default: 'EditPrivateMessage' data: type: object properties: private_message_id: $ref: '#/components/schemas/private_message_id' content: $ref: '#/components/schemas/content' auth: $ref: '#/components/schemas/authStringSchema' editPrivateMessageResponse: name: Confirmation of the edited private message payload: type: object properties: data: type: object properties: private_message_view: $ref: '#/components/schemas/private_message_view' op: type: string pattern: '^EditPrivateMessage$' default: 'EditPrivateMessage' deletePrivateMessageRequest: name: Request to delete a private message payload: type: object properties: op: type: string pattern: '^DeletePrivateMessage$' default: 'DeletePrivateMessage' data: type: object properties: private_message_id: $ref: '#/components/schemas/private_message_id' deleted: $ref: '#/components/schemas/deleted' auth: $ref: '#/components/schemas/authStringSchema' deletePrivateMessageResponse: name: Confirmation of the deleted private message payload: type: object properties: data: type: object properties: private_message_view: $ref: '#/components/schemas/private_message_view' op: type: string pattern: '^DeletePrivateMessage$' default: 'DeletePrivateMessage' markPrivateMessageRequest: name: Request to mark a private message as read payload: type: object properties: op: type: string pattern: '^MarkPrivateMessageAsRead$' default: 'MarkPrivateMessageAsRead' data: type: object properties: private_message_id: $ref: '#/components/schemas/private_message_id' read: $ref: '#/components/schemas/read' auth: $ref: '#/components/schemas/authStringSchema' markPrivateMessageResponse: name: 'Confirmation that the private message has been marked as *read*' payload: type: object properties: data: type: object properties: private_message_view: $ref: '#/components/schemas/private_message_view' op: type: string pattern: '^MarkPrivateMessageAsRead$' default: 'MarkPrivateMessageAsRead' markAllReadRequest: name: Request to mark all user replies and mentions as read payload: type: object properties: op: type: string pattern: '^MarkAllAsRead$' default: 'MarkAllAsRead' data: type: object properties: auth: $ref: '#/components/schemas/authStringSchema' markAllReadResponse: name: 'Confirmation that all replies and mentions have been marked as *read*' payload: type: object properties: data: type: object properties: replies: $ref: '#/components/schemas/replies' op: type: string pattern: '^MarkAllAsRead$' default: 'MarkAllAsRead' deleteAccountRequest: name: Request to delete a user account payload: type: object properties: op: type: string pattern: '^DeleteAccount$' default: 'DeleteAccount' data: type: object properties: password: $ref: '#/components/schemas/passwordRequired' auth: $ref: '#/components/schemas/authStringSchema' deleteAccountResponse: name: Confirmation that the account has been deleted payload: type: object properties: data: type: object properties: jwt: $ref: '#/components/schemas/authStringSchema' op: type: string pattern: '^DeleteAccount$' default: 'DeleteAccount' addAdminRequest: name: Request to grant admin privileges to a user payload: type: object properties: op: type: string pattern: '^AddAdmin$' default: 'AddAdmin' data: type: object properties: user_id: $ref: '#/components/schemas/user_id' added: $ref: '#/components/schemas/added' auth: $ref: '#/components/schemas/authStringSchema' addAdminResponse: name: Confirmation that the user has been given admin privileges payload: type: object properties: op: type: string pattern: '^AddAdmin$' default: 'AddAdmin' data: type: object properties: admins: $ref: '#/components/schemas/user_view' banUserRequest: name: Request to ban a user payload: type: object properties: op: type: string pattern: '^BanUser$' default: 'BanUser' data: type: object properties: user_id: $ref: '#/components/schemas/user_id' ban: $ref: '#/components/schemas/ban' remove_data: $ref: '#/components/schemas/remove_data' reason: $ref: '#/components/schemas/reason' expires: $ref: '#/components/schemas/expires' auth: $ref: '#/components/schemas/authStringSchema' banUserResponse: name: Confirmation that the user has been banned payload: type: object properties: op: type: string pattern: '^BanUser$' default: 'BanUser' data: $ref: '#/components/schemas/ban_view' userJoinRequest: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^UserJoin$' default: 'UserJoin' data: type: object properties: auth: $ref: '#/components/schemas/authStringSchema' userJoinResponse: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^UserJoin$' default: 'UserJoin' data: type: object properties: joined: $ref: '#/components/schemas/joined' getReportCountRequest: name: Request to return report count numbers payload: type: object properties: op: type: string pattern: '^GetReportCount$' default: 'GetReportCount' data: type: object properties: community: $ref: '#/components/schemas/community_id' auth: $ref: '#/components/schemas/authStringSchema' getReportCountResponse: name: Report on the number of posts and comments payload: type: object properties: data: type: object properties: comment_reports: description: The number of comments in the community/communities type: integer format: int64 example: 123 community: $ref: '#/components/schemas/community_id' post_reports: description: The number of posts in the community/communities type: integer format: int64 example: 23 op: type: string pattern: '^GetReportCount$' default: 'GetReportCount' getCategoriesRequest: name: Request to list categories on the Lemmy server payload: type: object properties: op: type: string pattern: '^ListCategories$' default: 'ListCategories' data: type: object getCategoriesResponse: name: Returns list of categories on the server payload: type: object properties: data: type: object properties: categories: type: array items: properties: id: $ref: '#/components/schemas/category_id' name: $ref: '#/components/schemas/category_name' op: type: string pattern: '^ListCategories$' default: 'ListCategories' searchRequest: name: Request to find information on the Lemmy server payload: type: object properties: op: type: string pattern: '^Search$' default: 'Search' data: type: object properties: q: description: The text to search for on the Lemmy server type: string example: 'lemmy' type_: $ref: '#/components/schemas/type_' community_id: $ref: '#/components/schemas/community_id' community_name: $ref: '#/components/schemas/community_name' sort: $ref: '#/components/schemas/sort' page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' auth: $ref: '#/components/schemas/authStringSchema' searchResponse: name: The search results payload: type: object properties: op: type: string pattern: '^Search$' default: 'Search' data: type: object properties: communities: type: array items: properties: community: $ref: '#/components/schemas/community' posts: $ref: '#/components/schemas/replies' type_: $ref: '#/components/schemas/type_' users: type: array items: properties: user: $ref: '#/components/schemas/user_view' comments: $ref: '#/components/schemas/comments' getModLogRequest: name: Request the site's Modlog payload: type: object properties: op: type: string pattern: '^GetModLog$' default: 'GetModLog' data: type: object properties: mod_user_id: $ref: '#/components/schemas/user_id' community_id: $ref: '#/components/schemas/community_id' page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' getModLogResponse: name: Modlog request results payload: type: object properties: op: type: string pattern: '^GetModLog$' default: 'GetModLog' data: type: object properties: removed_posts: type: array locked_posts: type: array items: properties: mod_lock_post: type: object properties: id: description: Forthcoming... type: number example: 1 mod_user_id: $ref: '#/components/schemas/user_id' post_id: $ref: '#/components/schemas/post_id' locked: $ref: '#/components/schemas/locked' when_: description: 'The date this post was locked (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))' type: string example: '2021-01-26T14:15:21.922339' moderator: $ref: '#/components/schemas/creator' post: $ref: '#/components/schemas/post' community: $ref: '#/components/schemas/community' stickied_posts: type: array items: properties: mod_sticky_post: type: object properties: id: description: Forthcoming... type: number example: 1 mod_user_id: $ref: '#/components/schemas/user_id' post_id: $ref: '#/components/schemas/post_id' stickied: $ref: '#/components/schemas/stickied' when_: description: 'The date this post was made sticky (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))' type: string example: '2021-01-26T14:16:03.899093' moderator: $ref: '#/components/schemas/creator' post: $ref: '#/components/schemas/post' community: $ref: '#/components/schemas/community' removed_comments: description: Forthcoming... type: array removed_communities: description: Forthcoming... type: array banned_from_community: description: Forthcoming... type: array banned: description: Forthcoming... type: array added_to_community: description: Forthcoming... type: array added: description: Forthcoming... type: array createSiteRequest: name: Create Lemmy site on a server payload: type: object properties: op: type: string pattern: '^CreateSite$' default: 'CreateSite' data: $ref: '#/components/schemas/site_properties' editSiteRequest: name: Request to edit Lemmy site details payload: type: object properties: op: type: string pattern: '^EditSite$' default: 'EditSite' data: $ref: '#/components/schemas/site_properties' editSiteResponse: name: The response after a site edit payload: type: object properties: op: type: string pattern: '^EditSite$' default: 'EditSite' data: type: object properties: site_view: $ref: '#/components/schemas/site_view' getSiteRequest: name: Request to return Lemmy site details payload: type: object properties: op: type: string pattern: '^GetSite$' default: 'GetSite' data: type: object properties: auth: $ref: '#/components/schemas/authStringSchema' getSiteResponse: name: Returns Lemmy site details payload: type: object properties: data: type: object properties: site_view: counts: $ref: '#/components/schemas/site_counts' site: $ref: '#/components/schemas/site' creator: $ref: '#/components/schemas/creator' federated_instances: $ref: '#/components/schemas/federated_instances' my_user: $ref: '#/components/schemas/my_user' version: $ref: '#/components/schemas/version' banned: $ref: '#/components/schemas/banned_list' online: $ref: '#/components/schemas/online' admins: type: array items: properties: counts: type: object properties: comment_score: description: Forthcoming... type: number example: 8 user_id: description: Forthcoming... type: number example: 2 post_score: description: Forthcoming... type: number example: 13 id: description: Forthcoming... type: number example: 1 post_count: description: Forthcoming... type: number example: 10 comment_count: description: Forthcoming... type: number example: 9 user: $ref: '#/components/schemas/creator' op: type: string pattern: '^GetSite$' default: 'GetSite' transferSiteRequest: name: Request to transfer ownership of the site payload: type: object properties: op: type: string pattern: '^TransferSite$' default: 'TransferSite' data: type: object properties: user_id: $ref: '#/components/schemas/user_id' auth: $ref: '#/components/schemas/authStringSchema' transferSiteResponse: name: Request to transfer ownership of the site payload: type: object properties: op: type: string pattern: '^TransferSite$' default: 'TransferSite' data: type: object properties: site_view: $ref: '#/components/schemas/site_view' admins: description: The list of administrators for this site type: array items: properties: user: $ref: '#/components/schemas/user' counts: $ref: '#/components/schemas/counts' banned: $ref: '#/components/schemas/banned_list' online: $ref: '#/components/schemas/online' version: $ref: '#/components/schemas/version' my_user: $ref: '#/components/schemas/my_user' federated_instances: $ref: '#/components/schemas/federated_instances' getSiteConfigRequest: name: Request the configuration data for a Lemmy server payload: type: object properties: op: type: string pattern: '^GetSiteConfig$' default: 'GetSiteConfig' data: type: object properties: auth: $ref: '#/components/schemas/authStringSchema' getSiteConfigResponse: name: Returns the configuration data for a Lemmy server payload: type: object properties: op: type: string pattern: '^GetSiteConfig$' default: 'GetSiteConfig' data: type: object properties: config_hjson: $ref: '#/components/schemas/config_hjson' saveSiteConfigRequest: name: Request to send a configuration data file for a Lemmy server payload: type: object properties: op: type: string pattern: '^SaveSiteConfig$' default: 'SaveSiteConfig' data: type: object properties: config_hjson: $ref: '#/components/schemas/config_hjson' auth: $ref: '#/components/schemas/authStringSchema' saveSiteConfigResponse: name: Returns the configuration data for a Lemmy server payload: type: object properties: op: type: string pattern: '^SaveSiteConfig$' default: '^SaveSiteConfig$' data: type: object properties: config_hjson: $ref: '#/components/schemas/config_hjson' getCommunityRequest: name: Request to get details of a commmunity payload: type: object properties: op: type: string pattern: '^GetCommunity$' default: 'GetCommunity' data: type: object properties: id: $ref: '#/components/schemas/community_id' name: $ref: '#/components/schemas/community_name' auth: $ref: '#/components/schemas/authStringSchema' getCommunityResponse: name: Returns the details for a community payload: type: object properties: op: type: string pattern: '^GetCommunity$' default: 'GetCommunity' data: type: object properties: community_view: $ref: '#/components/schemas/community_view' online: type: number moderators: $ref: '#/components/schemas/moderators' createCommunityRequest: name: Request to get details of a commmunity payload: type: object properties: op: type: string pattern: '^CreateCommunity$' default: 'CreateCommunity' data: type: object properties: name: $ref: '#/components/schemas/community_name' title: description: Forthcoming... type: string description: description: Forthcoming... type: string icon: $ref: '#/components/schemas/icon' banner: $ref: '#/components/schemas/banner' category_id: $ref: '#/components/schemas/category_id' nsfw: $ref: '#/components/schemas/nsfw' auth: $ref: '#/components/schemas/authStringSchema' createCommunityResponse: name: Response to the request to create a community payload: type: object properties: op: type: string pattern: '^CreateCommunity$' default: 'CreateCommunity' data: type: object properties: community_view: $ref: '#/components/schemas/community_view' listCommunityRequest: name: Request to get list of commmunities on the Lemmy server payload: type: object properties: op: type: string pattern: '^ListCommunities$' default: 'ListCommunities' data: type: object properties: type_: $ref: '#/components/schemas/type_' sort: $ref: '#/components/schemas/sort' page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' auth: $ref: '#/components/schemas/authStringSchema' listCommunityResponse: name: Response to the request to create a community payload: type: object properties: op: type: string pattern: '^ListCommunities$' default: 'ListCommunities' data: type: object properties: communities: type: array $ref: '#/components/schemas/community_view' banFromCommunityRequest: name: Request to ban a user from a specified community. payload: type: object properties: op: type: string pattern: '^BanFromCommunity$' default: 'BanFromCommunity' data: type: object properties: community_id: $ref: '#/components/schemas/community_id' user_id: $ref: '#/components/schemas/user_id' ban: $ref: '#/components/schemas/ban' remove_data: $ref: '#/components/schemas/remove_data' reason: $ref: '#/components/schemas/reason' expires: $ref: '#/components/schemas/expires' auth: $ref: '#/components/schemas/authStringSchema' banFromCommunityResponse: name: Response to the request to ban a user from a community payload: type: object properties: op: type: string pattern: '^BanFromCommunity$' default: 'BanFromCommunity' data: $ref: '#/components/schemas/ban_view' addModToCommunityRequest: name: Request to add a moderator to a community payload: type: object properties: op: type: string pattern: '^AddModToCommunity$' default: 'AddModToCommunity' data: type: object properties: community_id: $ref: '#/components/schemas/community_id' user_id: $ref: '#/components/schemas/user_id' added: $ref: '#/components/schemas/added' auth: $ref: '#/components/schemas/authStringSchema' transferCommunityRequest: name: Request to transfer ownership of a community from one person to another payload: type: object properties: op: type: string pattern: '^TransferCommunity$' default: 'TransferCommunity' data: type: object properties: community_id: $ref: '#/components/schemas/community_id' user_id: $ref: '#/components/schemas/user_id' auth: $ref: '#/components/schemas/authStringSchema' communityJoinRequest: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^CommunityJoin$' default: 'CommunityJoin' data: type: object properties: community_id: $ref: '#/components/schemas/community_id' communityJoinResponse: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^CommunityJoin$' default: 'CommunityJoin' data: properties: joined: $ref: '#/components/schemas/joined' modJoinRequest: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^ModJoin$' default: 'ModJoin' data: type: object properties: community_id: $ref: '#/components/schemas/community_id' modJoinResponse: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^ModJoin$' default: 'ModJoin' data: properties: joined: $ref: '#/components/schemas/joined' createPostRequest: name: Request to create a new post payload: type: object properties: op: type: string pattern: '^CreatePost$' default: 'CreatePost' data: type: object properties: name: $ref: '#/components/schemas/post_name' url: $ref: '#/components/schemas/url' body: $ref: '#/components/schemas/body' nsfw: $ref: '#/components/schemas/nsfw' community_id: $ref: '#/components/schemas/community_id' auth: $ref: '#/components/schemas/authStringSchema' createPostResponse: name: Response to request to create a new post payload: type: object properties: op: type: string pattern: '^CreatePost$' default: 'CreatePost' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' getPostRequest: name: Request details of a post payload: type: object properties: op: type: string pattern: '^GetPost$' default: 'GetPost' data: type: object properties: id: $ref: '#/components/schemas/post_id' auth: $ref: '#/components/schemas/authStringSchema' getPostResponse: name: Details of a post payload: type: object properties: op: type: string pattern: '^GetPost$' default: 'GetPost' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' comments: $ref: '#/components/schemas/comments' community_view: $ref: '#/components/schemas/community_view' moderators: $ref: '#/components/schemas/moderators' getPostListRequest: name: Request details of all posts payload: type: object properties: op: type: string pattern: '^GetPosts$' default: 'GetPosts' data: $ref: '#/components/schemas/list_request' getPostListResponse: name: Details of all posts payload: type: object properties: op: type: string pattern: '^GetPosts$' default: 'GetPosts' data: type: object properties: posts: type: array items: properties: post_view: $ref: '#/components/schemas/post_view' createPostLikeRequest: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^CreatePostLike$' default: 'CreatePostLike' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' score: $ref: '#/components/schemas/score_plus_minus' auth: $ref: '#/components/schemas/authStringSchema' createPostLikeResponse: name: Response to request to create a new post payload: type: object properties: op: type: string pattern: '^CreatePostLike$' default: 'CreatePostLike' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' deletePostRequest: name: Request that a post be deleted payload: type: object properties: op: type: string pattern: '^DeletePost$' default: 'DeletePost' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' deleted: $ref: '#/components/schemas/deleted' auth: $ref: '#/components/schemas/authStringSchema' deletePostResponse: name: Response to post deletion request payload: type: object properties: op: type: string pattern: '^DeletePost$' default: 'DeletePost' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' removePostRequest: name: Request that a post be removed payload: type: object properties: op: type: string pattern: '^RemovePost$' default: 'RemovePost' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' removed: $ref: '#/components/schemas/removed' reason: $ref: '#/components/schemas/reason' auth: $ref: '#/components/schemas/authStringSchema' removePostResponse: name: Response to post removal request payload: type: object properties: op: type: string pattern: '^RemovePost$' default: 'RemovePost' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' postLockRequest: name: Request that a post be locked payload: type: object properties: op: type: string pattern: '^PostLock$' default: 'PostLock' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' locked: $ref: '#/components/schemas/locked' auth: $ref: '#/components/schemas/authStringSchema' postLockResponse: name: Response to a 'post lock' request payload: type: object properties: op: type: string pattern: '^PostLock$' default: 'PostLock' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' stickyPostRequest: name: Request that a post be made 'sticky' payload: type: object properties: op: type: string pattern: '^StickyPost$' default: 'StickyPost' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' stickied: $ref: '#/components/schemas/locked' auth: $ref: '#/components/schemas/authStringSchema' stickyPostResponse: name: Response to a request to make a post 'sticky' payload: type: object properties: op: type: string pattern: '^StickyPost$' default: 'StickyPost' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' savePostRequest: name: Request to add a post to the user's list of saved posts payload: type: object properties: op: type: string pattern: '^SavePost$' default: 'SavePost' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' save: $ref: '#/components/schemas/saved' auth: $ref: '#/components/schemas/authStringSchema' savePostResponse: name: Response to a request to add a post to the list of saved posts payload: type: object properties: op: type: string pattern: '^SavePost$' default: 'SavePost' data: type: object properties: post_view: $ref: '#/components/schemas/post_view' postJoinRequest: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^PostJoin$' default: 'PostJoin' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' postJoinResponse: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^PostJoin$' default: 'PostJoin' data: type: object properties: joined: $ref: '#/components/schemas/joined' createPostReportRequest: name: Request to raise a report against a post payload: type: object properties: op: type: string pattern: '^CreatePostReport$' default: 'CreatePostReport' data: type: object properties: post_id: $ref: '#/components/schemas/post_id' reason: $ref: '#/components/schemas/reason' auth: $ref: '#/components/schemas/authStringSchema' createPostReportResponse: name: Response to raising a report against a post. payload: type: object properties: op: type: string pattern: '^CreatePostReport$' default: 'CreatePostReport' data: type: object properties: success: $ref: '#/components/schemas/success' resolvePostReportRequest: name: Request to resolve a report against a post payload: type: object properties: op: type: string pattern: '^ResolvePostReport$' default: 'ResolvePostReport' data: $ref: '#/components/schemas/resolve_request' resolvePostReportResponse: name: Response to request to resolve a report against a post payload: type: object properties: op: type: string pattern: '^ResolvePostReport$' default: 'ResolvePostReport' data: $ref: '#/components/schemas/resolve_response' listPostReportsRequest: name: Request to list all reports against posts payload: type: object properties: op: type: string pattern: '^ListPostReports$' default: 'ListPostReports' data: $ref: '#/components/schemas/report_request' listPostReportsResponse: name: Response to a request to list all reports against posts payload: type: object properties: op: type: string pattern: '^ListPostReports$' default: 'ListPostReports' data: type: object properties: posts: type: array items: properties: resolver: $ref: '#/components/schemas/resolver_id' community: $ref: '#/components/schemas/community' creator: $ref: '#/components/schemas/creator' post_creator: $ref: '#/components/schemas/creator' post: $ref: '#/components/schemas/post' post_report: type: object properties: resolver_id: $ref: '#/components/schemas/resolver_id' original_post_body: $ref: '#/components/schemas/body' resolved: $ref: '#/components/schemas/resolved' published: $ref: '#/components/schemas/published' creator_id: $ref: '#/components/schemas/creator_id' reason: $ref: '#/components/schemas/reason' post_id: $ref: '#/components/schemas/post_id' id: $ref: '#/components/schemas/report_id' original_post_name: $ref: '#/components/schemas/post_name' updated: description: Forthcoming... type: string nullable: true original_post_url: description: Forthcoming... type: string nullable: true createCommentRequest: name: Request to create a comment on a post payload: type: object properties: op: type: string pattern: '^CreateComment$' default: 'CreateComment' data: $ref: '#/components/schemas/comment_request' createCommentResponse: name: Response to a request to create a comment payload: type: object properties: op: type: string pattern: '^CreateComment$' default: 'CreateComment' data: type: object properties: comment_view: $ref: '#/components/schemas/comment_view' editCommentRequest: name: Request to edit a comment payload: type: object properties: op: type: string pattern: '^EditComment$' default: 'EditComment' data: $ref: '#/components/schemas/comment_request' editCommentResponse: name: Response to a request to edit a comment payload: type: object properties: op: type: string pattern: '^EditComment$' default: 'EditComment' data: type: object properties: comment_view: $ref: '#/components/schemas/comment_view' deleteCommentRequest: name: Request to delete a comment payload: type: object properties: op: type: string pattern: '^DeleteComment$' default: 'DeleteComment' data: type: object properties: comment_id: $ref: '#/components/schemas/comment_id' deleted: $ref: '#/components/schemas/deleted' auth: $ref: '#/components/schemas/authStringSchema' deleteCommentResponse: name: Response to a request to delete a comment payload: type: object properties: op: type: string pattern: '^DeleteComment$' default: 'DeleteComment' data: type: object properties: comment_view: $ref: '#/components/schemas/comment_view' removeCommentRequest: name: Request to permanently delete a comment payload: type: object properties: op: type: string pattern: '^RemoveComment$' default: 'RemoveComment' data: type: object properties: comment_id: $ref: '#/components/schemas/comment_id' removed: $ref: '#/components/schemas/removed' reason: $ref: '#/components/schemas/reason' auth: $ref: '#/components/schemas/authStringSchema' removeCommentResponse: name: Response to a request to permanently delete a comment payload: type: object properties: op: type: string pattern: '^RemoveComment$' default: 'RemoveComment' data: type: object properties: comment_view: $ref: '#/components/schemas/comment_view' getCommentsRequest: name: Request to retrieve all comments payload: type: object properties: op: type: string pattern: '^GetComments$' default: 'GetComments' data: $ref: '#/components/schemas/list_request' getCommentsResponse: name: Response to a request to retrieve all comments payload: type: object properties: op: type: string pattern: '^GetComments$' default: 'GetComments' data: type: object properties: comments: description: 'The list of comments' type: array items: properties: comment_view: $ref: '#/components/schemas/comment_view' markCommentRequest: name: Request to mark a commment as read payload: type: object properties: op: type: string pattern: '^MarkCommentAsRead$' default: 'MarkCommentAsRead' data: type: object properties: comment_id: $ref: '#/components/schemas/comment_id' read: $ref: '#/components/schemas/read' auth: $ref: '#/components/schemas/authStringSchema' markCommentResponse: name: Response to a request to mark a comment as read payload: type: object properties: op: type: string pattern: '^MarkCommentAsRead$' default: 'MarkCommentAsRead' data: type: object properties: comment_view: $ref: '#/components/schemas/comment_view' saveCommentRequest: name: Request to save a commment payload: type: object properties: op: type: string pattern: '^SaveComment$' default: 'SaveComment' data: type: object properties: comment_id: $ref: '#/components/schemas/comment_id' save: $ref: '#/components/schemas/saved' auth: $ref: '#/components/schemas/authStringSchema' saveCommentResponse: name: Response to a request to save a comment payload: type: object properties: op: type: string pattern: '^SaveComment$' default: 'SaveComment' data: type: object properties: comment_view: $ref: '#/components/schemas/comment_view' createCommentLikeRequest: name: Forthcoming... payload: type: object properties: op: type: string pattern: '^CreateCommentLike$' default: 'CreateCommentLike' data: type: object properties: comment_id: $ref: '#/components/schemas/comment_id' score: $ref: '#/components/schemas/score_plus_minus' auth: $ref: '#/components/schemas/authStringSchema' createCommentLikeResponse: name: Response to a request to save a comment payload: type: object properties: op: type: string pattern: '^CreateCommentLike$' default: 'CreateCommentLike' data: type: object properties: comment_view: $ref: '#/components/schemas/comment_view' createCommentReportRequest: name: Request to report a comment payload: type: object properties: op: type: string pattern: '^CreateCommentReport$' default: 'CreateCommentReport' data: type: object properties: comment_id: $ref: '#/components/schemas/comment_id' reason: $ref: '#/components/schemas/reason' auth: $ref: '#/components/schemas/authStringSchema' createCommentReportResponse: name: Response to raising a report against a comment payload: type: object properties: op: type: string pattern: '^CreateCommentReport$' default: 'CreateCommentReport' data: type: object properties: success: $ref: '#/components/schemas/success' resolveCommentReportRequest: name: Request to clear a report against a comment payload: type: object properties: op: type: string pattern: '^ResolveCommentReport$' default: 'ResolveCommentReport' data: $ref: '#/components/schemas/resolve_request' resolveCommentReportResponse: name: Response to a request to clear a report against a comment payload: type: object properties: op: type: string pattern: '^ResolveCommentReport$' default: 'ResolveCommentReport' data: $ref: '#/components/schemas/resolve_response' listCommentReportsRequest: name: Request to list all reports against comments payload: type: object properties: op: type: string pattern: '^ListCommemtReports$' default: 'ListCommentReports' data: $ref: '#/components/schemas/report_request' listCommentReportsResponse: name: Response to a request to list all comment reports payload: type: object properties: op: type: string pattern: '^ListCommemtReports$' default: 'ListCommentReports' data: type: object properties: comments: type: array items: properties: comment_report: type: object properties: resolver_id: $ref: '#/components/schemas/resolver_id' published: $ref: '#/components/schemas/published' comment_id: $ref: '#/components/schemas/comment_id' creator_id: $ref: '#/components/schemas/creator_id' reason: $ref: '#/components/schemas/reason' original_comment_text: $ref: '#/components/schemas/body' id: description: Forthcoming... type: number example: 2 resolved: $ref: '#/components/schemas/resolved' updated: description: Forthcoming... type: string nullable: true resolver: $ref: '#/components/schemas/resolver_id' community: $ref: '#/components/schemas/community' creator: $ref: '#/components/schemas/creator' post: $ref: '#/components/schemas/post' comment_creator: $ref: '#/components/schemas/creator' comment: $ref: '#/components/schemas/comment' schemas: 'actor_id': type: string description: |- URL for the user/community profile/home page, using the format: - **User profile** - Site URL/u/username - **Community home page** - Site URL/c/commmunity name example: 'https:\/\/enterprise.lemmy.ml\/u\/griddle' 'added': description: Forthcoming... type: boolean example: true 'admin': type: boolean description: 'Set to *true* if this person is the Lemmy server administrator' example: false 'ap_id': type: string description: The URL of this post, comment or message example: 'https:\/\/enterprise.lemmy.ml\/post\/223' 'authSchema': type: object description: 'The authentication string returned by **Login**, **Register** and **Save user settings**.' properties: jwt: $ref: '#/components/schemas/authStringSchema' 'authStringSchema': type: string description: Authentication string for a user example: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NzcsImlzcyI6ImVudGVycHJpc2UubGVtbXkubWwifQ.8UbfUE1v4mfH88s2diX2h6_5bzLHSa_5wIlpOZmHbMQ' 'avatar': type: string nullable: true description: Forthcoming... 'ban': description: |- - If set to *true*, ban the user - If set to *false*, do not ban them (use in combination with `remove_data` to restore comments and posts that were previously removed as part of a banning process) type: boolean example: true 'ban_view': type: object properties: user: $ref: '#/components/schemas/user_view' banned: description: Forthcoming... type: boolean example: true 'banned': type: boolean description: 'Set to *true* if this account (username) has been banned from posting on the Lemmy server' example: false 'banned_list': description: Forthcoming... type: array 'banner': type: string nullable: true description: Forthcoming... 'bio': type: string nullable: true description: 'A self-written description of the user' example: 'I am a watercolour artist. I am happy to share the paintings I am working on, give and receive critiques, and post resources such as tutorials.' 'body': description: 'The body text of the post or comment' type: string nullable: true 'category_id': type: number minimum: 1 description: |- Matches the dropdown list in a community's *Category* setting. 1 = the topmost element, 2 = the second element, and so on. example: 15 'category_name': description: The category name type: string example: 'Politics' 'comment': type: object properties: creator_id: $ref: '#/components/schemas/creator_id' content: $ref: '#/components/schemas/content' id: $ref: '#/components/schemas/comment_id' read: description: Is *true* if the author of the original post has read the comment type: boolean example: true parent_id: description: Forthcoming... type: number nullable: true removed: $ref: '#/components/schemas/removed' post_id: $ref: '#/components/schemas/post_id' local: $ref: '#/components/schemas/local' updated: description: Forthcoming... type: string nullable: true ap_id: $ref: '#/components/schemas/ap_id' deleted: $ref: '#/components/schemas/deleted' published: $ref: '#/components/schemas/published' 'comment_count': description: Total number of comments on the site or community type: number example: 231 'comment_id': description: The number (id) of a comment type: number example: 374 'comment_request': type: object properties: content: $ref: '#/components/schemas/content' post_id: $ref: '#/components/schemas/post_id' form_id: $ref: '#/components/schemas/form_id' auth: $ref: '#/components/schemas/authStringSchema' 'comment_view': type: object properties: community: $ref: '#/components/schemas/community' recipient: $ref: '#/components/schemas/recipient' counts: $ref: '#/components/schemas/counts' post: ref: '#/components/schemas/post' creator_banned_from_community: $ref: '#/components/schemas/creator_banned_from_community' saved: $ref: '#/components/schemas/saved' subscribed: $ref: '#/components/schemas/subscribed' my_vote: $ref: '#/components/schemas/my_vote' comment: $ref: '#/components/schemas/comment' creator: $ref: '#/components/schemas/creator' recipient_ids: type: array items: recipient: $ref: '#/components/schemas/recipient' form_id: $ref: '#/components/schemas/authStringSchema' 'comments': type: array items: properties: comment: $ref: '#/components/schemas/comment' recipient: $ref: '#/components/schemas/recipient' post: $ref: '#/components/schemas/post' creator: $ref: '#/components/schemas/user' creator_banned_from_community: $ref: '#/components/schemas/creator_banned_from_community' subscribed: $ref: '#/components/schemas/subscribed' my_vote: $ref: '#/components/schemas/my_vote' counts: $ref: '#/components/schemas/counts' saved: $ref: '#/components/schemas/saved' community: $ref: '#/components/schemas/community' 'community': type: object properties: updated: type: string description: Forthcoming... example: '2020-11-14T13:35:10.270578' name: $ref: '#/components/schemas/community_name' category_id: $ref: '#/components/schemas/category_id' icon: $ref: '#/components/schemas/icon' nsfw: $ref: '#/components/schemas/nsfw' deleted: $ref: '#/components/schemas/deleted' removed: $ref: '#/components/schemas/removed' published: $ref: '#/components/schemas/published' creator_id: $ref: '#/components/schemas/creator_id' id: $ref: '#/components/schemas/community_id' description: type: string description: |- The title for the community's **Sidebar** area example: 'All about the Rolex/Björn Borg collaboration' actor_id: $ref: '#/components/schemas/actor_id' local: $ref: '#/components/schemas/local' title: type: string description: |- The title (**Display name**) of this community. If set, this is the name shown instead of, or as well as, *name* in some contexts banner: $ref: '#/components/schemas/banner' 'community_id': type: integer format: int32 # Or int64? It's stated as both in different parts of the API docs description: 'The id number for a community. The main/frontpage `community_id` is 0' example: 2 'community_name': description: The name of a community type: string Example: 'main' 'community_view': type: object properties: subscribed: $ref: '#/components/schemas/subscribed' counts: type: object properties: published: $ref: '#/components/schemas/published' community_id: $ref: '#/components/schemas/community_id' users_active_day: $ref: '#/components/schemas/users_active_day' id: description: 'Forthcoming...' type: number example: 1 users_active_half_year: $ref: '#/components/schemas/users_active_half_year' comments: $ref: '#/components/schemas/comment_count' users_active_month: $ref: '#/components/schemas/users_active_month' subscribers: description: The total number of community subscribers (members) type: number example: 41 posts: $ref: '#/components/schemas/posts' users_active_week: $ref: '#/components/schemas/users_active_week' community: $ref: '#/components/schemas/community' creator: $ref: '#/components/schemas/creator' category: type: object properties: name: $ref: '#/components/schemas/category_name' id: $ref: '#/components/schemas/category_id' 'config_hjson': description: The configuration data for a Lemmy server (in JSON format) type: string example: |- {\n # for more info about the config, check out the documentation\n # https://lemmy.ml/docs/administration_configuration.html\n\n setup: {\n # username for the admin user\n admin_username: \"lemmy\"\n # password for the admin user\n admin_password: \"lemmy\"\n # name of the site (can be changed later)\n site_name: \"lemmy-test\"\n }\n\n # the domain name of your instance (eg \"lemmy.ml\")\n hostname: \"localhost\"\n # address where lemmy should listen for incoming requests\n bind: \"0.0.0.0\"\n # port where lemmy should listen for incoming requests\n port: 8536\n # json web token for authorization between server and client\n jwt_secret: \"changeme\"\n # settings related to the postgresql database\n database: {\n # name of the postgres database for lemmy\n database: \"lemmy\"\n # username to connect to postgres\n user: \"lemmy\"\n # password to connect to postgres\n password: \"password\"\n # host where postgres is running\n host: \"postgres\"\n }\n# # optional: email sending configuration\n# email: {\n# # hostname and port of the smtp server\n# smtp_server: \"aspmx.l.google.com\"\n# # login name for smtp server\n# smtp_login: \"lemmmy@glemmy.com\"\n# # password to login to the smtp server\n# smtp_password: \"lemom\"\n# # address to send emails from, eg \"noreply@your-instance.com\"\n# smtp_from_address: \"noreply@lemmy.com\"\n# # whether or not smtp connections should use tls\n# use_tls: true\n# }\n}\n\n" 'content': description: The text of the comment or message type: string example: '> Communities\n\n\n![](https:\/\/enterprise.lemmy.ml\/pictrs\/image\/KZ7NoyJgxx.jpg)' 'counts': type: object properties: downvotes: $ref: '#/components/schemas/downvotes' published: $ref: '#/components/schemas/published' score: $ref: '#/components/schemas/score' comment_id: type: number description: Forthcoming... id: type: number description: Forthcoming... upvotes: $ref: '#/components/schemas/upvotes' 'creator': type: object properties: preferred_username: $ref: '#/components/schemas/preferred_username' banned: $ref: '#/components/schemas/banned' matrix_user_id: $ref: '#/components/schemas/matrix_user_id' updated: $ref: '#/components/schemas/user_updated' id: $ref: '#/components/schemas/user_id' shared_inbox_url: description: Forthcoming... type: string example: 'https:\/\/enterprise.lemmy.ml\/inbox' published: description: Forthcoming... type: string example: '2020-09-14T14:54:53.080949' actor_id: $ref: '#/components/schemas/actor_id' deleted: $ref: '#/components/schemas/deleted' banner: $ref: '#/components/schemas/banner' name: $ref: '#/components/schemas/user_name' avatar: $ref: '#/components/schemas/avatar' inbox_url: description: |- The link to the inbox of the site's creator type: string example: 'https:\/\/enterprise.lemmy.ml\/u\/nutomic\/inbox' local: $ref: '#/components/schemas/local' bio: $ref: '#/components/schemas/bio' admin: $ref: '#/components/schemas/admin' 'creator_banned_from_community': type: boolean description: Forthcoming... example: false 'creator_id': type: number description: The id of the person who created this site, community, post, comment or message example: 20 'default_listing_type': type: integer format: int16 minimum: 0 maximum: 2 description: |- What type of listing to display by default: 0. All 1. Subscribed 2. Community (Local) example: 0 'default_sort_type': type: integer format: int16 minimum: 0 maximum: 7 description: |- This user's default sort type for listings: 0. Active 1. Hot 2. New 3. TopDay 4. TopWeek 5. TopMonth 6. TopYear 7. TopAll example: 1 'deleted': type: boolean description: |- Set to *true* if this community, post, comment, message or user account should be or has been deleted. Unlike *removal*, deletion is not permanent. Deleted items can be recovered example: false 'downvotes': type: number description: Forthcoming... example: 0 'email': description: |- The user's email address type: string format: email example: 'jane.doe@humanity.org' 'enable_downvotes': description: |- **(Required)** Set to *true* if downvoting is allowed on this site type: boolean example: false 'expires': description: Forthcoming... type: integer format: int64 'federated_instances': type: object properties: blocked: $ref: '#/components/schemas/instance' allowed: $ref: '#/components/schemas/instance' linked: $ref: '#/components/schemas/instance' 'form_id': description: Forthcoming... (so you know which message came back) type: string nullable: true example: 'IMPORTANT' 'icon': type: string nullable: true description: Forthcoming... 'instance': type: array items: properties: # 'instance' is a guess at the name for this field instance: description: Forthcoming... type: string example: 'ds9.lemmy.ml' 'joined': description: '*true* if join request was successful' type: boolean example: true 'lang': description: |- The language to display Lemmy's interface in type: string example: 'Browser Default' 'local': type: boolean description: |- - *true* if this is a local user - *false* if this is a federated user 'locked': description: |- Set to *true* if the post is already, or should be, locked. A locked post cannot receive comments type: boolean example: true 'limit': type: integer format: int64 minimum: 1 description: Forthcoming... example: 20 'list_request': type: object properties: type_: $ref: '#/components/schemas/type_listing' sort: $ref: '#/components/schemas/sort' page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' community_id: $ref: '#/components/schemas/community_id' community_name: $ref: '#/components/schemas/community_name' auth: $ref: '#/components/schemas/authStringSchema' 'matrix_user_id': type: string nullable: true description: 'The [Matrix](https://matrix.org/docs/projects/try-matrix-now/) id of the user' 'mentions': description: 'Description and structure forthcoming...' type: object 'moderators': description: The list of moderators for each community type: array items: properties: moderator: $ref: '#/components/schemas/user' community: $ref: '#/components/schemas/community' 'my_user': type: object properties: show_nsfw: $ref: '#/components/schemas/show_nsfw' preferred_username: $ref: '#/components/schemas/preferred_username' default_sort_type: $ref: '#/components/schemas/default_sort_type' banned: $ref: '#/components/schemas/banned' default_listing_type: $ref: '#/components/schemas/default_listing_type' updated: $ref: '#/components/schemas/user_updated' matrix_user_id: $ref: '#/components/schemas/matrix_user_id' id: $ref: '#/components/schemas/user_id' show_avatars: $ref: '#/components/schemas/show_avatars' actor_id: $ref: '#/components/schemas/actor_id' deleted: $ref: '#/components/schemas/deleted' published: $ref: '#/components/schemas/published' banner: $ref: '#/components/schemas/banner' name: $ref: '#/components/schemas/user_name' avatar: $ref: '#/components/schemas/avatar' email: $ref: '#/components/schemas/email' lang: $ref: '#/components/schemas/lang' local: $ref: '#/components/schemas/local' bio: $ref: '#/components/schemas/bio' last_refreshed_at: description: Forthcoming... type: string example: '2021-01-21T16:19:08.725191' send_notifications_to_email: $ref: '#/components/schemas/send_notifications_to_email' theme: $ref: '#/components/schemas/theme' admin: $ref: '#/components/schemas/admin' 'my_vote': type: number description: Forthcoming... example: 1 'nsfw': type: boolean description: 'Set to *true* if this commmunity, post or comment is deemed [NSFW](https://en.wikipedia.org/wiki/Not_safe_for_work) (hence invisble to users who have the NSFW option selected in their profile' example: false 'online': description: Number of registered users who are currently on the system type: number example: 1 'open_registration': description: |- **(Required)** Forthcoming... type: boolean example: true 'page': type: integer format: int64 minimum: 1 description: Forthcoming... example: 1 'passwordRequired': type: string description: '**(Required)** *Exact* password' example: 'lemmy' 'passwordOptional': type: string description: '*Exact* password' example: 'lemmy' 'post': type: object properties: updated: type: string description: Forthcoming... nullable: true community_id: $ref: '#/components/schemas/community_id' embed_title: type: string nullable: true description: 'If the **url** for an associated post was provided, this will be the ** data from that URL' example: 'Covid: Novichok scientist invents vaccine | The Independent' nsfw: $ref: '#/components/schemas/nsfw' deleted: $ref: '#/components/schemas/deleted' removed: $ref: '#/components/schemas/removed' locked: $ref: '#/components/schemas/locked' url: $ref: '#/components/schemas/url' published: $ref: '#/components/schemas/published' stickied: type: boolean description: 'Set to *true* if this post has been made *sticky* (that is, it is presented at the top of a list of posts)' example: false body: $ref: '#/components/schemas/body' embed_html: type: string nullable: true description: Forthcoming... creator_id: $ref: '#/components/schemas/creator_id' thumbnail_url: type: string nullable: true description: Forthcoming... id: $ref: '#/components/schemas/post_id' ap_id: $ref: '#/components/schemas/ap_id' embed_description: type: string nullable: true description: 'If the **url** for an associated post was provided, this will be the *meta name="description"* data from that URL' example: 'Scientist Leonid Rink has a murky past and is well-known for selling nerve agents to criminals' local: $ref: '#/components/schemas/local' name: $ref: '#/components/schemas/post_name' 'post_id': type: number description: The post number example: 223 'post_name': type: string description: 'The title of the post' example: 'Pot. Kettle. Black.' 'post_view': type: object properties: community: $ref: '#/components/schemas/community' read: $ref: '#/components/schemas/read' counts: type: object properties: score: $ref: '#/components/schemas/score' comments: description: The number of comments on this post type: number example: 0 published: $ref: '#/components/schemas/published' post_id: $ref: '#/components/schemas/post_id' upvotes: $ref: '#/components/schemas/upvotes' id: description: Forthcoming... type: number example: 117 newest_comment_time: description: 'The date and time of the most recent comment (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))' type: string example: '2021-02-16T11:22:27.615111' stickied: $ref: '#/components/schemas/stickied' downvotes: $ref: '#/components/schemas/downvotes' post: $ref: '#/components/schemas/post' creator_banned_from_community: type: boolean saved: type: boolean subscribed: type: boolean my_vote: type: number creator: $ref: '#/components/schemas/creator' 'posts': description: Total number of posts on the site or community type: number example: 115 'preferred_username': type: string description: 'If set, this is the name shown instead of, or as well as, *username* in some contexts (also known as **Display name**)' example: 'Queen of the Griddle' 'private_message': type: object properties: read: $ref: '#/components/schemas/unread_only' creator_id: $ref: '#/components/schemas/creator_id' id: description: Forthcoming... type: number example: 16 ap_id: $ref: '#/components/schemas/ap_id' published: $ref: '#/components/schemas/published' recipient_id: $ref: '#/components/schemas/recipient' local: $ref: '#/components/schemas/local' content: $ref: '#/components/schemas/content' deleted: $ref: '#/components/schemas/deleted' updated: description: Forthcoming... type: string nullable: true 'private_message_id': description: The id of the private message type: integer format: int32 example: 17 'private_message_view': type: object properties: private_message: $ref: '#/components/schemas/private_message' creator: $ref: '#/components/schemas/user' recipient: $ref: '#/components/schemas/user' 'published': type: string description: 'The date this site, community, post, comment or message was created (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))' example: '2021-01-21T16:42:39.897148' 'read': type: boolean description: Set to *true* if this post, comment or message has been read (or should be marked as being read) example: false 'reason': description: Give a reason for the action. Why was this post deleted? Why was this user banned? type: string example: 'Breach of terms and conditions' 'recipient': description: Forthcoming... type: number example: 77 'remove_data': description: |- - If set to *true*, also delete that user's comments and posts - If set *false*, *restore* that user's comments and posts type: boolean example: false 'removed': type: boolean description: |- Set to *true* if this community, post, comment or message should be or has been *permanently* deleted. Only admin and moderator roles can do this. example: false 'replies': type: array items: properties: my_vote: $ref: '#/components/schemas/my_vote' post: $ref: '#/components/schemas/post' creator: $ref: '#/components/schemas/user' creator_banned_from_community: $ref: '#/components/schemas/creator_banned_from_community' community: $ref: '#/components/schemas/community' saved: $ref: '#/components/schemas/saved' counts: $ref: '#/components/schemas/counts' recipient: $ref: '#/components/schemas/recipient' comment: $ref: '#/components/schemas/comment' subscribed: $ref: '#/components/schemas/subscribed' 'repliesMentionsRequest': type: object properties: sort: $ref: '#/components/schemas/sort' page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' unread_only: $ref: '#/components/schemas/unread_only' auth: $ref: '#/components/schemas/authStringSchema' 'report_id': description: The number (id) of a raised report type: integer format: int32 example: 1 'report_request': type: object properties: page: $ref: '#/components/schemas/page' limit: $ref: '#/components/schemas/limit' community: $ref: '#/components/schemas/community_id' auth: $ref: '#/components/schemas/authStringSchema' 'resolve_request': type: object properties: report_id: $ref: '#/components/schemas/report_id' resolved: $ref: '#/components/schemas/resolved' auth: $ref: '#/components/schemas/authStringSchema' 'resolve_response': type: object properties: report_id: $ref: '#/components/schemas/report_id' resolved: $ref: '#/components/schemas/resolved' 'resolved': description: Forthcoming... type: boolean example: true 'resolver_id': description: The user_id of the person who resolved the report type: number nullable: true 'saved': description: |- *true* if this post or comment has been or should be saved on the user's profile type: boolean example: false 'score': type: number description: Forthcoming... example: 1 'score_plus_minus': description: Forthcoming... type: integer format: int16 example: 1 minimum: -1 maximum: 1 'send_notifications_to_email': description: 'If set to *true*, the user will receive email notifications for any username mentions, post and comment replies' type: boolean example: false 'show_avatars': description: |- If set to *true*, displays other user's avatar images by their username in listings type: boolean example: true 'show_nsfw': type: boolean description: |- **(Required)** Set to *true* if you wish [NSFW](https://en.wikipedia.org/wiki/Not_safe_for_work) content to be viewable by this person/site example: false default: false 'site': type: object properties: description: $ref: '#/components/schemas/site_description' banner: $ref: '#/components/schemas/banner' enable_downvotes: $ref: '#/components/schemas/enable_downvotes' published: $ref: '#/components/schemas/published' enable_nsfw: $ref: '#/components/schemas/show_nsfw' id: type: number name: $ref: '#/components/schemas/site_name' updated: description: Forthcoming... type: string nullable: true example: '2020-09-14T14:58:23.598513' icon: $ref: '#/components/schemas/icon' open_registration: $ref: '#/components/schemas/open_registration' creator_id: $ref: '#/components/schemas/creator_id' 'site_counts': type: object properties: users_active_week: $ref: '#/components/schemas/users_active_week' posts: $ref: '#/components/schemas/posts' comments: $ref: '#/components/schemas/comment_count' communities: description: Total number of communities on the site type: number example: 14 site_id: desciption: Forthcoming... type: number example: 1 users: description: Total number of registered users on the site type: number example: 51 id: desciption: Forthcoming... type: number example: 1 users_active_day: $ref: '#/components/schemas/users_active_day' users_active_month: $ref: '#/components/schemas/users_active_month' users_active_half_year: $ref: '#/components/schemas/users_active_half_year' 'site_description': description: |- A brief overview of the site's purpose type: string example: 'Federation test instance' 'site_name': description: |- **(Required) ** The name of this site type: string example: 'Enterprise' 'site_properties': type: object properties: name: $ref: '#/components/schemas/site_name' enable_downvotes: $ref: '#/components/schemas/enable_downvotes' open_registration: $ref: '#/components/schemas/open_registration' enable_nsfw: $ref: '#/components/schemas/show_nsfw' description: $ref: '#/components/schemas/site_description' icon: $ref: '#/components/schemas/icon' banner: $ref: '#/components/schemas/banner' auth: $ref: '#/components/schemas/authStringSchema' 'site_view': type: object properties: counts: $ref: '#/components/schemas/counts' site: $ref: '#/components/schemas/site' creator: $ref: '#/components/schemas/creator' 'sort': type: string description: |- **(Required)** Sort the response from the server according to one of the following criteria: - *Active* - the hottest posts/communities, depending on votes, and newest comment publish date - *Hot* - the hottest posts/communities, depending on votes and publish date - *New* - the newest posts/communities - *TopDay* - the most upvoted posts/communities of the current day - *TopWeek* - the most upvoted posts/communities of the current week - *TopMonth* - the most upvoted posts/communities of the current month - *TopYear* - the most upvoted posts/communities of the current year - *TopAll* - the most upvoted posts/communities on the server. enum: - Active - Hot - New - TopDay - TopWeek - TopMonth - TopYear - TopAll 'stickied': description: |- Set to *true* if the post is 'sticky' type: boolean example: true 'subscribed': type: boolean description: Forthcoming... example: true 'success': description: '*true* if report request was successful' type: boolean example: true 'theme': description: 'The theme style to use' type: string example: 'darkly' enum: - Browser Default - cyborg - darkly - i386 - journal - litely - litera - materia - minty - sketchy - solar - united - vaporwave - vaporwave-dark 'type_': description: What is the scope of the search? type: string example: 'All' enum: - All - Comments - Posts - Communities - Users - Url 'type_listing': description: Choose from one of three types of listing type: string example: 'All' enum: - All - Subscribed - Community 'unread_only': description: If *true*, only fetch unread comments or messages type: boolean example: false 'upvotes': type: number description: Forthcoming... example: 1 'url': type: string description: The link to the URL associated with the post nullable: true example: 'https:\/\/www.independent.co.uk\/news\/world\/europe\/covid-vaccine-novichok-russia-navalny-b1792778.html' 'user': type: object properties: user: type: object properties: updated: $ref: '#/components/schemas/user_updated' bio: $ref: '#/components/schemas/bio' admin: $ref: '#/components/schemas/admin' preferred_username: $ref: '#/components/schemas/preferred_username' deleted: $ref: '#/components/schemas/deleted' banned: $ref: '#/components/schemas/banned' published: $ref: '#/components/schemas/published' matrix_user_id: $ref: '#/components/schemas/matrix_user_id' avatar: $ref: '#/components/schemas/avatar' id: $ref: '#/components/schemas/user_id' actor_id: $ref: '#/components/schemas/actor_id' local: $ref: '#/components/schemas/local' banner: $ref: '#/components/schemas/banner' name: $ref: '#/components/schemas/user_name' 'user_id': description: |- That user's id number type: integer format: int32 example: 77 'user_name': type: string description: The user's username example: 'griddle' 'user_updated': type: string description: 'The last time this user profile was updated (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))' example: '2021-01-21T16:26:16.285610' 'user_view': type: object properties: counts: $ref: '#/components/schemas/counts' user: $ref: '#/components/schemas/user' 'users_active_day': desciption: Number of 'active' users in the previous 24 hours type: number example: 2 'users_active_half_year': desciption: Number of 'active' users in the previous six months type: number example: 10 'users_active_month': desciption: Number of 'active' users in the previous 28 days type: number example: 10 'users_active_week': description: Number of 'active' users in the previous seven days type: number example: 5 'version': description: The version of the software running the Lemmy server type: string example: '0.9.6'