joinlemmy-site/static/scripts/asyncapi.yaml
2021-02-17 15:47:42 +00:00

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