joinlemmy-site/static/scripts/asyncapi.yaml
2021-02-27 10:49:10 +00:00

5684 lines
172 KiB
YAML

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 proprietary link aggregators such as Reddit.
#### More information...
- [Install your own server](https://join.lemmy.ml/docs/en/administration/administration.html)
- [API reference](https://join.lemmy.ml/docs/en/contributing/api_reference.html)
- [HTTP API](https://join.lemmy.ml/docs/en/contributing/http_api.html)
### 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 client).
For testing purposes, either [set up your own server](https://join.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).
Connect to <code>ws://***host***/api/v2/ws</code> to get started. If the server supports secure connections, you can use `wss://**server**/api/v1/ws`.
#### Testing with websocat
For example a simple test using [websocat](https://github.com/vi/websocat) might be:
`websocat ws://127.0.0.1:8536/api/v2/ws -nt`
A simple test command:
`{"op": "ListCategories", "data": {}}`
#### Testing with the [WebSocket JavaScript API](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)
```javascript
var ws = new WebSocket("ws://" + host + "/api/v2/ws");
ws.onopen = function () {
console.log("Connection succeed!");
ws.send(JSON.stringify({
op: "ListCategories",
data: {}
}));
};
```
### Structure of this document
- **Channels** - Documents the requests (marked with the PUBLISH button) and responses (marked with SUBSCRIBE) for each endpoint (*channel*)
- **Servers** - Lists some publicly-accessible test servers
- **Messages** - A summary of the requests and responses (a duplication of the information in **Channels**)
- **Schemas** - An alphabetical list of the most commonly accessed data structures in the API.
### The HTTP API
Lemmy also has an [HTTP API](https://join.lemmy.ml/docs/en/contributing/http_api.html) which is almost identical to the WebSocket API; however, this WebSocket API is the primary source since it also details the specifics of HTTP API calls.
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
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: Returns an authentication string (`jwt`) for the supplied username or emal
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: |-
Join to receive WebSocket replies, private messages and so on for this user.
#### 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: Verification that you will receive these WebSocket messages
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'
subscribe:
summary: CreateSite (response)
description: Returns site details
operationId: createSiteResponseMessage
tags:
- name: Site
message:
oneOf:
- $ref: '#/components/messages/createSiteResponse'
- $ref: '#/components/messages/errorResponse'
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'
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'
subscribe:
summary: BanFromCommunity (response)
description: Confirmation after a ban request
operationId: banFromCommunityResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/banFromCommunityResponse'
- $ref: '#/components/messages/errorResponse'
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'
subscribe:
summary: AddModToCommunity (response)
description: Confirmation that the new moderator has been added
operationId: addModToCommunityResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/addModToCommunityResponse'
- $ref: '#/components/messages/errorResponse'
EditCommunity:
publish:
description: |-
Request to edit a community.
The account making the request (`auth`) must be either an admin or a moderator of that community.
#### HTTP API - operation and endpoint.
`PUT /community`
operationId: editCommunityRequestMessage
tags:
- name: Community
message:
$ref: '#/components/messages/editCommunityRequest'
subscribe:
summary: EditCommunity (response)
description: Return the details for the requested community
operationId: editCommunityResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/editCommunityResponse'
- $ref: '#/components/messages/errorResponse'
DeleteCommunity:
publish:
summary: DeleteCommunity (request)
description: |-
Request to delete a community.
The account making the request (`auth`) must be the creator of that community.
#### HTTP API - operation and endpoint.
`POST /community/delete`
operationId: deleteCommunityRequestMessage
tags:
- name: Community
message:
$ref: '#/components/messages/deleteCommunityRequest'
subscribe:
summary: DeleteCommunity (response)
description: Return the details for the deleted community
operationId: deleteCommunityResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/deleteCommunityResponse'
- $ref: '#/components/messages/errorResponse'
RemoveCommunity:
publish:
summary: RemoveCommunity (request)
description: |-
Request to *permanently* delete a community.
The account making the request (`auth`) must be and admin.
#### HTTP API - operation and endpoint.
`POST /community/remove`
operationId: removeCommunityRequestMessage
tags:
- name: Community
message:
$ref: '#/components/messages/removeCommunityRequest'
subscribe:
summary: RemoveCommunity (response)
description: Return the details for the deleted community
operationId: removeCommunityResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/removeCommunityResponse'
- $ref: '#/components/messages/errorResponse'
FollowCommunity:
publish:
summary: FollowCommunity (request)
description: |-
Request to follow (join) a community.
#### HTTP API - operation and endpoint.
`POST /community/follow`
operationId: followCommunityRequestMessage
tags:
- name: Community
message:
$ref: '#/components/messages/followCommunityRequest'
subscribe:
summary: FollowCommunity (response)
description: Return the details for the followed community
operationId: followCommunityResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/followCommunityResponse'
- $ref: '#/components/messages/errorResponse'
GetFollowedCommunities:
publish:
summary: GetFollowedCommunities (request)
description: |-
Request to list all followed (joined) communities.
#### HTTP API - operation and endpoint.
`GET /user/followed_communities`
operationId: getFollowedCommunitiesRequestMessage
tags:
- name: Community
message:
$ref: '#/components/messages/getFollowedCommunitiesRequest'
subscribe:
summary: GetFollowedCommunities (response)
description: Return the details for the followed communities
operationId: getFollowedCommunitiesResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/getFollowedCommunitiesResponse'
- $ref: '#/components/messages/errorResponse'
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'
subscribe:
summary: TransferCommunity (response)
description: Response to a request to transfer community ownership
operationId: transferCommunityResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/transferCommunityResponse'
- $ref: '#/components/messages/errorResponse'
CommunityJoin:
publish:
summary: CommunityJoin (request)
description: |-
Join to receive WebSocket messages for this community's posts.
#### HTTP API - operation and endpoint.
`POST /community/join`
operationId: communityJoinRequestMessage
tags:
- name: Community
message:
$ref: '#/components/messages/communityJoinRequest'
subscribe:
summary: CommunityJoin (response)
description: Verification that you will receive these WebSocket messages
operationId: CommunityJoinResponseMessage
tags:
- name: Community
message:
oneOf:
- $ref: '#/components/messages/communityJoinResponse'
- $ref: '#/components/messages/errorResponse'
ModJoin:
publish:
summary: ModJoin (request)
description: |-
Join to receive WebSocket messages for community moderator updates such as reports.
#### HTTP API - operation and endpoint.
`POST /community/mod/join`
operationId: modJoinRequestMessage
tags:
- name: Community
message:
$ref: '#/components/messages/modJoinRequest'
subscribe:
summary: ModJoin (response)
description: Verification that you will receive these WebSocket messages
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'
EditPost:
publish:
summary: EditPost (request)
description: |-
Request to edit an existing post
#### HTTP API - operation and endpoint.
`PUT /post`
operationId: editPostRequestMessage
tags:
- name: Post
message:
$ref: '#/components/messages/editPostRequest'
subscribe:
summary: EditPost (response)
description: Response to request to edit a post
operationId: editPostResponseMessage
tags:
- name: Post
message:
oneOf:
- $ref: '#/components/messages/editPostResponse'
- $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'
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: |-
Join to receive WebSocket messages for this post's comments.
#### HTTP API - operation and endpoint.
`POST /post/join`
operationId: postJoinRequestMessage
tags:
- name: Post
message:
$ref: '#/components/messages/postJoinRequest'
subscribe:
summary: PostJoin (response)
description: Verification that you will receive these WebSocket messages
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
required:
- op
- data
properties:
op:
type: string
pattern: '^Login$'
default: 'Login'
data:
type: object
required:
- username_or_email
- password
properties:
username_or_email:
$ref: '#/components/schemas/username_or_email'
password:
$ref: '#/components/schemas/password'
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
required:
- op
- data
properties:
op:
type: string
pattern: '^GetReplies$'
default: 'GetReplies'
data:
$ref: '#/components/schemas/repliesMentionsRequest'
getUserMentionsRequest:
name: User mentions request
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^GetUserMentions$'
default: 'GetUserMentions'
data:
$ref: '#/components/schemas/repliesMentionsRequest'
getCaptchaRequest:
name: Captcha request
payload:
type: object
required:
- op
- data
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
required:
- op
- data
properties:
op:
type: string
pattern: '^Register$'
default: 'Register'
data:
type: object
required:
- username
- password
- admin
- password_verify
- show_nsfw
properties:
username:
type: string
description: 'The name for the new user'
example: 'testuser'
email:
description: |-
The user's email address
type: string
format: email
password:
$ref: '#/components/schemas/password'
password_verify:
$ref: '#/components/schemas/password'
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
required:
- op
- data
properties:
op:
type: string
pattern: '^SaveUserSettings$'
default: 'SaveUserSettings'
data:
type: object
required:
- show_nsfw
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/password'
new_password_verify:
$ref: '#/components/schemas/password'
old_password:
$ref: '#/components/schemas/password'
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
required:
- op
- data
properties:
op:
type: string
pattern: '^GetUserDetails$'
default: 'GetUserDetails'
data:
type: object
required:
- sort
- saved_only
properties:
user_id:
$ref: '#/components/schemas/user_id'
username:
$ref: '#/components/schemas/user_name'
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:
op:
type: string
pattern: '^SaveUserSettings$'
default: 'SaveUserSettings'
data:
type: object
properties:
jwt:
$ref: '#/components/schemas/authStringSchema'
getUserDetailsResponse:
name: User details 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
required:
- op
- data
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:
op:
type: string
pattern: '^MarkUserMentionAsRead$'
default: 'MarkUserMentionAsRead'
data:
type: object
properties:
mention:
$ref: '#/components/schemas/mentions'
privateMessageRequest:
name: Request to list all a user's private messages
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^GetPrivateMessages$'
default: 'GetPrivateMessages'
data:
type: object
required:
- unread_only
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreatePrivateMessage$'
default: 'CreatePrivateMessage'
data:
type: object
required:
- content
- recipient_id
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^EditPrivateMessage$'
default: 'EditPrivateMessage'
data:
type: object
required:
- private_message_id
- content
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^DeletePrivateMessage$'
default: 'DeletePrivateMessage'
data:
type: object
required:
- private_message_id
- deleted
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^MarkPrivateMessageAsRead$'
default: 'MarkPrivateMessageAsRead'
data:
type: object
required:
- private_message_id
- read
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^MarkAllAsRead$'
default: 'MarkAllAsRead'
data:
type: object
required:
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^DeleteAccount$'
default: 'DeleteAccount'
data:
type: object
required:
- password
- auth
properties:
password:
$ref: '#/components/schemas/password'
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
required:
- op
- data
properties:
op:
type: string
pattern: '^AddAdmin$'
default: 'AddAdmin'
data:
type: object
required:
- user_id
- added
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^BanUser$'
default: 'BanUser'
data:
type: object
required:
- user_id
- ban
- auth
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: Request to receive WebSocket messages for this user.
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^UserJoin$'
default: 'UserJoin'
data:
type: object
required:
- auth
properties:
auth:
$ref: '#/components/schemas/authStringSchema'
userJoinResponse:
name: Verification that you will receive these WebSocket messages
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
required:
- op
- data
properties:
op:
type: string
pattern: '^GetReportCount$'
default: 'GetReportCount'
data:
type: object
required:
- auth
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:
op:
type: string
pattern: '^GetReportCount$'
default: 'GetReportCount'
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
getCategoriesRequest:
name: Request to list categories on the Lemmy server
payload:
type: object
required:
- op
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
required:
- op
- data
properties:
op:
type: string
pattern: '^Search$'
default: 'Search'
data:
type: object
required:
- q
- type_
- sort
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
required:
- op
- data
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
required:
- op
- data
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreateSite$'
default: 'CreateSite'
data:
$ref: '#/components/schemas/site_properties'
createSiteResponse:
name: Returns Lemmy site details
payload:
type: object
properties:
op:
type: string
pattern: '^CreateSite$'
default: 'CreateSite'
data:
type: object
properties:
site_view:
$ref: '#/components/schemas/site_view'
editSiteRequest:
name: Request to edit Lemmy site details
payload:
type: object
required:
- op
- data
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
required:
- op
- data
properties:
op:
type: string
pattern: '^GetSite$'
default: 'GetSite'
data:
type: object
required:
- auth
properties:
auth:
$ref: '#/components/schemas/authStringSchema'
getSiteResponse:
name: Returns Lemmy site details
payload:
type: object
properties:
op:
type: string
pattern: '^GetSite$'
default: 'GetSite'
data:
type: object
properties:
site_view:
$ref: '#/components/schemas/site_view'
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:
$ref: '#/components/schemas/user_id'
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'
transferSiteRequest:
name: Request to transfer ownership of the site
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^TransferSite$'
default: 'TransferSite'
data:
type: object
required:
- user_id
- auth
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
required:
- op
- data
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
required:
- op
- data
properties:
op:
type: string
pattern: '^GetSiteConfig$'
default: 'GetSiteConfig'
data:
type: object
required:
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^SaveSiteConfig$'
default: 'SaveSiteConfig'
data:
type: object
required:
- config_hjson
- auth
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
required:
- op
- data
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreateCommunity$'
default: 'CreateCommunity'
data:
type: object
required:
- name
- title
- category_id
- nsfw
- auth
properties:
name:
$ref: '#/components/schemas/community_name'
title:
$ref: '#/components/schemas/title'
description:
$ref: '#/components/schemas/description'
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreateCommunity$'
default: 'CreateCommunity'
data:
type: object
properties:
community_view:
$ref: '#/components/schemas/community_view'
listCommunityRequest:
name: Request list of communities on the Lemmy server
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^ListCommunities$'
default: 'ListCommunities'
data:
type: object
required:
- type_
- sort
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 list all communities
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
required:
- op
- data
properties:
op:
type: string
pattern: '^BanFromCommunity$'
default: 'BanFromCommunity'
data:
type: object
required:
- community_id
- user_id
- ban
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^AddModToCommunity$'
default: 'AddModToCommunity'
data:
type: object
required:
- community_id
- user_id
- added
- auth
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'
addModToCommunityResponse:
name: Confirmation that a moderator has been added to the community
payload:
type: object
properties:
op:
type: string
pattern: '^AddModToCommunity$'
default: 'AddModToCommunity'
data:
type: object
properties:
moderators:
$ref: '#/components/schemas/moderators'
editCommunityRequest:
name: Request to edit a community
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^EditCommunity$'
default: 'EditCommunity'
data:
type: object
required:
- community_id
- title
- category_id
- nsfw
- auth
properties:
community_id:
$ref: '#/components/schemas/community_id'
title:
$ref: '#/components/schemas/title'
description:
$ref: '#/components/schemas/description'
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'
editCommunityResponse:
name: Response to the request to edit a community
payload:
type: object
properties:
op:
type: string
pattern: '^EditCommunity$'
default: 'EditCommunity'
data:
type: object
properties:
community_view:
$ref: '#/components/schemas/community_view'
deleteCommunityRequest:
name: Request to delete a community
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^DeleteCommunity$'
default: 'DeleteCommunity'
data:
type: object
required:
- community_id
- deleted
- auth
properties:
community_id:
$ref: '#/components/schemas/community_id'
deleted:
$ref: '#/components/schemas/deleted'
auth:
$ref: '#/components/schemas/authStringSchema'
deleteCommunityResponse:
name: Response to the request to delete a community
payload:
type: object
properties:
op:
type: string
pattern: '^DeleteCommunity$'
default: 'DeleteCommunity'
data:
type: object
properties:
community_view:
$ref: '#/components/schemas/community_view'
removeCommunityRequest:
name: Request to permanently delete a community
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^RemoveCommunity$'
default: 'RemoveCommunity'
data:
type: object
required:
- community_id
- removed
- auth
properties:
community_id:
$ref: '#/components/schemas/community_id'
removed:
$ref: '#/components/schemas/removed'
reason:
$ref: '#/components/schemas/reason'
expires:
$ref: '#/components/schemas/expires'
auth:
$ref: '#/components/schemas/authStringSchema'
removeCommunityResponse:
name: Response to the request to permanently delete a community
payload:
type: object
properties:
op:
type: string
pattern: '^RemoveCommunity$'
default: 'RemoveCommunity'
data:
type: object
properties:
community_view:
$ref: '#/components/schemas/community_view'
followCommunityRequest:
name: Request to follow a community
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^FollowCommunity$'
default: 'FollowCommunity'
data:
type: object
required:
- community_id
- follow
- auth
properties:
community_id:
$ref: '#/components/schemas/community_id'
follow:
description: Forthcoming...
type: boolean
example: true
auth:
$ref: '#/components/schemas/authStringSchema'
followCommunityResponse:
name: Response to the request to follow a community
payload:
type: object
properties:
op:
type: string
pattern: '^FollowCommunity$'
default: 'FollowCommunity'
data:
type: object
properties:
community_view:
$ref: '#/components/schemas/community_view'
getFollowedCommunitiesRequest:
name: Request to list all followed communities
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^GetFollowedCommunities$'
default: 'GetFollowedCommunities'
data:
type: object
required:
- auth
properties:
auth:
$ref: '#/components/schemas/authStringSchema'
getFollowedCommunitiesResponse:
name: List of followed communities
payload:
type: object
properties:
op:
type: string
pattern: '^GetFollowedCommunities$'
default: 'GetFollowedCommunities'
data:
type: object
properties:
communities:
type: array
items:
properties:
community:
$ref: '#/components/schemas/community'
follower:
$ref: '#/components/schemas/user'
transferCommunityRequest:
name: Request to transfer ownership of a community from one person to another
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^TransferCommunity$'
default: 'TransferCommunity'
data:
type: object
required:
- community_id
- user_id
- auth
properties:
community_id:
$ref: '#/components/schemas/community_id'
user_id:
$ref: '#/components/schemas/user_id'
auth:
$ref: '#/components/schemas/authStringSchema'
transferCommunityResponse:
name: Response to a request to transfer community ownership
payload:
type: object
properties:
op:
type: string
pattern: '^TransferCommunity$'
default: 'TransferCommunity'
data:
type: object
properties:
moderators:
$ref: '#/components/schemas/moderators'
online:
$ref: '#/components/schemas/online'
community_view:
$ref: '#/components/schemas/community_view'
communityJoinRequest:
name: Request to receive WebSocket messages for this community's posts
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^CommunityJoin$'
default: 'CommunityJoin'
data:
type: object
required:
- community_id
properties:
community_id:
$ref: '#/components/schemas/community_id'
communityJoinResponse:
name: Verification that you will receive these WebSocket messages
payload:
type: object
properties:
op:
type: string
pattern: '^CommunityJoin$'
default: 'CommunityJoin'
data:
properties:
joined:
$ref: '#/components/schemas/joined'
modJoinRequest:
name: Request to receive WebSocket messages for community moderator updates such as reports.
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^ModJoin$'
default: 'ModJoin'
data:
type: object
required:
- community_id
properties:
community_id:
$ref: '#/components/schemas/community_id'
modJoinResponse:
name: Verification that you will receive these WebSocket messages
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreatePost$'
default: 'CreatePost'
data:
type: object
required:
- name
- nsfw
- community_id
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^GetPost$'
default: 'GetPost'
data:
type: object
required:
- id
- auth
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
required:
- op
- data
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreatePostLike$'
default: 'CreatePostLike'
data:
type: object
required:
- post_id
- score
- auth
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'
editPostRequest:
name: Request to edit an existing post
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^EditPost$'
default: 'EditPost'
data:
type: object
required:
- post_id
- name
- nsfw
- auth
properties:
post_id:
$ref: '#/components/schemas/post_id'
name:
$ref: '#/components/schemas/post_name'
url:
$ref: '#/components/schemas/url'
nsfw:
$ref: '#/components/schemas/nsfw'
auth:
$ref: '#/components/schemas/authStringSchema'
editPostResponse:
name: Response to request to edit a post
payload:
type: object
properties:
op:
type: string
pattern: '^EditPost$'
default: 'EditPost'
data:
type: object
properties:
post_view:
$ref: '#/components/schemas/post_view'
deletePostRequest:
name: Request that a post be deleted
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^DeletePost$'
default: 'DeletePost'
data:
type: object
required:
- post_id
- deleted
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^RemovePost$'
default: 'RemovePost'
data:
type: object
required:
- post_id
- removed
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^LockPost$'
default: 'LockPost'
data:
type: object
required:
- post_id
- locked
- auth
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: '^LockPost$'
default: 'LockPost'
data:
type: object
properties:
post_view:
$ref: '#/components/schemas/post_view'
stickyPostRequest:
name: Request that a post be made 'sticky'
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^StickyPost$'
default: 'StickyPost'
data:
type: object
required:
- post_id
- stickied
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^SavePost$'
default: 'SavePost'
data:
type: object
required:
- post_id
- save
- auth
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: Request to receive WebSocket messages for this post's comments
payload:
type: object
required:
- op
- data
properties:
op:
type: string
pattern: '^PostJoin$'
default: 'PostJoin'
data:
type: object
required:
- post_id
properties:
post_id:
$ref: '#/components/schemas/post_id'
postJoinResponse:
name: Verification that you will receive these WebSocket messages
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
required:
- post_id
- reason
- auth
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
required:
- op
- data
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
required:
- op
- data
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
required:
- op
- data
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
required:
- op
- data
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
required:
- comment_id
- deleted
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^RemoveComment$'
default: 'RemoveComment'
data:
type: object
required:
- comment_id
- removed
- auth
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
required:
- op
- data
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
required:
- op
- data
properties:
op:
type: string
pattern: '^MarkCommentAsRead$'
default: 'MarkCommentAsRead'
data:
type: object
required:
- comment_id
- read
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^SaveComment$'
default: 'SaveComment'
data:
type: object
required:
- comment_id
- save
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreateCommentLike$'
default: 'CreateCommentLike'
data:
type: object
required:
- comment_id
- score
- auth
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
required:
- op
- data
properties:
op:
type: string
pattern: '^CreateCommentReport$'
default: 'CreateCommentReport'
data:
type: object
required:
- comment_id
- reason
- auth
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
required:
- op
- data
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
required:
- op
- data
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** and **Register**'
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:
$ref: '#/components/schemas/banned'
'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
required:
- content
- post_id
- auth
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:
$ref: '#/components/schemas/description'
actor_id:
$ref: '#/components/schemas/actor_id'
local:
$ref: '#/components/schemas/local'
title:
$ref: '#/components/schemas/title'
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.
You can undo a delete yourself by setting this value to *false*.
example: false
'description':
type: string
description: |-
The information in the community's **Sidebar** area
example: 'All about the Rolex/Björn Borg collaboration'
'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: 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:
# COMMENT 'instance' is a guess at the name for this field. Unable to test federation
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.
You can undo a lock yourself by setting this value to *false*.
type: boolean
example: true
'limit':
type: integer
format: int64
minimum: 1
description: Forthcoming...
example: 20
'list_request':
type: object
required:
- type_
- sort
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: 'Forthcoming...'
type: object
required:
- user_mention_id
- read
- auth
properties:
user_mention_id:
description: Forthcoming...
type: integer
format: int32
read:
$ref: '#/components/schemas/read'
auth:
$ref: '#/components/schemas/authStringSchema'
'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
required:
- show_nsfw
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: Forthcoming...
type: boolean
example: true
'page':
type: integer
format: int64
minimum: 1
description: Forthcoming...
example: 1
'password':
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 *<title>* 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'
newest_comment_time_necro:
description: Forthcoming...
type: string
example: '2021-02-23T13:26:54.956691'
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).
If you have marked something as being read, you can undo this yourself by setting this value to *false*.
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.
An admin or moderator can undo a removal by setting this value to *false*.
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
required:
- sort
- unread_only
- auth
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
required:
- report_id
- resolved
- auth
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: |-
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
required:
- show_nsfw
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: The name of this site
type: string
example: 'Enterprise'
'site_properties':
type: object
required:
- name
- auth
- enable_downvotes
- open_registration
- enable_nsfw
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: |-
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
'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
example: 'BorgWatch'
'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'
'username_or_email':
type: string
description: 'Username or registered email'
example: 'lemmy'
'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'