openapi: 3.0.0
info:
  title: Mbin API
  description: Documentation for interacting with content on Mbin through the API
  version: 1.0.0
paths:
  /authorize:
    get:
      tags:
        - oauth
      summary: Begin an oauth2 authorization_code grant flow
      parameters:
        - name: response_type
          in: query
          required: true
          schema:
            type: string
            default: code
            enum:
              - code
        - name: client_id
          in: query
          required: true
          schema:
            type: string
        - name: redirect_uri
          in: query
          description: >-
            One of the valid redirect_uris that were registered for your client
            during client creation.
          required: true
          schema:
            type: string
            format: uri
        - name: scope
          in: query
          description: A space delimited list of requested scopes
          required: true
          schema:
            type: string
        - name: state
          in: query
          description: >-
            A randomly generated state variable to be used to prevent CSRF
            attacks
          required: true
          schema:
            type: string
        - name: code_challenge
          in: query
          description: Required for public clients, begins PKCE flow when present
          schema:
            type: string
        - name: code_challenge_method
          in: query
          description: Required for public clients, sets the type of code challenge used
          schema:
            type: string
            enum:
              - S256
              - plain
      responses:
        default:
          description: ''
  /token:
    post:
      tags:
        - oauth
      summary: Used to retrieve a Bearer token after receiving consent from the user
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
                - grant_type
                - client_id
              properties:
                grant_type:
                  description: One of the three grant types available
                  type: string
                  enum:
                    - authorization_code
                    - refresh_token
                    - client_credentials
                client_id:
                  type: string
                client_secret:
                  description: >-
                    Required if using the client_credentials or
                    authorization_code flow with a confidential client
                  type: string
                code_verifier:
                  description: >-
                    Required if using the PKCE extension to authorization_code
                    flow
                  type: string
                code:
                  description: >-
                    Required during authorization_code flow. The code retrieved
                    after redirect during authorization_code flow.
                  type: string
                refresh_token:
                  description: >-
                    Required during refresh_token flow. This is the refresh
                    token obtained after a successful authorization_code flow.
                  type: string
                redirect_uri:
                  description: >-
                    Required during authorization_code flow. One of the valid
                    redirect_uris that were registered for your client during
                    client creation.
                  type: string
                scope:
                  description: >-
                    Required during client_credentials flow. A space-delimited
                    list of scopes the client token will be provided.
                  type: string
              type: object
      responses:
        default:
          description: ''
  /api/admin/entry/{entry_id}/purge:
    delete:
      tags:
        - admin/entry
      summary: >-
        Purges an entry from the instance, deleting it completely. This action
        is irreversible.
      operationId: delete_api_admin_entry_purge
      parameters:
        - name: entry_id
          in: path
          description: The entry to purge
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Entry purged
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to purge this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:entry:purge
  /api/admin/entry/{entry_id}/change-magazine/{target_id}:
    put:
      tags:
        - admin/entry
      summary: Changes the magazine of the entry to target
      operationId: put_api_admin_entry_change_magazine
      parameters:
        - name: entry_id
          in: path
          description: The entry to move
          required: true
          schema:
            type: integer
        - name: target_id
          in: path
          description: The magazine to move the entry to
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Entry's magazine changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to change this entry's magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:move_entry
  /api/admin/comment/{comment_id}/purge:
    delete:
      tags:
        - admin/entry_comment
      summary: >-
        Purges a comment from the instance, deleting it completely. This action
        is irreversible.
      operationId: delete_api_admin_comment_purge
      parameters:
        - name: comment_id
          in: path
          description: The comment to purge
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Comment purged
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to purge this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:entry_comment:purge
  /api/admin/post/{post_id}/purge:
    delete:
      tags:
        - admin/post
      summary: >-
        Purges a post from the instance, deleting it completely. This action is
        irreversible.
      operationId: delete_api_admin_post_purge
      parameters:
        - name: post_id
          in: path
          description: The post to purge
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Post purged
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to purge this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:post:purge
  /api/admin/post-comment/{comment_id}/purge:
    delete:
      tags:
        - admin/post_comment
      summary: >-
        Purges a post comment from the instance, deleting it completely. This
        action is irreversible.
      operationId: delete_api_admin_post_comment_purge
      parameters:
        - name: comment_id
          in: path
          description: The comment to purge
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Comment purged
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to purge this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:post_comment:purge
  /api/admin/users/banned:
    get:
      tags:
        - admin/user
      summary: Retrieves a list of users currently banned from the instance
      operationId: get_api_admin_user_retrieve_banned
      parameters:
        - name: p
          in: query
          description: Page of users to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of users per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
        - name: group
          in: query
          description: What group of users to retrieve
          schema:
            type: string
            default: all
            enum:
              - all
              - local
              - remote
      responses:
        '200':
          description: Returns a paginated list of banned users
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserBanResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to view the list of banned users
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:ban
  /api/admin/users/{user_id}/ban:
    post:
      tags:
        - admin/user
      summary: Bans a user from the instance
      operationId: post_api_admin_user_ban
      parameters:
        - name: user_id
          in: path
          description: The user to ban
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User banned
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserBanResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to ban this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:ban
  /api/admin/users/{user_id}/unban:
    post:
      tags:
        - admin/user
      summary: Unbans a user from the instance
      operationId: post_api_admin_user_unban
      parameters:
        - name: user_id
          in: path
          description: The user to unban
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User unbanned
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserBanResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to unban this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:ban
  /api/admin/users/{user_id}/delete_account:
    delete:
      tags:
        - admin/user
      summary: Marks the user for deletion in 30 days.
      operationId: delete_api_admin_user_delete_account
      parameters:
        - name: user_id
          in: path
          description: The user to delete
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to delete this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:delete
  /api/admin/users/{user_id}/purge_account:
    delete:
      tags:
        - admin/user
      summary: Deletes the user from the instance completely.
      description: This action is irreversable.
      operationId: delete_api_admin_user_purge
      parameters:
        - name: user_id
          in: path
          description: The user to purge
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: User purged
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to purge this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:purge
  /api/admin/users/{user_id}/verify:
    put:
      tags:
        - admin/user
      summary: >-
        Forcibly verifies a user on the instance, with no regard for the email
        confirmation
      operationId: put_api_admin_user_verify
      parameters:
        - name: user_id
          in: path
          description: The user to verify
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User verified
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to verify this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:verify
  /api/instance/settings:
    get:
      tags:
        - admin/instance
      operationId: get_api_admin_retrieve_settings
      responses:
        '200':
          description: Settings retrieved
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view the instance settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:instance:settings:read
    put:
      tags:
        - admin/instance
      operationId: put_api_admin_update_settings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SettingsDto'
      responses:
        '200':
          description: Settings updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsDto'
        '400':
          description: Invalid settings provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to edit the instance settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:instance:settings:edit
  /api/instance/ban/{domain}:
    put:
      tags:
        - admin/federation
      operationId: put_api_admin_ban_instance
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Instance added to ban list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsDto'
        '400':
          description: Instance cannot be banned when an allow list is used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to edit the instance settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:federation:update
  /api/instance/unban/{domain}:
    put:
      tags:
        - admin/federation
      operationId: put_api_admin_unban_instance
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Instance removed from ban list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsDto'
        '400':
          description: Instance cannot be unbanned when an allow list is used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to edit the instance settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Instance not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:federation:update
  /api/instance/allow/{domain}:
    put:
      tags:
        - admin/federation
      operationId: put_api_admin_allow_instance
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Instance added to allowlist
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsDto'
        '400':
          description: >-
            Instance cannot be removed from the allow list when the allow list
            is not used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to edit the instance settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:federation:update
  /api/instance/deny/{domain}:
    put:
      tags:
        - admin/federation
      operationId: put_api_admin_deny_instance
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Instance removed from allow list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsDto'
        '400':
          description: >-
            Instance cannot be put on the allow list when the allow list is not
            used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to edit the instance settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Instance not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:federation:update
  /api/instance/{page}:
    put:
      tags:
        - admin/instance
      operationId: put_api_admin_update_pages
      parameters:
        - name: page
          in: path
          required: true
          schema:
            type: string
            enum:
              - about
              - contact
              - faq
              - privacyPolicy
              - terms
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageDto'
      responses:
        '200':
          description: Page updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteResponseDto'
        '400':
          description: Invalid settings provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to edit the instance pages
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:instance:information:edit
  /api/clients/stats:
    get:
      tags:
        - admin/oauth2
      summary: Retrieve oauth2 client access stats in a particular interval.
      operationId: get_api_admin_retrieve_client_stats
      parameters:
        - name: start
          in: query
          description: >-
            The start date of the window to retrieve views in. If not provided
            defaults to 1 `resolution` ago
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: >-
            The end date of the window to retrieve views in. If not provided
            defaults to today
          schema:
            type: string
            format: date
        - name: resolution
          in: query
          description: The size of chunks to aggregate views in
          required: true
          schema:
            type: string
            enum:
              - all
              - year
              - month
              - day
              - hour
              - second
              - milliseconds
      responses:
        '200':
          description: >-
            Accesses by interval retrieved. These are not guaranteed to be
            continuous.
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ClientAccessStatsResponseDto'
                type: object
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view the OAuth2 client stats
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:oauth_clients:read
  /api/clients/{client_identifier}:
    get:
      tags:
        - admin/oauth2
      operationId: get_api_admin_retrieve_client
      parameters:
        - name: client_identifier
          in: path
          description: The OAuth2 client to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the OAuth2 Client
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to view clients on this instance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Client not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:oauth_clients:read
  /api/clients:
    get:
      tags:
        - admin/oauth2
      operationId: get_api_admin_retrieve_client_collection
      parameters:
        - name: p
          in: query
          description: Page of clients to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of clients per page
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of clients
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ClientResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: >-
            You are not permitted to read a list of oauth2 clients on this
            instance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Page does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:oauth_clients:read
  /api/defederated:
    get:
      tags:
        - instance
      summary: Get de-federated instances.
      operationId: get_api_instance_retrieve_defederated_instances
      responses:
        '200':
          description: Returns a list of de-federated instances
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstancesDto'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    put:
      tags:
        - admin/federation
      description: >-
        This is the old version of banning and unbanning instances, use
        /api/instance/ban and /api/instance/unban instead
      operationId: put_api_admin_update_defederated_instances
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstancesDto'
      responses:
        '200':
          description: Defederated instances updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstancesDto'
        '400':
          description: One of the URLs entered was invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to edit the list of defederated instances
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      deprecated: true
      security:
        - oauth2:
            - admin:federation:update
  /api/admin/magazine/{magazine_id}/purge:
    delete:
      tags:
        - admin/magazine
      operationId: delete_api_admin_purge_magazine
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to purge
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Magazine purged
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to purge this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:purge
  /api/admin/users/applications:
    get:
      tags:
        - admin/user
      summary: Retrieve users waiting for admin approval
      operationId: get_api_admin_view_user_applications
      parameters:
        - name: p
          in: query
          description: Page of users to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of users that are awaiting admin approval
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserSignupResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to view users waiting for approval
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:application
  /api/admin/users/applications/{user_id}/approve:
    get:
      tags:
        - admin/user
      operationId: get_api_admin_view_user_application_approve
      parameters:
        - name: user_id
          in: path
          description: The user to approve
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        '200':
          description: Returns nothing on success
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to verify this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:application
  /api/admin/users/applications/{user_id}/reject:
    get:
      tags:
        - admin/user
      operationId: get_api_admin_view_user_application_reject
      parameters:
        - name: user_id
          in: path
          description: The user to reject
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        '200':
          description: Returns nothing on success
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to verify this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:user:application
  /api/bookmark-lists/show:
    get:
      tags:
        - bookmark_list
      operationId: get_api_bookmark_front
      parameters:
        - name: list
          in: query
          description: >-
            The list from which to retrieve the bookmarks. If not set the
            default list will be used
          required: false
          schema:
            type: string
            default: null
            nullable: true
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: The maximum age of retrieved entries
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: federation
          in: query
          description: Whether to include federated posts
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - local
            nullable: true
        - name: type
          in: query
          description: The type of entries to fetch. If set only entries will be returned
          required: false
          schema:
            type: string
            default: all
            enum:
              - article
              - link
              - image
              - video
              - all
            nullable: true
        - name: p
          in: query
          description: Page of entries to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          required: false
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
            nullable: true
      responses:
        '200':
          description: Returns the content of a bookmark list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentSchema'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The requested list does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark_list:read
  /api/bookmark-lists:
    get:
      tags:
        - bookmark_list
      operationId: get_api_bookmark_lists
      responses:
        '200':
          description: Returns all bookmark lists from the user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/BookmarkListDto'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark_list:read
  /api/bookmark-lists/{list_name}/makeDefault:
    put:
      tags:
        - bookmark_list
      operationId: put_api_bookmark_lists_make_default
      parameters:
        - name: list_name
          in: path
          description: The name of the list to be made the default
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Sets the provided list as the default
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarkListDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The requested list does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark_list:edit
  /api/bookmark-lists/{list_name}:
    put:
      tags:
        - bookmark_list
      operationId: put_api_bookmark_lists_edit_list
      parameters:
        - name: list_name
          in: path
          description: The name of the list to be edited
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookmarkListDto'
      responses:
        '200':
          description: Edits the supplied list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarkListDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The requested list does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark_list:edit
    post:
      tags:
        - bookmark_list
      operationId: post_api_bookmark_lists_add_list
      parameters:
        - name: list_name
          in: path
          description: The name of the list to be created
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Creates a list with the supplied name
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarkListDto'
        '400':
          description: The requested list already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark_list:edit
    delete:
      tags:
        - bookmark_list
      operationId: delete_api_bookmark_lists_delete_list
      parameters:
        - name: list_name
          in: path
          description: The name of the list to be deleted
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Deletes the provided list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The requested list does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark_list:delete
  /api/bos/{subject_id}/{subject_type}:
    put:
      tags:
        - bookmark
      operationId: put_api_subject_bookmark_standard
      parameters:
        - name: subject_id
          in: path
          description: The id of the subject to be added to the default list
          required: true
          schema:
            type: integer
        - name: subject_type
          in: path
          description: the type of the subject
          required: true
          schema:
            type: string
            pattern: entry|entry_comment|post|post_comment
            enum:
              - entry
              - entry_comment
              - post
              - post_comment
      responses:
        '200':
          description: Add a bookmark for the subject in the default list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarksDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The specified subject does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark:add
  /api/bol/{subject_id}/{subject_type}/{list_name}:
    put:
      tags:
        - bookmark
      operationId: put_api_subject_bookmark_to_list
      parameters:
        - name: subject_id
          in: path
          description: The id of the subject to be added to the specified list
          required: true
          schema:
            type: integer
        - name: subject_type
          in: path
          description: the type of the subject
          required: true
          schema:
            type: string
            pattern: entry|entry_comment|post|post_comment
            enum:
              - entry
              - entry_comment
              - post
              - post_comment
        - name: list_name
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Add a bookmark for the subject in the specified list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarksDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The specified subject or list does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark:add
  /api/rbo/{subject_id}/{subject_type}:
    delete:
      tags:
        - bookmark
      operationId: delete_api_subject_remove_bookmarks
      parameters:
        - name: subject_id
          in: path
          description: The id of the subject to be removed
          required: true
          schema:
            type: integer
        - name: subject_type
          in: path
          description: the type of the subject
          required: true
          schema:
            type: string
            pattern: entry|entry_comment|post|post_comment
            enum:
              - entry
              - entry_comment
              - post
              - post_comment
      responses:
        '200':
          description: Remove all bookmarks for the subject
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarksDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The specified subject does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark:remove
  /api/rbol/{subject_id}/{subject_type}/{list_name}:
    delete:
      tags:
        - bookmark
      operationId: delete_api_subject_remove_bookmark_from_list
      parameters:
        - name: subject_id
          in: path
          description: The id of the subject to be removed
          required: true
          schema:
            type: integer
        - name: subject_type
          in: path
          description: the type of the subject
          required: true
          schema:
            type: string
            pattern: entry|entry_comment|post|post_comment
            enum:
              - entry
              - entry_comment
              - post
              - post_comment
        - name: list_name
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Remove bookmark for the subject from the specified list
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarksDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The specified subject or list does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - bookmark:remove
  /api/combined:
    get:
      tags:
        - combined
      operationId: get_api_combined
      parameters:
        - name: p
          in: query
          description: Page of content to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of content items to retrieve per page
          required: false
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
            nullable: true
        - name: sort
          in: query
          description: Sort method to use when retrieving content
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: Max age of retrieved content
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: lang[]
          in: query
          description: Language(s) of content to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: >-
            A paginated list of combined entries and posts filtered by the query
            parameters
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/combined/{contentType}:
    put:
      tags:
        - combined
      operationId: put_api_combined_user
      parameters:
        - name: p
          in: query
          description: Page of content to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of content items to retrieve per page
          required: false
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
            nullable: true
        - name: sort
          in: query
          description: Sort method to use when retrieving content
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: Max age of retrieved content
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: lang[]
          in: query
          description: Language(s) of content to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
        - name: contentType
          in: path
          required: true
          schema:
            type: string
            pattern: subscribed|moderated|favourited
            enum:
              - subscribed
              - moderated
              - favourited
      responses:
        '200':
          description: >-
            A paginated list of combined entries and posts from subscribed
            magazines and users filtered by the query parameters
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - read
  /api/domain/{domain_id}/entries:
    get:
      tags:
        - domain
      operationId: get_api_domain_entries_retrieve
      parameters:
        - name: domain_id
          in: path
          description: The domain to retrieve entries from
          required: true
          schema:
            type: integer
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: The maximum age of retrieved entries
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: p
          in: query
          description: Page of entries to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          required: false
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
            nullable: true
        - name: lang[]
          in: query
          description: Language(s) of entries to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          required: false
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Returns a paginated list of entries from a specific domain
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Domain not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/domain/{domain_id}/comments:
    get:
      tags:
        - domain
      operationId: get_api_domain_entry_comments_retrieve
      parameters:
        - name: domain_id
          in: path
          description: The domain to retrieve comments from
          required: true
          schema:
            type: integer
        - name: sort
          in: query
          description: The sorting method to use during comment fetch
          schema:
            type: string
            default: hot
            enum:
              - newest
              - top
              - hot
              - newest
              - oldest
        - name: time
          in: query
          description: The maximum age of retrieved entries
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: p
          in: query
          description: Page of comments to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of comments to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: d
          in: query
          description: Depth of comment children to retrieve
          schema:
            type: integer
            default: 10
            maximum: 25
            minimum: 0
        - name: lang[]
          in: query
          description: Language(s) of entries to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns a paginated list of comments from a specific domain
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryCommentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Domain not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/domains:
    get:
      tags:
        - domain
      operationId: get_api_domains_retrieve
      parameters:
        - name: p
          in: query
          description: Page of domains to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of domains per page
          schema:
            type: integer
            default: 100
            maximum: 100
            minimum: 1
        - name: q
          in: query
          description: Domain search term
          schema:
            type: string
      responses:
        '200':
          description: Returns a paginated list of domains
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/DomainDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/domain/{domain_id}:
    get:
      tags:
        - domain
      operationId: get_api_domain_retrieve
      parameters:
        - name: domain_id
          in: path
          description: The domain to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the Domain
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Domain not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/domains/subscribed:
    get:
      tags:
        - domain
      operationId: get_api_domains_retrieve_subscribed
      parameters:
        - name: p
          in: query
          description: Page of domains to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of domains per page
          schema:
            type: integer
            default: 100
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of subscribed domains
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/DomainDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - domain:subscribe
  /api/domains/blocked:
    get:
      tags:
        - domain
      operationId: get_api_domains_retrieve_blocked
      parameters:
        - name: p
          in: query
          description: Page of domains to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of domains per page
          schema:
            type: integer
            default: 100
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of blocked domains
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/DomainDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - domain:block
  /api/domain/{domain_id}/block:
    put:
      tags:
        - domain
      operationId: put_api_domain_block
      parameters:
        - name: domain_id
          in: path
          description: The domain to block
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Domain blocked
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Domain not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - domain:block
  /api/domain/{domain_id}/unblock:
    put:
      tags:
        - domain
      operationId: put_api_domain_unblock
      parameters:
        - name: domain_id
          in: path
          description: The domain to unblock
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Domain unblocked
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Domain not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - domain:block
  /api/domain/{domain_id}/subscribe:
    put:
      tags:
        - domain
      operationId: put_api_domain_subscribe
      parameters:
        - name: domain_id
          in: path
          description: The domain to subscribe to
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Domain subscription status updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Domain not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - domain:subscribe
  /api/domain/{domain_id}/unsubscribe:
    put:
      tags:
        - domain
      operationId: put_api_domain_unsubscribe
      parameters:
        - name: domain_id
          in: path
          description: The domain to unsubscribe from
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Domain subscription status updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Domain not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - domain:subscribe
  /api/entry/{entry_id}:
    get:
      tags:
        - entry
      operationId: get_api_entry_retrieve
      parameters:
        - name: entry_id
          in: path
          description: The entry to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the Entry
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    put:
      tags:
        - entry
      operationId: put_api_entry_update
      parameters:
        - name: entry_id
          in: path
          description: The id of the entry to update
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntryRequestDto'
      responses:
        '200':
          description: Entry updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry:edit
    delete:
      tags:
        - entry
      operationId: delete_api_entry_delete
      parameters:
        - name: entry_id
          in: path
          description: The entry to delete
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Entry deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to delete this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry:delete
  /api/entry/{entry_id}/report:
    post:
      tags:
        - entry
      operationId: post_api_entry_report
      parameters:
        - name: entry_id
          in: path
          description: The entry to report
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportRequestDto'
      responses:
        '204':
          description: Report created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You have not been authorized to report this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry:report
  /api/entry/{entry_id}/vote/{choice}:
    put:
      tags:
        - entry
      operationId: put_api_entry_vote
      parameters:
        - name: entry_id
          in: path
          description: The entry to vote upon
          required: true
          schema:
            type: integer
        - name: choice
          in: path
          description: The user's voting choice. 0 clears the user's vote.
          required: true
          schema:
            type: integer
            enum:
              - -1
              - 0
              - 1
      responses:
        '200':
          description: Entry vote changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '400':
          description: Vote choice was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry:vote
  /api/entry/{entry_id}/favourite:
    put:
      tags:
        - entry
      operationId: put_api_entry_favourite
      parameters:
        - name: entry_id
          in: path
          description: The entry to favourite
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Entry favourite status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry:vote
  /api/entries/subscribed:
    get:
      tags:
        - entry
      operationId: get_api_entries_subscribed
      parameters:
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: The maximum age of retrieved entries
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: p
          in: query
          description: Page of entries to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: Returns a list of entries from subscribed magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - read
  /api/entries/moderated:
    get:
      tags:
        - entry
      operationId: get_api_entries_moderated
      parameters:
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          required: false
          schema:
            type: string
            default: newest
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: The maximum age of retrieved entries
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: p
          in: query
          description: Page of entries to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: Returns a list of entries from moderated magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry
  /api/entries/favourited:
    get:
      tags:
        - entry
      operationId: get_api_entries_favourited
      parameters:
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          required: false
          schema:
            type: string
            default: top
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: The maximum age of retrieved entries
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: p
          in: query
          description: Page of entries to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: Returns a list of favourited entries
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry:vote
  /api/entries:
    get:
      tags:
        - entry
      operationId: get_api_entries_collection
      parameters:
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: The maximum age of retrieved entries
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: p
          in: query
          description: Page of entries to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: lang[]
          in: query
          description: Language(s) of entries to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: Returns a list of Entries
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/entry/{entry_id}/comments:
    get:
      tags:
        - entry
      operationId: get_api_entry_comments
      parameters:
        - name: entry_id
          in: path
          description: The entry to retrieve comments from
          required: true
          schema:
            type: integer
        - name: sortBy
          in: query
          description: The order to retrieve comments by
          schema:
            type: string
            default: hot
            enum:
              - newest
              - top
              - hot
              - newest
              - oldest
        - name: time
          in: query
          description: The maximum age of retrieved comments
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: p
          in: query
          description: The page of comments to retrieve
          schema:
            type: integer
            default: 1
        - name: perPage
          in: query
          description: The number of top level comments per page
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
        - name: d
          in: query
          description: The depth of comment trees retrieved
          schema:
            type: integer
            default: 10
            maximum: 25
            minimum: 0
        - name: lang[]
          in: query
          description: Language(s) of comments to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns comments from the entry
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryCommentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    post:
      tags:
        - entry_comment
      operationId: post_api_entry_comment_new
      parameters:
        - name: entry_id
          in: path
          description: Entry to which the new comment will belong
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntryCommentRequestDto'
      responses:
        '201':
          description: Comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the entry you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:create
  /api/entry/{entry_id}/comments/image:
    post:
      tags:
        - entry_comment
      operationId: post_api_entry_comment_new_image
      parameters:
        - name: entry_id
          in: path
          description: Entry to which the new comment will belong
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EntryCommentRequestDto2'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the entry you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:create
  /api/entry/{entry_id}/comments/{comment_id}/reply:
    post:
      tags:
        - entry_comment
      operationId: post_api_entry_comment_reply
      parameters:
        - name: entry_id
          in: path
          description: Entry to which the new comment will belong
          required: true
          schema:
            type: integer
        - name: comment_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntryCommentRequestDto'
      responses:
        '201':
          description: Comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the entry you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:create
  /api/entry/{entry_id}/comments/{comment_id}/reply/image:
    post:
      tags:
        - entry_comment
      operationId: post_api_entry_comment_reply_image
      parameters:
        - name: entry_id
          in: path
          description: Entry to which the new comment will belong
          required: true
          schema:
            type: integer
        - name: comment_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EntryCommentRequestDto2'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the entry you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:create
  /api/comments/{comment_id}:
    get:
      tags:
        - entry_comment
      operationId: get_api_comment_retrieve
      parameters:
        - name: comment_id
          in: path
          description: The comment to retrieve
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Comment tree depth to retrieve
          schema:
            type: integer
            default: 10
            maximum: 25
            minimum: 0
      responses:
        '200':
          description: Returns the comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
    put:
      tags:
        - entry_comment
      operationId: put_api_comment_update
      parameters:
        - name: comment_id
          in: path
          description: The id of the comment to update
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Comment tree depth to retrieve (-1 for unlimited depth)
          schema:
            type: integer
            default: -1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntryCommentRequestDto'
      responses:
        '200':
          description: Comment updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:edit
    delete:
      tags:
        - entry_comment
      operationId: delete_api_comment_delete
      parameters:
        - name: comment_id
          in: path
          description: The comment to delete
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Comment deleted successfully
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to delete this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:delete
  /api/comments/{comment_id}/report:
    post:
      tags:
        - entry_comment
      operationId: post_api_comment_report
      parameters:
        - name: comment_id
          in: path
          description: The comment to report
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportRequestDto'
      responses:
        '204':
          description: Report created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You have not been authorized to report this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:report
  /api/comments/{comment_id}/vote/{choice}:
    put:
      tags:
        - entry_comment
      operationId: put_api_comment_vote
      parameters:
        - name: comment_id
          in: path
          description: The comment to vote upon
          required: true
          schema:
            type: integer
        - name: choice
          in: path
          description: The user's voting choice. 0 clears the user's vote.
          required: true
          schema:
            type: integer
            enum:
              - -1
              - 0
              - 1
      responses:
        '200':
          description: Comment vote changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '400':
          description: Vote choice was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:vote
  /api/comments/{comment_id}/favourite:
    put:
      tags:
        - entry_comment
      operationId: put_api_comment_favourite
      parameters:
        - name: comment_id
          in: path
          description: The comment to favourite
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Comment tree depth to retrieve (-1 for unlimited depth)
          schema:
            type: integer
            default: -1
      responses:
        '200':
          description: Comment favourite status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry_comment:vote
  /api/entry/{entry_id}/activity:
    get:
      tags:
        - entry
      operationId: get_api_entry_activity
      parameters:
        - name: entry_id
          in: path
          description: The entry to query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Vote activity of the entry
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivitiesResponseDto'
        '403':
          description: You are not authorized to access this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/comments/{comment_id}/activity:
    get:
      tags:
        - entry_comment
      operationId: get_api_entry_comment_activity
      parameters:
        - name: comment_id
          in: path
          description: The comment to query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Vote activity of the comment
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivitiesResponseDto'
        '403':
          description: You are not authorized to access this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/instance:
    get:
      tags:
        - instance
      summary: Retrieve information about the instance written by the admin.
      operationId: get_api_instance_details_retrieve
      responses:
        '200':
          description: Returns the site's details
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteResponseDto'
        '401':
          description: Permission denied due to expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/remoteInstance/{domain}:
    get:
      tags:
        - admin/instance
      operationId: get_api_remote_instance_details_retrieve
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the details of a remote instance
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoteInstanceDto'
        '401':
          description: Permission denied due to expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view the details for remote instances
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Remote instance not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:federation:read
  /api/modlog:
    get:
      tags:
        - instance
      summary: Retrieve information about moderation actions taken across the instance.
      operationId: get_api_instance_modlog_retrieve
      parameters:
        - name: p
          in: query
          description: Page of moderation log to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of moderation log items to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: types[]
          in: query
          description: The types of magazine logs to retrieve
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - entry_deleted
                - entry_restored
                - entry_comment_deleted
                - entry_comment_restored
                - entry_pinned
                - entry_unpinned
                - post_deleted
                - post_restored
                - post_comment_deleted
                - post_comment_restored
                - ban
                - moderator_add
                - moderator_remove
                - entry_locked
                - entry_unlocked
                - post_locked
                - post_unlocked
            default: null
            nullable: true
      responses:
        '200':
          description: Returns the site's global moderation log
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineLogResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '404':
          description: Page not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/stats/votes:
    get:
      tags:
        - instance/stats
      summary: Retrieve the votes of the instance over time.
      operationId: get_api_instance_retrieve_votes
      parameters:
        - name: start
          in: query
          description: >-
            The start date of the window to retrieve votes in. If not provided
            defaults to 1 (resolution) ago
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: >-
            The end date of the window to retrieve votes in. If not provided
            defaults to today
          schema:
            type: string
            format: date
        - name: resolution
          in: query
          description: The size of chunks to aggregate votes in
          required: true
          schema:
            type: string
            enum:
              - all
              - year
              - month
              - day
              - hour
        - name: local
          in: query
          description: Exclude federated votes?
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: >-
            Votes by interval retrieved. These are not guaranteed to be
            continuous.
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  entry:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                  entry_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                  post:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                  post_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                type: object
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/stats/content:
    get:
      tags:
        - instance/stats
      summary: Retrieve the content stats of the instance over time.
      operationId: get_api_instance_retrieve_content
      parameters:
        - name: start
          in: query
          description: >-
            The start date of the window to retrieve submissions in. If not
            provided defaults to 1 (resolution) ago
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: >-
            The end date of the window to retrieve submissions in. If not
            provided defaults to today
          schema:
            type: string
            format: date
        - name: resolution
          in: query
          description: The size of chunks to aggregate content submissions in
          required: true
          schema:
            type: string
            enum:
              - all
              - year
              - month
              - day
              - hour
        - name: local
          in: query
          description: Exclude federated content?
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: >-
            Submissions by interval retrieved. These are not guaranteed to be
            continuous.
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  entry:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                  entry_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                  post:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                  post_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                type: object
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/defederated/v2:
    get:
      tags:
        - instance
      summary: Get de-federated instances.
      operationId: get_api_instance_retrieve_defederated_instances_v2
      responses:
        '200':
          description: >-
            Returns a list of de-federated instances and info about their server
            software
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstancesDtoV2'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/federated:
    get:
      tags:
        - instance
      summary: Get federated instances.
      operationId: get_api_instance_retrieve_federated_instances
      responses:
        '200':
          description: Returns a list of federated instances
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstancesDtoV2'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/dead:
    get:
      tags:
        - instance
      summary: Get dead instances.
      operationId: get_api_instance_retrieve_dead_instances
      responses:
        '200':
          description: Returns a list of dead instances
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstancesDtoV2'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/info:
    get:
      tags:
        - instance
      summary: >-
        Retrieve instance information (like the software name and version plus
        general website info).
      operationId: get_api_instance_retrieve_info
      responses:
        '200':
          description: Get general instance information (eg. software name and version)
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InfoSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/magazine/{magazine_id}/article:
    post:
      tags:
        - magazine
      operationId: post_api_magazine_entry_create_article
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to create the entry in
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntryRequestDto'
      responses:
        '201':
          description: Returns the created Entry
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '400':
          description: An entry must have at least one of URL, body, or image
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: >-
            Either the entry:create scope has not been granted, or the user is
            banned from the magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      deprecated: true
      security:
        - oauth2:
            - entry:create
  /api/magazine/{magazine_id}/link:
    post:
      tags:
        - magazine
      operationId: post_api_magazine_entry_create_link
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to create the entry in
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntryRequestDto2'
      responses:
        '201':
          description: Returns the created Entry
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '400':
          description: An entry must have at least one of URL, body, or image
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: >-
            Either the entry:create scope has not been granted, or the user is
            banned from the magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      deprecated: true
      security:
        - oauth2:
            - entry:create
  /api/magazine/{magazine_id}/image:
    post:
      tags:
        - magazine
      operationId: post_api_magazine_entry_create_image
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to create the entry in
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EntryRequestDto3'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Returns the created image entry
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '400':
          description: Image was too large, not provided, or is not an acceptable file type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: >-
            Either the entry:create scope has not been granted, or the user is
            banned from the magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      deprecated: true
      security:
        - oauth2:
            - entry:create
  /api/magazine/{magazine_id}/entries:
    get:
      tags:
        - magazine
      operationId: get_api_magazine_entries_retrieve
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to retrieve entries from
          required: true
          schema:
            type: integer
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: The maximum age of retrieved entries
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: p
          in: query
          description: Page of entries to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          required: false
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
            nullable: true
        - name: lang[]
          in: query
          description: Language(s) of entries to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          required: false
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Returns a paginated list of Entries
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    post:
      tags:
        - magazine
      operationId: post_api_magazine_entry_create
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to create the entry in
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EntryRequestDto4'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Returns the created entry
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '400':
          description: >-
            An entry must have at least one of URL, body, or image; Image was
            too large or is not an acceptable file type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: >-
            Either the entry:create scope has not been granted, or the user is
            banned from the magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - entry:create
  /api/magazine/{magazine_id}/posts:
    get:
      tags:
        - magazine
      operationId: get_api_magazine_posts_retrieve
      parameters:
        - name: magazine_id
          in: path
          description: Magazine to retrieve posts from
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of posts to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of posts to retrieve per page
          required: false
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
            nullable: true
        - name: sort
          in: query
          description: Sort method to use when retrieving posts
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: Max age of retrieved posts
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: lang[]
          in: query
          description: Language(s) of posts to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: A paginated list of posts from the magazine
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    post:
      tags:
        - magazine
      operationId: post_api_magazine_posts_create
      parameters:
        - name: magazine_id
          in: path
          description: >-
            The magazine to create the post in. Use the id of the "random"
            magazine to submit posts which should not be posted to a specific
            magazine.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostRequestDto'
      responses:
        '201':
          description: Post created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: Banned from magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:create
  /api/magazine/{magazine_id}/posts/image:
    post:
      tags:
        - magazine
      operationId: post_api_magazine_posts_create_image
      parameters:
        - name: magazine_id
          in: path
          description: >-
            The magazine to create the post in. Use the id of the "random"
            magazine to submit posts which should not be posted to a specific
            magazine.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PostRequestDto2'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Post created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: Banned from magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:create
  /api/magazines:
    get:
      tags:
        - magazine
      operationId: get_api_magazines_retrieve
      parameters:
        - name: p
          in: query
          description: Page of magazines to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of magazines per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
        - name: q
          in: query
          description: Magazine search term
          schema:
            type: string
        - name: sort
          in: query
          description: Sort method to use when retrieving magazines
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - ownerLastActive
        - name: federation
          in: query
          description: What type of federated magazines to retrieve
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
        - name: hide_adult
          in: query
          description: Options for retrieving adult magazines
          schema:
            type: string
            default: hide
            enum:
              - hide
              - show
              - only
        - name: abandoned
          in: query
          description: >-
            Options for retrieving abandoned magazines (federation must be
            'local')
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns a paginated list of magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/magazines/subscribed:
    get:
      tags:
        - magazine
      operationId: get_api_magazines_retrieve_subscribed
      parameters:
        - name: p
          in: query
          description: Page of magazines to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of magazines per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of subscribed magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:subscribe
  /api/magazines/moderated:
    get:
      tags:
        - magazine
      operationId: get_api_magazines_retrieve_moderated
      parameters:
        - name: p
          in: query
          description: Page of magazines to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of magazines per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of moderated magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:list
  /api/magazines/blocked:
    get:
      tags:
        - magazine
      operationId: get_api_magazines_retrieve_blocked
      parameters:
        - name: p
          in: query
          description: Page of magazines to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of magazines per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of blocked magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:block
  /api/magazine/{magazine_id}:
    get:
      tags:
        - magazine
      operationId: get_api_magazine_retrieve
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the Magazine
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/magazine/name/{magazine_name}:
    get:
      tags:
        - magazine
      operationId: get_api_magazine_retrieve_by_name
      parameters:
        - name: magazine_name
          in: path
          description: The magazine to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the magazine for the given name
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/magazine/{magazine_id}/block:
    put:
      tags:
        - magazine
      operationId: put_api_magazine_block
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to block
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Magazine blocked
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:block
  /api/magazine/{magazine_id}/unblock:
    put:
      tags:
        - magazine
      operationId: put_api_magazine_unblock
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to unblock
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Magazine unblocked
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:block
  /api/magazine/{magazine_id}/subscribe:
    put:
      tags:
        - magazine
      operationId: put_api_magazine_subscribe
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to subscribe to
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Magazine subscription status updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:subscribe
  /api/magazine/{magazine_id}/unsubscribe:
    put:
      tags:
        - magazine
      operationId: put_api_magazine_unsubscribe
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to unsubscribe from
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Magazine subscription status updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:subscribe
  /api/moderate/magazine/new:
    post:
      tags:
        - moderation/magazine/owner
      operationId: post_api_magazine_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MagazineRequestDto'
      responses:
        '201':
          description: Magazine created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:create
  /api/moderate/magazine/{magazine_id}:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_magazine_update
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MagazineUpdateRequestDto'
      responses:
        '200':
          description: Magazine updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '400':
          description: Update parameters were invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:update
    delete:
      tags:
        - moderation/magazine/owner
      operationId: delete_api_magazine_delete
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to delete
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Magazine deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to delete this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:delete
  /api/magazine/{magazine_id}/theme:
    get:
      tags:
        - magazine
      summary: Retrieve the magazine's theme.
      operationId: get_api_magazine_theme
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to retrieve the theme from
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Theme retrieved
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineThemeResponseDto'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/magazine/{magazine_id}/log:
    get:
      tags:
        - magazine
      summary: Retrieve information about moderation actions taken in the magazine.
      operationId: get_api_magazine_modlog
      parameters:
        - name: magazine_id
          in: path
          description: Magazine to get mod log from
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of moderation log to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of moderation log items to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: types[]
          in: query
          description: The types of magazine logs to retrieve
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - entry_deleted
                - entry_restored
                - entry_comment_deleted
                - entry_comment_restored
                - entry_pinned
                - entry_unpinned
                - post_deleted
                - post_restored
                - post_comment_deleted
                - post_comment_restored
                - ban
                - moderator_add
                - moderator_remove
                - entry_locked
                - entry_unlocked
                - post_locked
                - post_unlocked
            default: null
            nullable: true
      responses:
        '200':
          description: Returns the magazine's moderation log
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineLogResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Page not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/moderate/magazine/{magazine_id}/modRequest/toggle:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_magazine_modrequest_toggle
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to apply for mod to
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Moderator request created or deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToggleCreatedDto'
        '401':
          description: >-
            Permission denied due to missing or expired token or the magazine is
            not local
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:subscribe
  /api/moderate/magazine/{magazine_id}/modRequest/accept/{user_id}:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_magazine_modrequest_accept
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to manage
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The user to accept
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Moderator request was accepted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: >-
            Permission denied due to missing or expired token or you are no
            admin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: mod request not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:moderate
  /api/moderate/magazine/{magazine_id}/modRequest/reject/{user_id}:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_magazine_modrequest_reject
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to manage
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The user to reject
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Moderator request was rejected
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: >-
            Permission denied due to missing or expired token or you are no
            admin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: mod request not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:moderate
  /api/moderate/modRequest/list:
    get:
      tags:
        - moderation/magazine/owner
      operationId: get_api_magazine_modrequest_list
      parameters:
        - name: magazine
          in: query
          description: The magazine to filter for
          required: false
          schema:
            type: integer
            nullable: true
      responses:
        '200':
          description: returns a list of moderator requests with user and magazine
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: >-
            Permission denied due to missing or expired token or you are no
            admin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found or id was invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:moderate
  /api/moderate/magazine/{magazine_id}/ownerRequest/toggle:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_magazine_ownerrequest_toggle
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to apply for owner to
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Owner request created or deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToggleCreatedDto'
        '401':
          description: >-
            Permission denied due to missing or expired token or the magazine is
            not local
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:subscribe
  /api/moderate/magazine/{magazine_id}/ownerRequest/accept/{user_id}:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_magazine_ownerrequest_accept
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to manage
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The user to reject
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Ownership request was accepted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: >-
            Permission denied due to missing or expired token or you are no
            admin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: owner request not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:moderate
  /api/moderate/magazine/{magazine_id}/ownerRequest/reject/{user_id}:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_magazine_ownerrequest_reject
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to manage
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The user to reject
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Moderator request was rejected
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: >-
            Permission denied due to missing or expired token or you are no
            admin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: owner request not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:moderate
  /api/moderate/ownerRequest/list:
    get:
      tags:
        - moderation/magazine/owner
      operationId: get_api_magazine_ownerrequest_list
      parameters:
        - name: magazine
          in: query
          description: The magazine filter for
          required: false
          schema:
            type: integer
            nullable: true
      responses:
        '200':
          description: returns a list of ownership requests with user and magazine
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: >-
            Permission denied due to missing or expired token or you are no
            admin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Magazine not found or id was invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - admin:magazine:moderate
  /api/messages/{message_id}:
    get:
      tags:
        - message
      operationId: get_api_message_retrieve
      parameters:
        - name: message_id
          in: path
          description: The message to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the Message
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Message not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:message:read
  /api/messages/{message_id}/read:
    put:
      tags:
        - message
      operationId: put_api_message_read
      parameters:
        - name: message_id
          in: path
          description: The message to read
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Marks the message as read
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Message not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:message:read
  /api/messages/{message_id}/unread:
    put:
      tags:
        - message
      operationId: put_api_message_unread
      parameters:
        - name: message_id
          in: path
          description: The message to mark as new
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Marks the message as new
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Message not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:message:read
  /api/messages:
    get:
      tags:
        - message
      operationId: get_api_message_retrieve_threads
      parameters:
        - name: p
          in: query
          description: Page of messages to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of messages per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: d
          in: query
          description: Number of replies per thread
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 0
      responses:
        '200':
          description: Returns a paginated list of message threads for the current user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MessageThreadResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:message:read
  /api/messages/thread/{thread_id}/reply:
    post:
      tags:
        - message
      operationId: post_api_message_create_reply
      parameters:
        - name: thread_id
          in: path
          description: Thread being replied to
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Number of replies returned
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MessageDto'
      responses:
        '201':
          description: Message reply added
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageThreadResponseDto'
        '400':
          description: The request body was invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to message in thread
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:message:create
  /api/messages/thread/{thread_id}/{sort}:
    get:
      tags:
        - message
      operationId: get_api_message_retrieve_thread
      parameters:
        - name: thread_id
          in: path
          description: Thread from which to retrieve messages
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of messages to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of messages per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: sort
          in: path
          description: Order to retrieve messages by
          required: true
          schema:
            type: string
            default: newest
            enum:
              - newest
              - oldest
      responses:
        '200':
          description: Returns a paginated list of messages in a thread
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MessageResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                  participants:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to view the messages in this thread
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Page not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:message:read
  /api/users/{user_id}/message:
    post:
      tags:
        - message
      operationId: post_api_message_create_thread
      parameters:
        - name: user_id
          in: path
          description: User being messaged
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Number of replies returned
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MessageDto'
      responses:
        '201':
          description: Message thread created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageThreadResponseDto'
        '400':
          description: The request body was invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to message this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:message:create
  /api/moderate/entry/{entry_id}/pin:
    put:
      tags:
        - moderation/entry
      operationId: put_api_moderate_entry_toggle_pin
      parameters:
        - name: entry_id
          in: path
          description: The entry to pin or unpin
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Entry pin status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to pin this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry:pin
  /api/moderate/entry/{entry_id}/lock:
    put:
      tags:
        - moderation/entry
      operationId: put_api_moderate_entry_toggle_lock
      parameters:
        - name: entry_id
          in: path
          description: The entry to lock or unlock
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Entry lock status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to lock this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry:lock
  /api/moderate/entry/{entry_id}/trash:
    put:
      tags:
        - moderation/entry
      operationId: put_api_moderate_entry_trash
      parameters:
        - name: entry_id
          in: path
          description: The entry to trash
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Entry trashed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to trash this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry:trash
  /api/moderate/entry/{entry_id}/restore:
    put:
      tags:
        - moderation/entry
      operationId: put_api_moderate_entry_restore
      parameters:
        - name: entry_id
          in: path
          description: The entry to restore
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Entry restored
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '400':
          description: The entry was not in the trashed state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to restore this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry:trash
  /api/moderate/entry/{entry_id}/adult/{adult}:
    put:
      tags:
        - moderation/entry
      operationId: put_api_moderate_entry_set_adult
      parameters:
        - name: entry_id
          in: path
          description: The entry to set adult status on
          required: true
          schema:
            type: integer
        - name: adult
          in: path
          description: new isAdult status
          required: true
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: Entry isAdult status set
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry:set_adult
  /api/moderate/entry/{entry_id}/{lang}:
    put:
      tags:
        - moderation/entry
      operationId: put_api_moderate_entry_set_lang
      parameters:
        - name: entry_id
          in: path
          description: The entry to change language of
          required: true
          schema:
            type: integer
        - name: lang
          in: path
          description: new language
          required: true
          schema:
            type: string
            maxLength: 3
            minLength: 2
      responses:
        '200':
          description: Entry language changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
        '400':
          description: Given language is not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Entry not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry:language
  /api/moderate/comment/{comment_id}/trash:
    put:
      tags:
        - moderation/entry_comment
      operationId: put_api_moderate_comment_trash
      parameters:
        - name: comment_id
          in: path
          description: The comment to trash
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Comment trashed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to trash this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry_comment:trash
  /api/moderate/comment/{comment_id}/restore:
    put:
      tags:
        - moderation/entry_comment
      operationId: put_api_moderate_comment_restore
      parameters:
        - name: comment_id
          in: path
          description: The comment to restore
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Comment restored
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '400':
          description: The comment was not in the trashed state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to restore this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry_comment:trash
  /api/moderate/comment/{comment_id}/adult/{adult}:
    put:
      tags:
        - moderation/entry_comment
      operationId: put_api_moderate_comment_set_adult
      parameters:
        - name: comment_id
          in: path
          description: The comment to set adult status on
          required: true
          schema:
            type: integer
        - name: adult
          in: path
          description: new isAdult status
          required: true
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: Comment isAdult status set
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry_comment:set_adult
  /api/moderate/comment/{comment_id}/{lang}:
    put:
      tags:
        - moderation/entry_comment
      operationId: put_api_moderate_comment_set_lang
      parameters:
        - name: comment_id
          in: path
          description: The comment to change language of
          required: true
          schema:
            type: integer
        - name: lang
          in: path
          description: new language
          required: true
          schema:
            type: string
            maxLength: 3
            minLength: 2
      responses:
        '200':
          description: Comment language changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCommentResponseDto'
        '400':
          description: Given language is not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:entry_comment:language
  /api/moderate/post/{post_id}/pin:
    put:
      tags:
        - moderation/post
      operationId: put_api_moderate_post_toggle_pin
      parameters:
        - name: post_id
          in: path
          description: The post to pin or unpin
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Post pin status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to pin this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post:pin
  /api/moderate/post/{post_id}/lock:
    put:
      tags:
        - moderation/post
      operationId: put_api_moderate_post_toggle_lock
      parameters:
        - name: post_id
          in: path
          description: The post to lock or unlock
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Post lock status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to lock this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post:lock
  /api/moderate/post/{post_id}/trash:
    put:
      tags:
        - moderation/post
      operationId: put_api_moderate_post_trash
      parameters:
        - name: post_id
          in: path
          description: The post to trash
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Post trashed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to trash this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post:trash
  /api/moderate/post/{post_id}/restore:
    put:
      tags:
        - moderation/post
      operationId: put_api_moderate_post_restore
      parameters:
        - name: post_id
          in: path
          description: The post to restore
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Post restored
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '400':
          description: The post was not in the trashed state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to restore this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post:trash
  /api/moderate/post/{post_id}/adult/{adult}:
    put:
      tags:
        - moderation/post
      operationId: put_api_moderate_post_set_adult
      parameters:
        - name: post_id
          in: path
          description: The post to set adult status on
          required: true
          schema:
            type: integer
        - name: adult
          in: path
          description: new isAdult status
          required: true
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: Post isAdult status set
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post:set_adult
  /api/moderate/post/{post_id}/{lang}:
    put:
      tags:
        - moderation/post
      operationId: put_api_moderate_post_set_lang
      parameters:
        - name: post_id
          in: path
          description: The post to change language of
          required: true
          schema:
            type: integer
        - name: lang
          in: path
          description: new language
          required: true
          schema:
            type: string
            maxLength: 3
            minLength: 2
      responses:
        '200':
          description: Post language changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '400':
          description: Given language is not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post:language
  /api/moderate/post-comment/{comment_id}/trash:
    put:
      tags:
        - moderation/post_comment
      operationId: put_api_moderate_post_comment_trash
      parameters:
        - name: comment_id
          in: path
          description: The comment to trash
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Comment trashed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to trash this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post_comment:trash
  /api/moderate/post-comment/{comment_id}/restore:
    put:
      tags:
        - moderation/post_comment
      operationId: put_api_moderate_post_comment_restore
      parameters:
        - name: comment_id
          in: path
          description: The comment to restore
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Comment restored
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '400':
          description: The comment was not in the trashed state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to restore this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post_comment:trash
  /api/moderate/post-comment/{comment_id}/adult/{adult}:
    put:
      tags:
        - moderation/post_comment
      operationId: put_api_moderate_post_comment_set_adult
      parameters:
        - name: comment_id
          in: path
          description: The comment to set adult status on
          required: true
          schema:
            type: integer
        - name: adult
          in: path
          description: new isAdult status
          required: true
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: Comment isAdult status set
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post_comment:set_adult
  /api/moderate/post-comment/{comment_id}/{lang}:
    put:
      tags:
        - moderation/post_comment
      operationId: put_api_moderate_post_comment_set_lang
      parameters:
        - name: comment_id
          in: path
          description: The comment to change language of
          required: true
          schema:
            type: integer
        - name: lang
          in: path
          description: new language
          required: true
          schema:
            type: string
            maxLength: 3
            minLength: 2
      responses:
        '200':
          description: Comment language changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '400':
          description: Given language is not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to moderate this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post_comment:language
  /api/moderate/magazine/{magazine_id}/ban/{user_id}:
    post:
      tags:
        - moderation/magazine
      summary: Create a new magazine ban for a user.
      operationId: post_api_moderate_magazine_ban_user
      parameters:
        - name: magazine_id
          in: path
          description: The magazine to ban the user in
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The user to ban
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MagazineBanDto'
      responses:
        '200':
          description: User banned
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineBanResponseDto'
        '400':
          description: The ban's body was not formatted correctly
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to ban users from this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User or magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:ban:create
    delete:
      tags:
        - moderation/magazine
      summary: Remove magazine ban from a user.
      operationId: delete_api_moderate_magazine_unban_user
      parameters:
        - name: magazine_id
          in: path
          description: The magazine the user is banned in
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The user to unban
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User unbanned
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineBanResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to unban this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: User or magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:ban:delete
  /api/moderate/magazine/{magazine_id}/mod/{user_id}:
    post:
      tags:
        - moderation/magazine/owner
      summary: Add a user as a moderator of the magazine.
      operationId: post_api_moderate_magazine_mod_user
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The id of the user to add as moderator
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Moderator added
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '400':
          description: User is already a moderator of this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:moderators
    delete:
      tags:
        - moderation/magazine/owner
      summary: Remove a moderator from the magazine.
      operationId: delete_api_moderate_magazine_unmod_user
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
        - name: user_id
          in: path
          description: The id of the user to remove as moderator
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Moderator removed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '400':
          description: User is not a moderator of this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:moderators
  /api/moderate/magazine/{magazine_id}/badge:
    post:
      tags:
        - moderation/magazine/owner
      summary: Add a badge to the magazine.
      operationId: post_api_moderate_magazine_add_badge
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BadgeDto'
      responses:
        '201':
          description: Badge created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '400':
          description: Badge name invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:badges
  /api/moderate/magazine/{magazine_id}/badge/{badge_id}:
    delete:
      tags:
        - moderation/magazine/owner
      summary: Remove a badge from the magazine.
      operationId: delete_api_moderate_magazine_remove_badge
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
        - name: badge_id
          in: path
          description: The id of the badge to delete
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Badge deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine or badge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:badges
  /api/moderate/magazine/{magazine_id}/tag/{tag}:
    post:
      tags:
        - moderation/magazine/owner
      summary: Add a tag to the magazine.
      operationId: post_api_moderate_magazine_add_tag
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
        - name: tag
          in: path
          description: The tag to add
          required: true
          schema:
            type: string
      responses:
        '201':
          description: Tag created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '400':
          description: >-
            Tag not present, does not match /^[a-z]{2,32}$/, or already exists
            on magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:tags
    delete:
      tags:
        - moderation/magazine/owner
      summary: Remove a tag from the magazine.
      operationId: delete_api_moderate_magazine_remove_tag
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
        - name: tag
          in: path
          description: The tag to remove
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tag deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine or tag not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:tags
  /api/moderate/magazine/{magazine_id}/reports/{report_id}:
    get:
      tags:
        - moderation/magazine
      operationId: get_api_moderate_magazine_retrieve_report
      parameters:
        - name: magazine_id
          in: path
          description: The magazine of the report
          required: true
          schema:
            type: integer
        - name: report_id
          in: path
          description: The report to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns a report
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to retrieve reports for this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Report not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:reports:read
  /api/moderate/magazine/{magazine_id}/reports:
    get:
      tags:
        - moderation/magazine
      operationId: get_api_moderate_magazine_retrieve_reports
      parameters:
        - name: magazine_id
          in: path
          description: Magazine to retrieve reports from
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of reports to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of reports per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
        - name: status
          in: query
          description: Filter by report status
          schema:
            type: string
            default: pending
            enum:
              - any
              - appeal
              - approved
              - closed
              - pending
              - rejected
      responses:
        '200':
          description: Returns a paginated list of reports
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ReportResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:reports:read
  /api/moderate/magazine/{magazine_id}/reports/{report_id}/accept:
    post:
      tags:
        - moderation/magazine
      summary: Accepting a report will delete the reported item.
      operationId: post_api_moderate_magazine_accept_report
      parameters:
        - name: magazine_id
          in: path
          description: The magazine the report is in
          required: true
          schema:
            type: integer
        - name: report_id
          in: path
          description: The report to accept
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Accept a report
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to accept this report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Report not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:reports:action
  /api/moderate/magazine/{magazine_id}/reports/{report_id}/reject:
    post:
      tags:
        - moderation/magazine
      summary: Rejecting a report will preserve the reported item.
      operationId: post_api_moderate_magazine_reject_report
      parameters:
        - name: magazine_id
          in: path
          description: The magazine the report is in
          required: true
          schema:
            type: integer
        - name: report_id
          in: path
          description: The report to reject
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Reject a report
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to accept this report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Report not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:reports:action
  /api/moderate/magazine/{magazine_id}/bans:
    get:
      tags:
        - moderation/magazine
      operationId: get_api_moderate_magazine_retrieve_bans
      parameters:
        - name: magazine_id
          in: path
          description: Magazine to retrieve bans from
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of bans to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of bans per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of bans
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineBanResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to view this magazine's ban list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Page number not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:ban:read
  /api/moderate/magazine/{magazine_id}/trash:
    get:
      tags:
        - moderation/magazine
      operationId: get_api_moderate_magazine_retrieve_trash
      parameters:
        - name: magazine_id
          in: path
          description: Magazine to retrieve trash from
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of trash to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of trash per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of trashed entries, posts, and comments
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentSchema'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to view this magazine's trashed items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Page number not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine:trash:read
  /api/moderate/magazine/{magazine_id}/theme:
    post:
      tags:
        - moderation/magazine/owner
      summary: Update the magazine's theme.
      operationId: post_api_moderate_magazine_set_theme
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to update
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MagazineThemeRequestDto'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Theme updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineThemeResponseDto'
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:theme
  /api/moderate/magazine/{magazine_id}/banner:
    put:
      tags:
        - moderation/magazine/owner
      operationId: put_api_moderate_magazine_set_banner
      parameters:
        - name: magazine_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ImageUploadDto'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '200':
          description: Magazine banner updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineThemeResponseDto'
        '400':
          description: The uploaded image was missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to update the magazine's banner
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:theme
  /api/moderate/magazine/{magazine_id}/icon:
    delete:
      tags:
        - moderation/magazine/owner
      summary: Update the magazine's theme.
      operationId: delete_api_moderate_magazine_delete_icon
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to remove the icon from
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Icon removed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MagazineThemeResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to delete this magazine's icon
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:theme
  /api/stats/magazine/{magazine_id}/votes:
    get:
      tags:
        - moderation/magazine/owner
      summary: Retrieve the votes of a magazine over time.
      operationId: get_api_moderate_magazine_retrieve_votes
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to retrieve stats from
          required: true
          schema:
            type: integer
        - name: start
          in: query
          description: >-
            The start date of the window to retrieve votes in. If not provided
            defaults to 1 (resolution) ago
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: >-
            The end date of the window to retrieve votes in. If not provided
            defaults to today
          schema:
            type: string
            format: date
        - name: resolution
          in: query
          description: The size of chunks to aggregate votes in
          required: true
          schema:
            type: string
            enum:
              - all
              - year
              - month
              - day
              - hour
        - name: local
          in: query
          description: Exclude federated votes?
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: >-
            Votes by interval retrieved. These are not guaranteed to be
            continuous.
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  entry:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                  entry_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                  post:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                  post_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/VoteStatsResponseDto'
                type: object
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view the stats of this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:stats
  /api/stats/magazine/{magazine_id}/content:
    get:
      tags:
        - moderation/magazine/owner
      summary: Retrieve the content stats of a magazine over time.
      operationId: get_api_moderate_magazine_retrieve_submissions
      parameters:
        - name: magazine_id
          in: path
          description: The id of the magazine to retrieve stats from
          required: true
          schema:
            type: integer
        - name: start
          in: query
          description: >-
            The start date of the window to retrieve submissions in. If not
            provided defaults to 1 (resolution) ago
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: >-
            The end date of the window to retrieve submissions in. If not
            provided defaults to today
          schema:
            type: string
            format: date
        - name: resolution
          in: query
          description: The size of chunks to aggregate content submissions in
          required: true
          schema:
            type: string
            enum:
              - all
              - year
              - month
              - day
              - hour
        - name: local
          in: query
          description: Exclude federated content?
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: >-
            Submissions by interval retrieved. These are not guaranteed to be
            continuous.
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  entry:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                  entry_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                  post:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                  post_comment:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentStatsResponseDto'
                type: object
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view the stats of this magazine
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Magazine not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:magazine_admin:stats
  /api/notifications/{notification_id}/read:
    put:
      tags:
        - notification
      operationId: put_api_notification_read
      parameters:
        - name: notification_id
          in: path
          description: The notification to read
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Marked the notification as read
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to mark this notification as read
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Notification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notifications/read:
    put:
      tags:
        - notification
      operationId: put_api_notification_read_all
      responses:
        '204':
          description: Marked all notifications as read
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to mark notifications as read
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Notification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notifications/{notification_id}/unread:
    put:
      tags:
        - notification
      operationId: put_api_notification_unread
      parameters:
        - name: notification_id
          in: path
          description: The notification to mark as new
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Marked the notification as new
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to mark this notification as new
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Notification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notifications/{notification_id}:
    delete:
      tags:
        - notification
      operationId: delete_api_notification_delete
      parameters:
        - name: notification_id
          in: path
          description: The notification to delete
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Cleared the notification
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to delete this notification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Notification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:delete
  /api/notifications:
    delete:
      tags:
        - notification
      operationId: delete_api_notification_delete_all
      responses:
        '204':
          description: Cleared all notifications
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to clear notifications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:delete
  /api/notifications/count:
    get:
      tags:
        - notification
      operationId: get_api_notification_count
      responses:
        '200':
          description: Returns the number of unread notifications for the current user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  count:
                    type: integer
                    minimum: 0
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view notification counts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notifications/{status}:
    get:
      tags:
        - notification
      operationId: get_api_notification_collection
      parameters:
        - name: p
          in: query
          description: Page of notifications to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of notifications per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: status
          in: path
          description: Notification status to retrieve
          required: true
          schema:
            type: string
            default: all
            enum:
              - all
              - new
              - read
      responses:
        '200':
          description: Returns a paginated list of notifications for the current user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/NotificationSchema'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '400':
          description: Invalid status type requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view notifications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notification/{notification_id}:
    get:
      tags:
        - notification
      operationId: get_api_notification_retrieve
      parameters:
        - name: notification_id
          in: path
          description: The notification to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the Notification
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view this notification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Notification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notification/push:
    post:
      tags:
        - notification
      summary: Register a new push subscription.
      operationId: post_api_notification_push_register
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationPushSubscriptionRequestDto'
      responses:
        '200':
          description: >-
            Created a new push subscription. If there already is a push
            subscription for this client it will be overwritten. a test
            notification will be sent right away
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to create push notifications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
    delete:
      tags:
        - notification
      summary: Delete the existing push subscription.
      operationId: delete_api_notification_push_unregister
      responses:
        '200':
          description: Deleted the existing push subscription
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to create push notifications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Notification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notification/push/test:
    post:
      tags:
        - notification
      summary: Send a test push notification.
      operationId: post_api_notification_push_test
      responses:
        '200':
          description: A test notification should arrive shortly
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not allowed to create push notifications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:read
  /api/notification/update/{targetType}/{targetId}/{setting}:
    put:
      tags:
        - notification
      operationId: put_api_notification_settings_update
      parameters:
        - name: target_id
          in: path
          description: The id of the target
          schema:
            type: integer
        - name: target_type
          in: path
          description: The type of the target
          schema:
            enum:
              - entry
              - post
              - magazine
              - user
        - name: setting
          in: path
          description: The new notification setting
          required: true
          schema:
            type: string
            pattern: Default|Loud|Muted
            enum:
              - Default
              - Loud
              - Muted
        - name: targetType
          in: path
          required: true
          schema:
            type: string
            pattern: entry|post|magazine|user
            enum:
              - entry
              - post
              - magazine
              - user
        - name: targetId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Updated the notification status
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Target not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:notification:edit
  /api/posts/subscribed:
    get:
      tags:
        - post
      operationId: get_api_posts_subscribed
      parameters:
        - name: p
          in: query
          description: Page of posts to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of posts to retrieve per page
          required: false
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
            nullable: true
        - name: sort
          in: query
          description: Sort method to use when retrieving posts
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: Max age of retrieved posts
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: lang[]
          in: query
          description: Language(s) of posts to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: A paginated list of posts from user's subscribed magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - read
  /api/posts/moderated:
    get:
      tags:
        - post
      operationId: get_api_posts_moderated
      parameters:
        - name: p
          in: query
          description: Page of posts to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of posts to retrieve per page
          required: false
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
            nullable: true
        - name: sort
          in: query
          description: Sort method to use when retrieving posts
          required: false
          schema:
            type: string
            default: newest
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: Max age of retrieved posts
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: A paginated list of posts from user's moderated magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: >-
            The client does not have permission to perform moderation actions on
            posts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - moderate:post
  /api/posts/favourited:
    get:
      tags:
        - post
      operationId: get_api_posts_favourited
      parameters:
        - name: p
          in: query
          description: Page of posts to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: perPage
          in: query
          description: Number of posts to retrieve per page
          required: false
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
            nullable: true
        - name: sort
          in: query
          description: Sort method to use when retrieving posts
          required: false
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
            nullable: true
        - name: time
          in: query
          description: Max age of retrieved posts
          required: false
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
            nullable: true
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: A paginated list of user's favourited posts
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:vote
  /api/posts:
    get:
      tags:
        - post
      operationId: get_api_posts_collection
      parameters:
        - name: p
          in: query
          description: Page of posts to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of posts to retrieve per page
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
        - name: sort
          in: query
          description: Sort method to use when retrieving posts
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
        - name: time
          in: query
          description: Max age of retrieved posts
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: lang[]
          in: query
          description: Language(s) of posts to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
        - name: federation
          in: query
          description: What type of federated entries to retrieve
          required: false
          schema:
            type: string
            default: all
            enum:
              - all
              - federated
              - local
            nullable: true
      responses:
        '200':
          description: A paginated list of posts
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/post/{post_id}:
    get:
      tags:
        - post
      operationId: get_api_post_retrieve
      parameters:
        - name: post_id
          in: path
          description: The post to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The retrieved post
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    put:
      tags:
        - post
      operationId: put_api_posts_update
      parameters:
        - name: post_id
          in: path
          description: The id of the post to update
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostRequestDto'
      responses:
        '200':
          description: Post updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:edit
    delete:
      tags:
        - post
      operationId: delete_api_posts_delete
      parameters:
        - name: post_id
          in: path
          description: The post to delete
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Post deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to delete this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:delete
  /api/post/{post_id}/report:
    post:
      tags:
        - post
      operationId: post_api_posts_report
      parameters:
        - name: post_id
          in: path
          description: The post to report
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportRequestDto'
      responses:
        '204':
          description: Report created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You have not been authorized to report this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:report
  /api/post/{post_id}/vote/{choice}:
    put:
      tags:
        - post
      operationId: put_api_posts_vote
      parameters:
        - name: post_id
          in: path
          description: The post to vote upon
          required: true
          schema:
            type: integer
        - name: choice
          in: path
          description: The user's voting choice. 0 clears the user's vote.
          required: true
          schema:
            type: integer
            default: 1
            enum:
              - -1
              - 0
              - 1
      responses:
        '200':
          description: Post vote changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '400':
          description: Vote choice was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:vote
  /api/post/{post_id}/favourite:
    put:
      tags:
        - post
      operationId: put_api_posts_favourite
      parameters:
        - name: post_id
          in: path
          description: The post to favourite
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Post favourite status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post:vote
  /api/post-comments/{comment_id}:
    get:
      tags:
        - post_comment
      operationId: get_api_post_comment_retrieve
      parameters:
        - name: comment_id
          in: path
          description: The post comment to retrieve
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Comment tree depth to retrieve
          schema:
            type: integer
            default: 10
            maximum: 25
            minimum: 0
      responses:
        '200':
          description: Returns the Post Comment
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    put:
      tags:
        - post_comment
      operationId: put_api_post_comments_update
      parameters:
        - name: comment_id
          in: path
          description: The id of the comment to update
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Comment tree depth to retrieve (-1 for unlimited depth)
          schema:
            type: integer
            default: -1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCommentRequestDto'
      responses:
        '200':
          description: Comment updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to update this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:edit
    delete:
      tags:
        - post_comment
      operationId: delete_api_post_comments_delete
      parameters:
        - name: comment_id
          in: path
          description: The comment to delete
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Comment deleted successfully
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to delete this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:delete
  /api/posts/{post_id}/comments:
    get:
      tags:
        - post
      operationId: get_api_post_comments_retrieve
      parameters:
        - name: post_id
          in: path
          description: Post to retrieve comments from
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of comments to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: d
          in: query
          description: Max depth of comment tree to retrieve
          schema:
            type: integer
            default: 10
            maximum: 25
            minimum: 0
        - name: perPage
          in: query
          description: Number of posts per page to retrieve
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
        - name: sort
          in: path
          description: Sort method to use when retrieving comments
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
        - name: time
          in: path
          description: Max age of retrieved posts
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: lang[]
          in: query
          description: Language(s) of comments to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns a paginated list of post comments
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostCommentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    post:
      tags:
        - post_comment
      operationId: post_api_post_comments_create
      parameters:
        - name: post_id
          in: path
          description: Post to which the new comment will belong
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCommentRequestDto'
      responses:
        '201':
          description: Post comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the post you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:create
  /api/posts/{post_id}/comments/image:
    post:
      tags:
        - post_comment
      operationId: post_api_post_comments_create_image
      parameters:
        - name: post_id
          in: path
          description: Post to which the new comment will belong
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PostCommentRequestDto2'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Post comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the post you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:create
  /api/posts/{post_id}/comments/{comment_id}/reply:
    post:
      tags:
        - post_comment
      operationId: post_api_post_comments_create_reply
      parameters:
        - name: post_id
          in: path
          description: Post to which the new comment will belong
          required: true
          schema:
            type: integer
        - name: comment_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCommentRequestDto'
      responses:
        '201':
          description: Post comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the post you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:create
  /api/posts/{post_id}/comments/{comment_id}/reply/image:
    post:
      tags:
        - post_comment
      operationId: post_api_post_comments_create_image_reply
      parameters:
        - name: post_id
          in: path
          description: Post to which the new comment will belong
          required: true
          schema:
            type: integer
        - name: comment_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PostCommentRequestDto2'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: Post comment created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '400':
          description: >-
            The request body was invalid or the comment you are replying to does
            not belong to the post you are trying to add the new comment to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not permitted to add comments to this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post or parent comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:create
  /api/post-comments/{comment_id}/report:
    post:
      tags:
        - post_comment
      operationId: post_api_post_comments_report
      parameters:
        - name: comment_id
          in: path
          description: The post to report
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportRequestDto'
      responses:
        '204':
          description: Report created
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You have not been authorized to report this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:report
  /api/post-comments/{comment_id}/favourite:
    put:
      tags:
        - post_comment
      operationId: put_api_post_comments_favourite
      parameters:
        - name: comment_id
          in: path
          description: The comment to favourite
          required: true
          schema:
            type: integer
        - name: d
          in: query
          description: Comment tree depth to retrieve (-1 for unlimited depth)
          schema:
            type: integer
            default: -1
      responses:
        '200':
          description: Comment favourite status toggled
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:vote
  /api/post-comments/{comment_id}/vote/{choice}:
    put:
      tags:
        - post_comment
      operationId: put_api_post_comments_vote
      parameters:
        - name: comment_id
          in: path
          description: The comment to vote upon
          required: true
          schema:
            type: integer
        - name: choice
          in: path
          description: The user's voting choice. 0 clears the user's vote.
          required: true
          schema:
            type: integer
            enum:
              - -1
              - 0
              - 1
      responses:
        '200':
          description: Comment vote changed
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCommentResponseDto'
        '400':
          description: Vote choice was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - post_comment:vote
  /api/post/{post_id}/activity:
    get:
      tags:
        - post
      operationId: get_api_post_activity
      parameters:
        - name: post_id
          in: path
          description: The post to query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Vote activity of the post
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivitiesResponseDto'
        '403':
          description: You are not authorized to access this post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/post-comments/{comment_id}/activity:
    get:
      tags:
        - post_comment
      operationId: get_api_post_comment_activity
      parameters:
        - name: comment_id
          in: path
          description: The comment to query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Vote activity of the comment
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivitiesResponseDto'
        '403':
          description: You are not authorized to access this comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Comment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/search:
    get:
      tags:
        - search
      operationId: get_api_search
      parameters:
        - name: p
          in: query
          description: Page of items to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: q
          in: query
          description: Search term
          required: true
          schema:
            type: string
        - name: authorId
          in: query
          description: User id of the author
          required: false
          schema:
            type: integer
        - name: magazineId
          in: query
          description: Id of the magazine
          required: false
          schema:
            type: integer
        - name: type
          in: query
          description: The type of content
          required: false
          schema:
            type: string
            enum:
              - ''
              - entry
              - post
      responses:
        '200':
          description: >-
            Returns a paginated list of content, along with any ActivityPub
            actors that matched the query by username, or ActivityPub objects
            that matched the query by URL. Actors and objects are not paginated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentSchema'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                  apActors:
                    type: array
                    items:
                      $ref: '#/components/schemas/SearchActorSchema'
                  apObjects:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentSchema'
                type: object
        '400':
          description: The search query parameter `q` is required!
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/client:
    post:
      tags:
        - oauth
      summary: This endpoint can create an OAuth2 client for your application.
      description: >-
        You can create a public or confidential client with any of 3 flows
        available. It's

        recommended that you pick **either** `client_credentials`, **or**
        `authorization_code` *and* `refresh_token`.


        When creating clients with the client_credentials grant type, you must
        provide a unique

        username and contact email. The username and email will be used to
        create a new bot user,

        which your client authenticates as during the client_credentials flow.
        This user will be

        tagged as a bot on all of their posts, comments, and on their profile.
        In addition, the bot

        will not be allowed to use the API to vote on content.


        If you are creating a client that will be used on a native app or
        webapp, the client

        should be marked as public. This will skip generation of a client secret
        and will require

        the client to use the PKCE (https://www.oauth.com/oauth2-servers/pkce/)
        extension during

        authorization_code flow. A public client cannot use the
        client_credentials flow. Public clients

        are recommended because apps running on user devices technically cannot
        store secrets safely -

        if they're determined enough, the user could retrieve the secret from
        their device's memory.
      operationId: post_oauth_create_client
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OAuth2ClientDto'
      responses:
        '201':
          description: >-
            Returns the created oauth2 client. Be sure to save the identifier
            and secret since these will be how you obtain tokens for the API.
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuth2ClientDto2'
        '400':
          description: >-
            Grant type(s), scope(s), redirectUri(s) were invalid, or username
            was taken
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '403':
          description: This instance only allows admins to create clients
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
    delete:
      tags:
        - oauth
      summary: >-
        This endpoint deactivates a client given their client_id and
        client_secret.
      description: >-
        This is useful if a confidential client has had their secret compromised
        and a

        new client needs to be created. A public client cannot be deleted in
        this manner

        since it does not have a secret to be compromised
      operationId: delete_oauth_delete_client
      parameters:
        - name: client_id
          in: query
          required: true
          schema:
            type: string
        - name: client_secret
          in: query
          required: true
          schema:
            type: string
      responses:
        '204':
          description: The client has been deactivated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '400':
          description: The operation does not apply to that client
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/client-with-logo:
    post:
      tags:
        - oauth
      summary: >-
        This endpoint can create an OAuth2 client with a logo for your
        application.
      description: >-
        The image uploaded to this endpoint will be shown to users on the
        consent page as your application's logo.


        You can create a public or confidential client with any of 3 flows
        available. It's

        recommended that you pick **either** `client_credentials`, **or**
        `authorization_code` *and* `refresh_token`.


        When creating clients with the client_credentials grant type, you must
        provide a unique

        username and contact email. The username and email will be used to
        create a new bot user,

        which your client authenticates as during the client_credentials flow.
        This user will be

        tagged as a bot on all of their posts, comments, and on their profile.
        In addition, the bot

        will not be allowed to use the API to vote on content.


        If you are creating a client that will be used on a native app or
        webapp, the client

        should be marked as public. This will skip generation of a client secret
        and will require

        the client to use the PKCE (https://www.oauth.com/oauth2-servers/pkce/)
        extension during

        authorization_code flow. A public client cannot use the
        client_credentials flow. Public clients

        are recommended because apps running on user devices technically cannot
        store secrets safely -

        if they're determined enough, the user could retrieve the secret from
        their device's memory.
      operationId: post_oauth_create_client_image
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/OAuth2ClientDto3'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '201':
          description: >-
            Returns the created oauth2 client. Be sure to save the identifier
            and secret since these will be how you obtain tokens for the API.
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuth2ClientDto2'
        '400':
          description: >-
            Grant type(s), scope(s), redirectUri(s) were invalid, or
            username/email was taken
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '403':
          description: This instance only allows admins to create clients
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/revoke:
    post:
      tags:
        - oauth
      summary: >-
        This API revokes any tokens associated with the authenticated user and
        client.
      operationId: post_oauth_revoke_token
      responses:
        '204':
          description: Revoked the token
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
        '403':
          description: You are not allowed to revoke this token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users:
    get:
      tags:
        - user
      operationId: get_api_users_collection
      parameters:
        - name: p
          in: query
          description: Page of users to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of users per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
        - name: group
          in: query
          description: What group of users to retrieve
          schema:
            type: string
            default: all
            enum:
              - all
              - local
              - remote
        - name: q
          in: query
          description: The term to search for
          schema:
            type: string
        - name: withAbout
          in: query
          description: Only include users with a filled in profile
          schema:
            type: boolean
      responses:
        '200':
          description: Returns a paginated list of users
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/admins:
    get:
      tags:
        - instance
      operationId: get_api_admins_collection
      responses:
        '200':
          description: Returns all instance admins
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/moderators:
    get:
      tags:
        - instance
      operationId: get_api_moderators_collection
      responses:
        '200':
          description: Returns all instance moderators
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/blocked:
    get:
      tags:
        - user
      operationId: get_api_user_blocked
      parameters:
        - name: p
          in: query
          description: Page of users to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of users per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of users blocked by the current user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:block
  /api/users/followed:
    get:
      tags:
        - user
      operationId: get_api_current_user_followed
      parameters:
        - name: p
          in: query
          description: Page of users to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of users per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of users being followed by the current user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: This user does not allow others to view the users they follow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:follow
  /api/users/followers:
    get:
      tags:
        - user
      operationId: get_api_current_user_followers
      parameters:
        - name: p
          in: query
          description: Page of users to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of users per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of users following the current user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:follow
  /api/users/me:
    get:
      tags:
        - user
      operationId: get_api_user_retrieve_self
      responses:
        '200':
          description: Returns the current user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:read
  /api/users/consents/{consent_id}:
    get:
      tags:
        - oauth
      operationId: get_api_user_retrieve_oauth_consent
      parameters:
        - name: consent_id
          in: path
          description: Client consent to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the specific OAuth2 consent
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientConsentsResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You do not have permission to view this consent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Consent not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:oauth_clients:read
    put:
      tags:
        - oauth
      summary: This API can be used to remove scopes from an oauth client.
      description: >-
        The API cannot, however, add extra scopes the user has not consented to.
        That's what the OAuth flow is for ;)

        This endpoint will not revoke any tokens that currently exist with the
        given scopes, those tokens will need to be revoked elsewhere.
      operationId: put_api_user_update_oauth_consent
      parameters:
        - name: consent_id
          in: path
          description: Client consent to update
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientConsentsRequestDto'
      responses:
        '200':
          description: Updates the consent
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientConsentsResponseDto'
        '400':
          description: The request was invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: >-
            Either you do not have permission to edit this consent, or you
            attempted to add additional consents not already granted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Consent not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:oauth_clients:edit
  /api/users/consents:
    get:
      tags:
        - oauth
      operationId: get_api_user_retrieve_oauth_consents
      parameters:
        - name: p
          in: query
          description: Page of clients to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of clients to retrieve per page
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: >-
            Returns a paginated list of OAuth2 consents given to clients by the
            user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ClientConsentsResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to view this page
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '404':
          description: Page not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:oauth_clients:read
  /api/users/profile:
    put:
      tags:
        - user
      operationId: put_api_user_update_profile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserProfileRequestDto'
      responses:
        '200':
          description: User updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:edit
  /api/users/settings:
    get:
      tags:
        - user
      operationId: get_api_user_retrieve_settings
      responses:
        '200':
          description: Returns the current user's settings
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettingsDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:read
    put:
      tags:
        - user
      operationId: put_api_user_update_settings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserSettingsDto'
      responses:
        '200':
          description: User settings updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettingsDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:edit
  /api/users/avatar:
    post:
      tags:
        - user
      operationId: post_api_user_update_avatar
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ImageUploadDto'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '200':
          description: User avatar updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '400':
          description: The uploaded image was missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to update the user's profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:edit
    delete:
      tags:
        - user
      operationId: delete_api_user_delete_avatar
      responses:
        '200':
          description: User avatar deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:edit
  /api/users/cover:
    post:
      tags:
        - user
      operationId: post_api_user_update_cover
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ImageUploadDto'
            encoding:
              uploadImage:
                contentType: >-
                  image/jpeg, image/jpg, image/gif, image/png, image/jxl,
                  image/heic, image/heif, image/webp, image/avif
      responses:
        '200':
          description: User cover updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '400':
          description: The uploaded image was missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: You are not authorized to update the user's profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:edit
    delete:
      tags:
        - user
      operationId: delete_api_user_delete_cover
      responses:
        '200':
          description: User cover deleted
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:profile:edit
  /api/users/{user_id}:
    get:
      tags:
        - user
      operationId: get_api_user_retrieve
      parameters:
        - name: user_id
          in: path
          description: The user to retrieve
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the User
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/name/{username}:
    get:
      tags:
        - user
      operationId: get_api_user_retrieve_by_name
      parameters:
        - name: username
          in: path
          description: The user to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the user by username
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/{user_id}/followed:
    get:
      tags:
        - user
      operationId: get_api_user_followed
      parameters:
        - name: user_id
          in: path
          description: User from which to retrieve followed users
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of users to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of users per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of users being followed by given user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: This user does not allow others to view the users they follow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:follow
  /api/users/{user_id}/followers:
    get:
      tags:
        - user
      operationId: get_api_user_followers
      parameters:
        - name: user_id
          in: path
          description: User from which to retrieve following users
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of users to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of users per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of users following the given user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:follow
  /api/users/{user_id}/block:
    put:
      tags:
        - user
      operationId: put_api_user_block
      parameters:
        - name: user_id
          in: path
          description: The user to block
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User blocked
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '400':
          description: You cannot block yourself
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:block
  /api/users/{user_id}/unblock:
    put:
      tags:
        - user
      operationId: put_api_user_unblock
      parameters:
        - name: user_id
          in: path
          description: The user to unblock
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User unblocked
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '400':
          description: You cannot block yourself
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:block
  /api/users/{user_id}/follow:
    put:
      tags:
        - user
      operationId: put_api_user_follow
      parameters:
        - name: user_id
          in: path
          description: The user to follow
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User follow status updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '400':
          description: You cannot follow yourself
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:follow
  /api/users/{user_id}/unfollow:
    put:
      tags:
        - user
      operationId: put_api_user_unfollow
      parameters:
        - name: user_id
          in: path
          description: The user to unfollow
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User follow status updated
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
        '400':
          description: You cannot follow yourself
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorSchema'
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - user:follow
  /api/users/{user_id}/magazines/subscriptions:
    get:
      tags:
        - user
      operationId: get_api_user_magazine_subscriptions
      parameters:
        - name: user_id
          in: path
          description: User from which to retrieve subscribed magazines
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of magazines to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of magazines per page
          schema:
            type: integer
            default: 48
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of user's subscribed magazines
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: This user does not allow others to view their subscribed magazines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - magazine:subscribe
  /api/users/{user_id}/domains/subscriptions:
    get:
      tags:
        - user
      operationId: get_api_user_domain_subscriptions
      parameters:
        - name: user_id
          in: path
          description: User from which to retrieve subscribed domains
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of domains to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of domains per page
          schema:
            type: integer
            default: 100
            maximum: 100
            minimum: 1
      responses:
        '200':
          description: Returns a paginated list of user's subscribed domains
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/DomainDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '403':
          description: This user does not allow others to view their subscribed domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
      security:
        - oauth2:
            - read
  /api/users/{user_id}/entries:
    get:
      tags:
        - user
      operationId: get_api_user_entries_retrieve
      parameters:
        - name: user_id
          in: path
          description: The user whose entries to retrieve
          required: true
          schema:
            type: integer
        - name: sort
          in: query
          description: The sorting method to use during entry fetch
          schema:
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
        - name: time
          in: query
          description: The maximum age of retrieved entries
          schema:
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: p
          in: query
          description: Page of entries to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of entries to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: lang[]
          in: query
          description: Language(s) of entries to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns a paginated list of entries from a specific user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/{user_id}/comments:
    get:
      tags:
        - user
      operationId: get_api_user_entry_comments_retrieve
      parameters:
        - name: user_id
          in: path
          description: The user whose comments should be retrieved
          required: true
          schema:
            type: integer
        - name: sort
          in: query
          description: The sorting method to use during comment fetch
          schema:
            type: string
            default: hot
            enum:
              - newest
              - top
              - hot
              - newest
              - oldest
        - name: time
          in: query
          description: The maximum age of retrieved entries
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: p
          in: query
          description: Page of comments to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of comments to retrieve per page
          schema:
            type: integer
            default: 25
            maximum: 100
            minimum: 1
        - name: d
          in: query
          description: Depth of comment children to retrieve
          schema:
            type: integer
            default: 10
            maximum: 25
            minimum: 0
        - name: lang[]
          in: query
          description: Language(s) of entries to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns a paginated list of comments from a specific user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntryCommentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/{user_id}/posts:
    get:
      tags:
        - user
      operationId: get_api_user_posts_retrieve
      parameters:
        - name: user_id
          in: path
          description: User whose posts to retrieve
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of posts to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: perPage
          in: query
          description: Number of posts to retrieve per page
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
        - name: sort
          in: query
          description: Sort method to use when retrieving posts
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
        - name: time
          in: query
          description: Max age of retrieved posts
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: lang[]
          in: query
          description: Language(s) of posts to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
              default: null
              maxLength: 3
              minLength: 2
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: A paginated list of posts from the user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/{user_id}/post-comments:
    get:
      tags:
        - user
      operationId: get_api_user_post_comments_retrieve
      parameters:
        - name: user_id
          in: path
          description: User whose comments to retrieve
          required: true
          schema:
            type: integer
        - name: p
          in: query
          description: Page of comments to retrieve
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: d
          in: query
          description: Max depth of comment tree to retrieve
          schema:
            type: integer
            default: 10
            maximum: 25
            minimum: 0
        - name: perPage
          in: query
          description: Number of posts per page to retrieve
          schema:
            type: integer
            default: 15
            maximum: 100
            minimum: 1
        - name: sort
          in: query
          description: Sort method to use when retrieving comments
          schema:
            type: string
            default: hot
            enum:
              - active
              - hot
              - newest
              - oldest
              - top
              - commented
        - name: time
          in: query
          description: Max age of retrieved posts
          schema:
            type: string
            default: ∞
            enum:
              - 3h
              - 6h
              - 12h
              - 1d
              - 1w
              - 1m
              - 1y
              - ∞
              - all
        - name: lang[]
          in: query
          description: Language(s) of comments to return
          explode: true
          allowReserved: true
          schema:
            type: array
            items:
              type: string
        - name: usePreferredLangs
          in: query
          description: >-
            Filter by a user's preferred languages? (Requires authentication and
            takes precedence over lang[])
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns a paginated list of post comments from a specific user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostCommentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: The user was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/{user_id}/content:
    get:
      tags:
        - user
      operationId: get_api_user_content_retrieve
      parameters:
        - name: hideAdult
          in: query
          description: If true exclude all adult content
          required: false
          schema:
            type: boolean
            default: false
            nullable: true
        - name: p
          in: query
          description: Page of content to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: user_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            A paginated list of combined entries, posts, comments and replies
            boosted by the given user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ExtendedContentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: user not found or you are not allowed to access them
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/{user_id}/boosts:
    get:
      tags:
        - user
      operationId: get_api_user_boosts_retrieve
      parameters:
        - name: p
          in: query
          description: Page of content to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: user_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            A paginated list of combined entries, posts, comments and replies
            boosted by the given user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ExtendedContentResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: user not found or you are not allowed to access them
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
  /api/users/{user_id}/moderatedMagazines:
    get:
      tags:
        - user
      operationId: get_api_user_moderated_retrieve
      parameters:
        - name: p
          in: query
          description: Page of content to retrieve
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
            nullable: true
        - name: user_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: A paginated list of magazines which are moderated by the given user
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MagazineSmallResponseDto'
                  pagination:
                    $ref: '#/components/schemas/PaginationSchema'
                type: object
        '401':
          description: Permission denied due to missing or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '404':
          description: user not found or you are not allowed to access them
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorSchema'
        '429':
          description: You are being rate limited
          headers:
            X-RateLimit-Remaining:
              description: Number of requests left until you will be rate limited
              schema:
                type: integer
            X-RateLimit-Retry-After:
              description: Unix timestamp to retry the request after
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Number of requests available
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorSchema'
components:
  schemas:
    BookmarkListDto:
      required:
        - name
      properties:
        name:
          description: The name of the list
          type: string
        isDefault:
          description: Whether this is the default list
          type: boolean
          default: false
        count:
          description: The total number of items in the list
          type: integer
          default: 0
      type: object
    NotificationPushSubscriptionRequestDto:
      required:
        - endpoint
        - serverKey
        - contentPublicKey
      properties:
        endpoint:
          description: >-
            The URL of the push endpoint messages will be sent to, normally
            you'll get this address when you register your application on a push
            service
          type: string
        serverKey:
          description: >-
            On web push this would be called the 'auth' key, which is used to
            authenticate the server to the push service. According to
            https://web-push-book.gauntface.com/web-push-protocol/ this is a
            'just' a 'secret'
          type: string
        contentPublicKey:
          description: >-
            The public key of your key pair (client public key), which is used
            to encrypt the content. This should be a ECDH, p256 key
          type: string
      type: object
    UnauthorizedErrorSchema:
      required:
        - type
        - title
        - status
        - detail
      properties:
        type:
          type: string
          example: https://tools.ietf.org/html/rfc2616#section-10
        title:
          type: string
          example: An error occurred
        status:
          type: integer
          example: 401
        detail:
          type: string
          example: Unauthorized
      type: object
    ForbiddenErrorSchema:
      required:
        - type
        - title
        - status
        - detail
      properties:
        type:
          type: string
          example: https://tools.ietf.org/html/rfc2616#section-10
        title:
          type: string
          example: An error occurred
        status:
          type: integer
          example: 403
        detail:
          type: string
          example: Forbidden
      type: object
    NotFoundErrorSchema:
      required:
        - type
        - title
        - status
        - detail
      properties:
        type:
          type: string
          example: https://tools.ietf.org/html/rfc2616#section-10
        title:
          type: string
          example: An error occurred
        status:
          type: integer
          example: 404
        detail:
          type: string
          example: Not Found
      type: object
    TooManyRequestsErrorSchema:
      required:
        - type
        - title
        - status
        - detail
      properties:
        type:
          type: string
          example: https://tools.ietf.org/html/rfc2616#section-10
        title:
          type: string
          example: An error occurred
        status:
          type: integer
          example: 429
        detail:
          type: string
          example: Too Many Requests
      type: object
    ImageDto:
      properties:
        filePath:
          type: string
          nullable: true
        sourceUrl:
          type: string
          nullable: true
        storageUrl:
          type: string
          nullable: true
        altText:
          type: string
          nullable: true
        width:
          type: integer
          nullable: true
        height:
          type: integer
          nullable: true
        blurHash:
          type: string
          nullable: true
      type: object
    MagazineSmallResponseDto:
      properties:
        name:
          type: string
          nullable: true
        magazineId:
          type: integer
          nullable: true
        icon:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        banner:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        isUserSubscribed:
          type: boolean
          nullable: true
        isBlockedByUser:
          type: boolean
          nullable: true
        apId:
          type: string
          nullable: true
        apProfileId:
          type: string
          nullable: true
        discoverable:
          type: boolean
          nullable: true
        indexable:
          type: boolean
          nullable: true
      type: object
    UserSmallResponseDto:
      properties:
        userId:
          type: integer
          nullable: true
        username:
          type: string
          nullable: true
        isBot:
          type: boolean
          nullable: true
        isFollowedByUser:
          type: boolean
          nullable: true
        isFollowerOfUser:
          type: boolean
          nullable: true
        isBlockedByUser:
          type: boolean
          nullable: true
        isAdmin:
          type: boolean
          nullable: true
        isGlobalModerator:
          type: boolean
          nullable: true
        avatar:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        apId:
          type: string
          nullable: true
        apProfileId:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        discoverable:
          type: boolean
          nullable: true
        indexable:
          type: boolean
          nullable: true
      type: object
    DomainDto:
      properties:
        name:
          type: string
          nullable: true
        entryCount:
          type: integer
          nullable: true
        subscriptionsCount:
          type: integer
          nullable: true
        isUserSubscribed:
          type: boolean
          nullable: true
        isBlockedByUser:
          type: boolean
          nullable: true
        domainId:
          type: integer
          nullable: true
      type: object
    BadgeResponseDto:
      properties:
        magazineId:
          type: integer
          nullable: true
        name:
          type: string
          nullable: true
        badgeId:
          type: integer
          nullable: true
      type: object
    ENotificationStatus:
      type: string
      enum:
        - Default
        - Muted
        - Loud
    EntryResponseDto:
      required:
        - entryId
        - tags
        - badges
        - numComments
        - crosspostedEntries
      properties:
        entryId:
          type: integer
        magazine:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MagazineSmallResponseDto'
        user:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        domain:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/DomainDto'
        title:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        image:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        body:
          type: string
          nullable: true
        lang:
          type: string
          example: en
          nullable: true
        tags:
          type: array
          items:
            type: string
        badges:
          description: Not implemented currently.
          type: array
          items:
            $ref: '#/components/schemas/BadgeResponseDto'
        numComments:
          type: integer
        uv:
          type: integer
          default: 0
          nullable: true
        dv:
          type: integer
          default: 0
          nullable: true
        favourites:
          type: integer
          default: 0
          nullable: true
        isFavourited:
          type: boolean
          nullable: true
        userVote:
          type: integer
          nullable: true
        isOc:
          type: boolean
          default: false
        isAdult:
          type: boolean
          default: false
        isPinned:
          type: boolean
          default: false
        isLocked:
          type: boolean
          default: false
        createdAt:
          type: string
          format: date-time
          nullable: true
        editedAt:
          type: string
          format: date-time
          nullable: true
        lastActive:
          type: string
          format: date-time
          nullable: true
        type:
          type: string
          enum:
            - article
            - link
            - image
            - video
          example: article
          nullable: true
        slug:
          type: string
          nullable: true
        apId:
          type: string
          nullable: true
        canAuthUserModerate:
          type: boolean
          nullable: true
        notificationStatus:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ENotificationStatus'
        isAuthorModeratorInMagazine:
          type: boolean
          nullable: true
        bookmarks:
          type: array
          items:
            type: string
          nullable: true
        crosspostedEntries:
          title: >-
            other entries that share either the link or the title (if that is
            longer than 10 characters).

            If this property is null it means that this endpoint does not
            contain information about it,

            only an empty array means that there are no crossposts
          type: array
          items:
            $ref: '#/components/schemas/EntryResponseDto'
        visibility:
          type: string
          default: visible
          enum:
            - private
            - trashed
            - soft_deleted
            - visible
      type: object
    UserBanResponseDto:
      required:
        - isBanned
        - username
      properties:
        isBanned:
          type: boolean
        avatar:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        cover:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        username:
          type: string
        followersCount:
          type: integer
          default: 0
        about:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        apProfileId:
          type: string
          nullable: true
        apId:
          type: string
          nullable: true
        isBot:
          type: boolean
          nullable: true
        isFollowedByUser:
          type: boolean
          nullable: true
        isFollowerOfUser:
          type: boolean
          nullable: true
        isBlockedByUser:
          type: boolean
          nullable: true
        isAdmin:
          type: boolean
          nullable: true
        isGlobalModerator:
          type: boolean
          nullable: true
        userId:
          type: integer
          nullable: true
        serverSoftware:
          type: string
          nullable: true
        serverSoftwareVersion:
          type: string
          nullable: true
        notificationStatus:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ENotificationStatus'
        indexable:
          type: boolean
          nullable: true
        reputationPoints:
          title: >-
            this will only be populated on single user retrieves, not on batch
            ones,

            because it is a costly operation
          type: integer
          nullable: true
        discoverable:
          type: boolean
          nullable: true
      type: object
    PaginationSchema:
      properties:
        count:
          description: The total number of items available
          type: integer
          default: 0
        currentPage:
          description: The current page number returned
          type: integer
          default: 0
        maxPage:
          description: The max page number available
          type: integer
          default: 0
        perPage:
          description: Max number of items per page
          type: integer
          default: 0
      type: object
    UserResponseDto:
      required:
        - username
      properties:
        avatar:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        cover:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        username:
          type: string
        followersCount:
          type: integer
          default: 0
        about:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        apProfileId:
          type: string
          nullable: true
        apId:
          type: string
          nullable: true
        isBot:
          type: boolean
          nullable: true
        isFollowedByUser:
          type: boolean
          nullable: true
        isFollowerOfUser:
          type: boolean
          nullable: true
        isBlockedByUser:
          type: boolean
          nullable: true
        isAdmin:
          type: boolean
          nullable: true
        isGlobalModerator:
          type: boolean
          nullable: true
        userId:
          type: integer
          nullable: true
        serverSoftware:
          type: string
          nullable: true
        serverSoftwareVersion:
          type: string
          nullable: true
        notificationStatus:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ENotificationStatus'
        indexable:
          type: boolean
          nullable: true
        reputationPoints:
          title: >-
            this will only be populated on single user retrieves, not on batch
            ones,

            because it is a costly operation
          type: integer
          nullable: true
        discoverable:
          type: boolean
          nullable: true
      type: object
    SettingsDto:
      required:
        - KBIN_DOMAIN
        - KBIN_TITLE
        - KBIN_META_TITLE
        - KBIN_META_KEYWORDS
        - KBIN_META_DESCRIPTION
        - KBIN_DEFAULT_LANG
        - KBIN_CONTACT_EMAIL
        - KBIN_SENDER_EMAIL
        - MBIN_DEFAULT_THEME
        - KBIN_JS_ENABLED
        - KBIN_FEDERATION_ENABLED
        - KBIN_REGISTRATIONS_ENABLED
        - KBIN_HEADER_LOGO
        - KBIN_CAPTCHA_ENABLED
        - KBIN_MERCURE_ENABLED
        - KBIN_FEDERATION_PAGE_ENABLED
        - KBIN_ADMIN_ONLY_OAUTH_CLIENTS
        - MBIN_SSO_ONLY_MODE
        - MBIN_PRIVATE_INSTANCE
        - KBIN_FEDERATED_SEARCH_ONLY_LOGGEDIN
        - MBIN_SIDEBAR_SECTIONS_RANDOM_LOCAL_ONLY
        - MBIN_SIDEBAR_SECTIONS_USERS_LOCAL_ONLY
        - MBIN_SSO_REGISTRATIONS_ENABLED
        - MBIN_RESTRICT_MAGAZINE_CREATION
        - MBIN_SSO_SHOW_FIRST
        - MBIN_DOWNVOTES_MODE
        - MBIN_NEW_USERS_NEED_APPROVAL
        - MBIN_USE_FEDERATION_ALLOW_LIST
      properties:
        KBIN_DOMAIN:
          type: string
        KBIN_TITLE:
          type: string
        KBIN_META_TITLE:
          type: string
        KBIN_META_KEYWORDS:
          type: string
        KBIN_META_DESCRIPTION:
          type: string
        KBIN_DEFAULT_LANG:
          type: string
        KBIN_CONTACT_EMAIL:
          type: string
        KBIN_SENDER_EMAIL:
          type: string
        MBIN_DEFAULT_THEME:
          type: string
        KBIN_JS_ENABLED:
          type: boolean
        KBIN_FEDERATION_ENABLED:
          type: boolean
        KBIN_REGISTRATIONS_ENABLED:
          type: boolean
        KBIN_HEADER_LOGO:
          type: boolean
        KBIN_CAPTCHA_ENABLED:
          type: boolean
        KBIN_MERCURE_ENABLED:
          type: boolean
        KBIN_FEDERATION_PAGE_ENABLED:
          type: boolean
        KBIN_ADMIN_ONLY_OAUTH_CLIENTS:
          type: boolean
        MBIN_SSO_ONLY_MODE:
          type: boolean
        MBIN_PRIVATE_INSTANCE:
          type: boolean
        KBIN_FEDERATED_SEARCH_ONLY_LOGGEDIN:
          type: boolean
        MBIN_SIDEBAR_SECTIONS_RANDOM_LOCAL_ONLY:
          type: boolean
        MBIN_SIDEBAR_SECTIONS_USERS_LOCAL_ONLY:
          type: boolean
        MBIN_SSO_REGISTRATIONS_ENABLED:
          type: boolean
        MBIN_RESTRICT_MAGAZINE_CREATION:
          type: boolean
        MBIN_SSO_SHOW_FIRST:
          type: boolean
        MBIN_DOWNVOTES_MODE:
          type: string
        MBIN_NEW_USERS_NEED_APPROVAL:
          type: boolean
        MBIN_USE_FEDERATION_ALLOW_LIST:
          type: boolean
      type: object
    BadRequestErrorSchema:
      required:
        - type
        - title
        - status
        - detail
      properties:
        type:
          type: string
          example: https://tools.ietf.org/html/rfc2616#section-10
        title:
          type: string
          example: An error occurred
        status:
          type: integer
          example: 400
        detail:
          type: string
          example: Bad Request
      type: object
    PageDto:
      required:
        - body
      properties:
        body:
          type: string
      type: object
    DownvotesMode:
      type: string
      enum:
        - disabled
        - hidden
        - enabled
    SiteResponseDto:
      properties:
        about:
          type: string
          nullable: true
        contact:
          type: string
          nullable: true
        faq:
          type: string
          nullable: true
        privacyPolicy:
          type: string
          nullable: true
        terms:
          type: string
          nullable: true
        downvotesMode:
          $ref: '#/components/schemas/DownvotesMode'
      type: object
    ClientAccessStatsResponseDto:
      properties:
        client:
          type: string
          nullable: true
        datetime:
          description: Timestamp of form 'YYYY-MM-DD HH:MM:SS' in UTC
          type: string
          nullable: true
        count:
          type: integer
          nullable: true
      type: object
    ClientResponseDto:
      required:
        - redirectUris
        - grants
        - scopes
      properties:
        identifier:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        contactEmail:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        user:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        active:
          type: boolean
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        redirectUris:
          type: array
          items:
            type: string
            format: uri
        grants:
          type: array
          items:
            type: string
        scopes:
          type: array
          items:
            type: string
      type: object
    InstancesDto:
      required:
        - instances
      properties:
        instances:
          type: array
          items:
            type: string
            format: url
      type: object
    UserSignupResponseDto:
      properties:
        userId:
          type: integer
          default: 0
        username:
          type: string
          default: ''
        isBot:
          type: boolean
          default: false
        createdAt:
          type: string
          format: date-time
          nullable: true
        email:
          type: string
          nullable: true
        applicationText:
          type: string
          nullable: true
      type: object
    EntryCommentResponseDto:
      required:
        - commentId
        - mentions
        - tags
      properties:
        commentId:
          type: integer
        user:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        magazine:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MagazineSmallResponseDto'
        entryId:
          type: integer
          nullable: true
        parentId:
          type: integer
          nullable: true
        rootId:
          type: integer
          nullable: true
        image:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        body:
          type: string
          nullable: true
        lang:
          type: string
          example: en
          nullable: true
        mentions:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            type: string
        uv:
          type: integer
          default: 0
          nullable: true
        dv:
          type: integer
          default: 0
          nullable: true
        favourites:
          type: integer
          default: 0
          nullable: true
        isFavourited:
          type: boolean
          nullable: true
        userVote:
          type: integer
          nullable: true
        isAdult:
          type: boolean
          default: false
        createdAt:
          type: string
          format: date-time
          nullable: true
        editedAt:
          type: string
          format: date-time
          nullable: true
        lastActive:
          type: string
          format: date-time
          nullable: true
        apId:
          type: string
          nullable: true
        children:
          description: Array of comments
          type: array
          items:
            $ref: '#/components/schemas/EntryCommentResponseDto'
          default: []
          example:
            - commentid: 0
              user:
                userId: 0
                username: test
              magazine:
                magazineId: 0
                name: test
              entryId: 0
              parentId: 0
              rootId: 0
              image:
                filePath: x/y/z.png
                width: 3000
                height: 4000
              body: string
              lang: en
              isAdult: false
              uv: 0
              dv: 0
              favourites: 0
              visibility: visible
              apId: string
              mentions:
                - '@user@instance'
              tags:
                - string
              createdAt: '2023-06-18 11:59:41-07:00'
              editedAt: '2023-06-18 11:59:41-07:00'
              lastActive: '2023-06-18 12:00:45-07:00'
              childCount: 0
              children: []
        childCount:
          description: The total number of children the comment has.
          type: integer
          default: 0
        canAuthUserModerate:
          type: boolean
          nullable: true
        bookmarks:
          type: array
          items:
            type: string
          nullable: true
        isAuthorModeratorInMagazine:
          type: boolean
          nullable: true
        visibility:
          type: string
          default: visible
          enum:
            - private
            - trashed
            - soft_deleted
            - visible
      type: object
    PostResponseDto:
      required:
        - postId
        - tags
        - mentions
      properties:
        postId:
          type: integer
        user:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        magazine:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MagazineSmallResponseDto'
        image:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        body:
          type: string
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
        isPinned:
          type: boolean
          default: false
        isLocked:
          type: boolean
          default: false
        slug:
          type: string
          nullable: true
        comments:
          type: integer
          default: 0
        uv:
          type: integer
          default: 0
          nullable: true
        dv:
          type: integer
          default: 0
          nullable: true
        favourites:
          type: integer
          default: 0
          nullable: true
        isFavourited:
          type: boolean
          nullable: true
        userVote:
          type: integer
          nullable: true
        tags:
          type: array
          items:
            type: string
        mentions:
          type: array
          items:
            type: string
        apId:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        editedAt:
          type: string
          format: date-time
          nullable: true
        lastActive:
          type: string
          format: date-time
          nullable: true
        canAuthUserModerate:
          type: boolean
          nullable: true
        notificationStatus:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ENotificationStatus'
        bookmarks:
          type: array
          items:
            type: string
          nullable: true
        isAuthorModeratorInMagazine:
          type: boolean
          nullable: true
        visibility:
          type: string
          default: visible
          enum:
            - private
            - trashed
            - soft_deleted
            - visible
      type: object
    PostCommentResponseDto:
      required:
        - commentId
        - mentions
        - tags
      properties:
        commentId:
          type: integer
        user:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        magazine:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MagazineSmallResponseDto'
        postId:
          type: integer
          nullable: true
        parentId:
          type: integer
          nullable: true
        rootId:
          type: integer
          nullable: true
        image:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        body:
          type: string
          nullable: true
        lang:
          type: string
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
        uv:
          type: integer
          default: 0
          nullable: true
        dv:
          type: integer
          default: 0
          nullable: true
        favourites:
          type: integer
          default: 0
          nullable: true
        isFavourited:
          type: boolean
          nullable: true
        userVote:
          type: integer
          nullable: true
        apId:
          type: string
          nullable: true
        mentions:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        editedAt:
          type: string
          format: date-time
          nullable: true
        lastActive:
          type: string
          format: date-time
          nullable: true
        childCount:
          type: integer
          default: 0
        children:
          description: Array of comments
          type: array
          items:
            $ref: '#/components/schemas/PostCommentResponseDto'
          default: []
          example:
            - commentId: 0
              userId: 0
              magazineId: 0
              postId: 0
              parentId: 0
              rootId: 0
              image:
                filePath: x/y/z.png
                width: 3000
                height: 4000
              body: comment body
              lang: en
              isAdult: false
              uv: 0
              dv: 0
              favourites: 0
              visibility: visible
              apId: string
              mentions:
                - '@user@instance'
              tags:
                - sometag
              createdAt: '2023-06-18 11:59:41+00:00'
              lastActive: '2023-06-18 12:00:45+00:00'
              childCount: 0
              children: []
        canAuthUserModerate:
          type: boolean
          nullable: true
        isAuthorModeratorInMagazine:
          type: boolean
          nullable: true
        bookmarks:
          type: array
          items:
            type: string
          nullable: true
        visibility:
          type: string
          default: visible
          enum:
            - private
            - trashed
            - soft_deleted
            - visible
      type: object
    ContentSchema:
      required:
        - itemType
      properties:
        itemType:
          type: string
          enum:
            - entry
            - entry_comment
            - post
            - post_comment
          example: string
      type: object
      anyOf:
        - $ref: '#/components/schemas/EntryResponseDto'
        - $ref: '#/components/schemas/EntryCommentResponseDto'
        - $ref: '#/components/schemas/PostResponseDto'
        - $ref: '#/components/schemas/PostCommentResponseDto'
    BookmarksDto:
      properties:
        bookmarks:
          type: array
          items:
            type: string
          nullable: true
      type: object
    ContentResponseDto:
      properties:
        entry:
          default: null
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/EntryResponseDto'
        post:
          default: null
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/PostResponseDto'
      type: object
    EntryRequestDto:
      required:
        - title
      properties:
        title:
          type: string
          example: Posted from the API!
          nullable: true
        tags:
          type: array
          items:
            type: string
          example:
            - cat
            - blep
            - cute
          nullable: true
        isOc:
          type: boolean
          default: false
          example: false
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
      type: object
    ReportRequestDto:
      properties:
        reason:
          type: string
          nullable: true
      type: object
    EntryCommentRequestDto:
      properties:
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
      type: object
    EntryCommentRequestDto2:
      properties:
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
        alt:
          type: string
          nullable: true
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    ActivitiesResponseDto:
      properties:
        boosts:
          description: >-
            null if the user is not allowed to access the data or it is not
            supported by the subject
          type: array
          items:
            type: App\DTO\UserSmallResponseDto
          nullable: true
        upvotes:
          description: >-
            null if the user is not allowed to access the data or it is not
            supported by the subject
          type: array
          items:
            type: App\DTO\UserSmallResponseDto
          nullable: true
        downvotes:
          description: >-
            null if the user is not allowed to access the data or it is not
            supported by the subject
          type: array
          items:
            type: App\DTO\UserSmallResponseDto
          nullable: true
      type: object
    RemoteInstanceDto:
      required:
        - domain
        - id
        - magazines
        - users
        - failedDelivers
        - isBanned
        - isExplicitlyAllowed
        - ourUserFollows
        - theirUserFollows
        - ourSubscriptions
        - theirSubscriptions
      properties:
        domain:
          type: string
        id:
          type: integer
        magazines:
          type: integer
        users:
          type: integer
        software:
          type: string
          nullable: true
        version:
          type: string
          nullable: true
        lastSuccessfulDeliver:
          type: string
          format: date-time
          nullable: true
        lastFailedDeliver:
          type: string
          format: date-time
          nullable: true
        lastSuccessfulReceive:
          type: string
          format: date-time
          nullable: true
        failedDelivers:
          type: integer
        isBanned:
          type: boolean
        isExplicitlyAllowed:
          type: boolean
        ourUserFollows:
          description: Amount of users from our instance following users on their instance
          type: integer
        theirUserFollows:
          description: Amount of users from their instance following users on our instance
          type: integer
        ourSubscriptions:
          description: >-
            Amount of users on our instance subscribed to magazines from their
            instance
          type: integer
        theirSubscriptions:
          description: >-
            Amount of users from their instance subscribed to magazines on our
            instance
          type: integer
      type: object
    MagazineBanResponseDto:
      required:
        - expired
      properties:
        banId:
          type: integer
          nullable: true
        reason:
          type: string
          nullable: true
        expiredAt:
          type: string
          format: date-time
          nullable: true
        magazine:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MagazineSmallResponseDto'
        bannedUser:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        bannedBy:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        expired:
          type: boolean
      type: object
    MagazineLogResponseDto:
      properties:
        type:
          type: string
          enum:
            - log_entry_deleted
            - log_entry_restored
            - log_entry_comment_deleted
            - log_entry_comment_restored
            - log_post_deleted
            - log_post_restored
            - log_post_comment_deleted
            - log_post_comment_restored
            - log_ban
            - log_unban
            - log_entry_pinned
            - log_entry_unpinned
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        magazine:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MagazineSmallResponseDto'
        moderator:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        subject:
          title: >-
            The type of the subject is depended on the type of the log entry:

            - EntryResponseDto when type is 'log_entry_deleted',
            'log_entry_restored', 'log_entry_pinned' or 'log_entry_unpinned'

            - EntryCommentResponseDto when type is 'log_entry_comment_deleted'
            or 'log_entry_comment_restored'

            - PostResponseDto when type is 'log_post_deleted' or
            'log_post_restored'

            - PostCommentResponseDto when type is 'log_post_comment_deleted' or
            'log_post_comment_restored'

            - MagazineBanResponseDto when type is 'log_ban' or 'log_unban'

            - UserSmallResponseDto when type is 'log_moderator_add' or
            'log_moderator_remove'
          nullable: true
          oneOf:
            - nullable: true
              oneOf:
                - $ref: '#/components/schemas/EntryResponseDto'
            - nullable: true
              oneOf:
                - $ref: '#/components/schemas/EntryCommentResponseDto'
            - nullable: true
              oneOf:
                - $ref: '#/components/schemas/PostResponseDto'
            - nullable: true
              oneOf:
                - $ref: '#/components/schemas/PostCommentResponseDto'
            - nullable: true
              oneOf:
                - $ref: '#/components/schemas/MagazineBanResponseDto'
            - nullable: true
              oneOf:
                - $ref: '#/components/schemas/UserSmallResponseDto'
      type: object
    VoteStatsResponseDto:
      properties:
        datetime:
          type: string
          nullable: true
        boost:
          type: integer
          nullable: true
        down:
          type: integer
          nullable: true
        up:
          type: integer
          nullable: true
      type: object
    ContentStatsResponseDto:
      properties:
        datetime:
          type: string
          nullable: true
        count:
          type: integer
          nullable: true
      type: object
    InstanceDto:
      required:
        - domain
      properties:
        domain:
          description: the domain of the instance
          type: string
          example: instance.tld
        software:
          description: the software the instance is running on
          type: string
          default: null
          example: mbin
          nullable: true
        version:
          description: the version of the software
          type: string
          default: null
          example: 1.6.0
          nullable: true
      type: object
    InstancesDtoV2:
      required:
        - instances
      properties:
        instances:
          type: array
          items:
            $ref: '#/components/schemas/InstanceDto'
      type: object
    InfoSchema:
      required:
        - softwareName
        - softwareVersion
        - softwareRepository
        - websiteDomain
        - websiteContactEmail
        - websiteTitle
        - websiteOpenRegistrations
        - websiteFederationEnabled
        - websiteDefaultLang
      properties:
        softwareName:
          type: string
          example: mbin
        softwareVersion:
          type: string
          example: 2.0.0
        softwareRepository:
          type: string
          example: https://github.com/MbinOrg/mbin
        websiteDomain:
          type: string
          example: https://mbin.social
        websiteContactEmail:
          type: string
          example: contact@mbin.social
        websiteTitle:
          type: string
          example: Mbin
        websiteOpenRegistrations:
          type: boolean
          example: true
        websiteFederationEnabled:
          type: boolean
          example: true
        websiteDefaultLang:
          type: string
          example: en
      type: object
    EntryRequestDto2:
      required:
        - title
      properties:
        title:
          type: string
          example: Posted from the API!
          nullable: true
        url:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
          example:
            - cat
            - blep
            - cute
          nullable: true
        isOc:
          type: boolean
          default: false
          example: false
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
      type: object
    EntryRequestDto3:
      required:
        - title
      properties:
        title:
          type: string
          example: Posted from the API!
          nullable: true
        tags:
          type: array
          items:
            type: string
          example:
            - cat
            - blep
            - cute
          nullable: true
        isOc:
          type: boolean
          default: false
          example: false
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
        alt:
          type: string
          nullable: true
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    EntryRequestDto4:
      required:
        - title
      properties:
        title:
          type: string
          example: Posted from the API!
          nullable: true
        url:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
          example:
            - cat
            - blep
            - cute
          nullable: true
        isOc:
          type: boolean
          default: false
          example: false
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
        alt:
          type: string
          nullable: true
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    PostRequestDto:
      properties:
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
      type: object
    PostRequestDto2:
      properties:
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
        alt:
          type: string
          nullable: true
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    ModeratorResponseDto:
      properties:
        magazineId:
          type: integer
          nullable: true
        userId:
          type: integer
          nullable: true
        avatar:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        username:
          type: string
          nullable: true
        apId:
          type: string
          nullable: true
      type: object
    MagazineResponseDto:
      required:
        - tags
        - badges
        - moderators
      properties:
        owner:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ModeratorResponseDto'
        icon:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        banner:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        name:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        rules:
          type: string
          nullable: true
        subscriptionsCount:
          type: integer
          default: 0
        entryCount:
          type: integer
          default: 0
        entryCommentCount:
          type: integer
          default: 0
        postCount:
          type: integer
          default: 0
        postCommentCount:
          type: integer
          default: 0
        isAdult:
          type: boolean
          default: false
        isUserSubscribed:
          type: boolean
          nullable: true
        isBlockedByUser:
          type: boolean
          nullable: true
        tags:
          description: Magazine tags
          type: array
          items:
            type: string
        badges:
          description: Magazine badges
          type: array
          items:
            $ref: '#/components/schemas/BadgeResponseDto'
        moderators:
          description: Moderator list
          type: array
          items:
            $ref: '#/components/schemas/ModeratorResponseDto'
        apId:
          type: string
          nullable: true
        apProfileId:
          type: string
          nullable: true
        magazineId:
          type: integer
          nullable: true
        serverSoftware:
          type: string
          nullable: true
        serverSoftwareVersion:
          type: string
          nullable: true
        isPostingRestrictedToMods:
          type: boolean
          default: false
        localSubscribers:
          type: integer
          nullable: true
        notificationStatus:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ENotificationStatus'
        discoverable:
          type: boolean
          nullable: true
        indexable:
          type: boolean
          nullable: true
      type: object
    MagazineRequestDto:
      properties:
        name:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        rules:
          description: If this field is populated, it will throw a BadRequestException.
          type: string
          nullable: true
          deprecated: true
        isAdult:
          type: boolean
          nullable: true
        isPostingRestrictedToMods:
          type: boolean
          nullable: true
        discoverable:
          type: boolean
          nullable: true
        indexable:
          type: boolean
          nullable: true
      type: object
    MagazineUpdateRequestDto:
      properties:
        iconId:
          type: integer
          nullable: true
        title:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        rules:
          description: >-
            This field is deprecated. Only changing existing rules is supported.
            Adding rules to a magazine that did not have any previously will
            throw a BadRequestException.
          type: string
          nullable: true
          deprecated: true
        isAdult:
          type: boolean
          nullable: true
        isPostingRestrictedToMods:
          type: boolean
          nullable: true
        discoverable:
          type: boolean
          nullable: true
        indexable:
          type: boolean
          nullable: true
      type: object
    MagazineThemeResponseDto:
      required:
        - magazine
      properties:
        magazine:
          $ref: '#/components/schemas/MagazineSmallResponseDto'
        customCss:
          type: string
          nullable: true
        icon:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        banner:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
      type: object
    ToggleCreatedDto:
      required:
        - created
      properties:
        created:
          description: if true the resource was created, if false it was deleted
          type: boolean
      type: object
    MessageResponseDto:
      properties:
        sender:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        body:
          type: string
          nullable: true
        status:
          type: string
          default: new
          enum:
            - new
            - read
          nullable: true
        threadId:
          type: integer
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        messageId:
          type: integer
          nullable: true
      type: object
    MessageThreadResponseDto:
      required:
        - participants
        - messages
      properties:
        participants:
          description: Users in thread
          type: array
          items:
            $ref: '#/components/schemas/UserResponseDto'
        messageCount:
          type: integer
          nullable: true
        messages:
          description: Messages in thread
          type: array
          items:
            $ref: '#/components/schemas/MessageResponseDto'
        threadId:
          type: integer
          nullable: true
      type: object
    MessageDto:
      required:
        - body
      properties:
        body:
          type: string
          maxLength: 5000
          minLength: 2
        apId:
          type: string
          nullable: true
      type: object
    MagazineBanDto:
      properties:
        reason:
          type: string
          nullable: true
        expiredAt:
          type: string
          format: date-time
          nullable: true
      type: object
    BadgeDto:
      required:
        - name
      properties:
        name:
          type: string
          maxLength: 20
          minLength: 1
      type: object
    JsonSerializable:
      type: object
    ReportResponseDto:
      required:
        - type
      properties:
        magazine:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MagazineSmallResponseDto'
        reported:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        reporting:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        subject:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/JsonSerializable'
        reason:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        consideredAt:
          type: string
          format: date-time
          nullable: true
        consideredBy:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto'
        weight:
          type: integer
          nullable: true
        reportId:
          type: integer
          nullable: true
        type:
          type: string
          enum:
            - entry_report
            - entry_comment_report
            - post_report
            - post_comment_report
            - null_report
      type: object
    MagazineThemeRequestDto:
      properties:
        customCss:
          type: string
          nullable: true
        backgroundImage:
          type: string
          enum:
            - shape1
            - shape2
          nullable: true
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    ImageUploadDto:
      properties:
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    NotificationSchema:
      required:
        - subject
      properties:
        notificationId:
          description: The id of the notification
          type: integer
          default: 0
        type:
          description: The notification type
          type: string
          default: entry_created_notification
          enum:
            - entry_created_notification
            - entry_edited_notification
            - entry_deleted_notification
            - entry_mentioned_notification
            - entry_comment_created_notification
            - entry_comment_edited_notification
            - entry_comment_reply_notification
            - entry_comment_deleted_notification
            - entry_comment_mentioned_notification
            - post_created_notification
            - post_edited_notification
            - post_deleted_notification
            - post_mentioned_notification
            - post_comment_created_notification
            - post_comment_edited_notification
            - post_comment_reply_notification
            - post_comment_deleted_notification
            - post_comment_mentioned_notification
            - message_notification
            - ban_notification
            - report_created_notification
            - report_rejected_notification
            - report_approved_notification
            - new_signup
        status:
          description: The notification's status
          type: string
          default: new
          enum:
            - all
            - new
            - read
        subject:
          type: object
          oneOf:
            - $ref: '#/components/schemas/EntryResponseDto'
            - $ref: '#/components/schemas/EntryCommentResponseDto'
            - $ref: '#/components/schemas/PostResponseDto'
            - $ref: '#/components/schemas/PostCommentResponseDto'
            - $ref: '#/components/schemas/MessageResponseDto'
            - $ref: '#/components/schemas/MagazineBanResponseDto'
            - $ref: '#/components/schemas/UserSignupResponseDto'
        reportId:
          description: The id of the associated report of this notification
          type: integer
          nullable: true
      type: object
    PostCommentRequestDto:
      properties:
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
      type: object
    PostCommentRequestDto2:
      properties:
        body:
          type: string
          example: >-
            We can post cat pics from the API now! What are you going to do with
            this power?
          nullable: true
        lang:
          type: string
          maxLength: 3
          minLength: 2
          example: en
          nullable: true
        isAdult:
          type: boolean
          default: false
          example: false
        alt:
          type: string
          nullable: true
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    SearchActorSchema:
      required:
        - type
        - object
      properties:
        type:
          type: string
          enum:
            - user
            - magazine
          example: string
        object:
          type: object
          oneOf:
            - $ref: '#/components/schemas/MagazineResponseDto'
            - $ref: '#/components/schemas/UserResponseDto'
      type: object
    OAuth2ClientDto:
      required:
        - name
        - contactEmail
      properties:
        name:
          type: string
        contactEmail:
          type: string
        description:
          type: string
          nullable: true
        public:
          description: >-
            Native applications installed on user devices and web apps are
            considered public since they cannot store secrets securely, so they
            should use PKCE. https://www.oauth.com/oauth2-servers/pkce/
          type: boolean
          nullable: true
        username:
          description: >-
            Required if using the client_credentials grant type. Will attempt to
            create a bot user with the given username.
          type: string
          pattern: '[a-zA-Z0-9_\-]{1,30}'
          nullable: true
        redirectUris:
          type: array
          items:
            type: string
          default: []
          example:
            - http://localhost:3000/redirect
        grants:
          type: array
          items:
            type: string
            enum:
              - client_credentials
              - authorization_code
              - refresh_token
          default: []
          minItems: 1
          example:
            - authorization_code
            - refresh_token
        scopes:
          type: array
          items:
            type: string
            enum:
              - read
              - write
              - delete
              - subscribe
              - block
              - vote
              - report
              - domain
              - domain:subscribe
              - domain:block
              - entry
              - entry:create
              - entry:edit
              - entry:delete
              - entry:vote
              - entry:report
              - entry_comment
              - entry_comment:create
              - entry_comment:edit
              - entry_comment:delete
              - entry_comment:vote
              - entry_comment:report
              - magazine
              - magazine:subscribe
              - magazine:block
              - post
              - post:create
              - post:edit
              - post:delete
              - post:vote
              - post:report
              - post_comment
              - post_comment:create
              - post_comment:edit
              - post_comment:delete
              - post_comment:vote
              - post_comment:report
              - user
              - user:profile
              - user:profile:read
              - user:profile:edit
              - bookmark
              - bookmark:add
              - bookmark:remove
              - bookmark_list
              - bookmark_list:read
              - bookmark_list:edit
              - bookmark_list:delete
              - user:message
              - user:message:read
              - user:message:create
              - user:notification
              - user:notification:read
              - user:notification:delete
              - user:notification:edit
              - user:oauth_clients
              - user:oauth_clients:read
              - user:oauth_clients:edit
              - user:follow
              - user:block
              - moderate
              - moderate:entry
              - moderate:entry:language
              - moderate:entry:pin
              - moderate:entry:lock
              - moderate:entry:set_adult
              - moderate:entry:trash
              - moderate:entry_comment
              - moderate:entry_comment:language
              - moderate:entry_comment:set_adult
              - moderate:entry_comment:trash
              - moderate:post
              - moderate:post:language
              - moderate:post:pin
              - moderate:post:lock
              - moderate:post:set_adult
              - moderate:post:trash
              - moderate:post_comment
              - moderate:post_comment:language
              - moderate:post_comment:set_adult
              - moderate:post_comment:trash
              - moderate:magazine
              - moderate:magazine:ban
              - moderate:magazine:ban:read
              - moderate:magazine:ban:create
              - moderate:magazine:ban:delete
              - moderate:magazine:list
              - moderate:magazine:reports
              - moderate:magazine:reports:read
              - moderate:magazine:reports:action
              - moderate:magazine:trash:read
              - moderate:magazine_admin
              - moderate:magazine_admin:create
              - moderate:magazine_admin:delete
              - moderate:magazine_admin:update
              - moderate:magazine_admin:theme
              - moderate:magazine_admin:moderators
              - moderate:magazine_admin:badges
              - moderate:magazine_admin:tags
              - moderate:magazine_admin:stats
              - admin
              - admin:entry:purge
              - admin:entry_comment:purge
              - admin:post:purge
              - admin:post_comment:purge
              - admin:magazine
              - admin:magazine:move_entry
              - admin:magazine:purge
              - admin:magazine:moderate
              - admin:user
              - admin:user:ban
              - admin:user:verify
              - admin:user:delete
              - admin:user:purge
              - admin:instance
              - admin:instance:stats
              - admin:instance:settings
              - admin:instance:settings:read
              - admin:instance:settings:edit
              - admin:instance:information:edit
              - admin:federation
              - admin:federation:read
              - admin:federation:update
              - admin:oauth_clients
              - admin:oauth_clients:read
              - admin:oauth_clients:revoke
          default:
            - read
          minItems: 1
          example:
            - read
      type: object
    UserSmallResponseDto2:
      type: object
    OAuth2ClientDto2:
      required:
        - identifier
        - secret
        - name
        - contactEmail
      properties:
        identifier:
          type: string
        secret:
          type: string
        name:
          type: string
        contactEmail:
          type: string
        description:
          type: string
          nullable: true
        user:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/UserSmallResponseDto2'
        redirectUris:
          type: array
          items:
            type: string
          default: []
          example:
            - http://localhost:3000/redirect
        grants:
          type: array
          items:
            type: string
            enum:
              - client_credentials
              - authorization_code
              - refresh_token
          default: []
          minItems: 1
          example:
            - authorization_code
            - refresh_token
        scopes:
          type: array
          items:
            type: string
            enum:
              - read
              - write
              - delete
              - subscribe
              - block
              - vote
              - report
              - domain
              - domain:subscribe
              - domain:block
              - entry
              - entry:create
              - entry:edit
              - entry:delete
              - entry:vote
              - entry:report
              - entry_comment
              - entry_comment:create
              - entry_comment:edit
              - entry_comment:delete
              - entry_comment:vote
              - entry_comment:report
              - magazine
              - magazine:subscribe
              - magazine:block
              - post
              - post:create
              - post:edit
              - post:delete
              - post:vote
              - post:report
              - post_comment
              - post_comment:create
              - post_comment:edit
              - post_comment:delete
              - post_comment:vote
              - post_comment:report
              - user
              - user:profile
              - user:profile:read
              - user:profile:edit
              - bookmark
              - bookmark:add
              - bookmark:remove
              - bookmark_list
              - bookmark_list:read
              - bookmark_list:edit
              - bookmark_list:delete
              - user:message
              - user:message:read
              - user:message:create
              - user:notification
              - user:notification:read
              - user:notification:delete
              - user:notification:edit
              - user:oauth_clients
              - user:oauth_clients:read
              - user:oauth_clients:edit
              - user:follow
              - user:block
              - moderate
              - moderate:entry
              - moderate:entry:language
              - moderate:entry:pin
              - moderate:entry:lock
              - moderate:entry:set_adult
              - moderate:entry:trash
              - moderate:entry_comment
              - moderate:entry_comment:language
              - moderate:entry_comment:set_adult
              - moderate:entry_comment:trash
              - moderate:post
              - moderate:post:language
              - moderate:post:pin
              - moderate:post:lock
              - moderate:post:set_adult
              - moderate:post:trash
              - moderate:post_comment
              - moderate:post_comment:language
              - moderate:post_comment:set_adult
              - moderate:post_comment:trash
              - moderate:magazine
              - moderate:magazine:ban
              - moderate:magazine:ban:read
              - moderate:magazine:ban:create
              - moderate:magazine:ban:delete
              - moderate:magazine:list
              - moderate:magazine:reports
              - moderate:magazine:reports:read
              - moderate:magazine:reports:action
              - moderate:magazine:trash:read
              - moderate:magazine_admin
              - moderate:magazine_admin:create
              - moderate:magazine_admin:delete
              - moderate:magazine_admin:update
              - moderate:magazine_admin:theme
              - moderate:magazine_admin:moderators
              - moderate:magazine_admin:badges
              - moderate:magazine_admin:tags
              - moderate:magazine_admin:stats
              - admin
              - admin:entry:purge
              - admin:entry_comment:purge
              - admin:post:purge
              - admin:post_comment:purge
              - admin:magazine
              - admin:magazine:move_entry
              - admin:magazine:purge
              - admin:magazine:moderate
              - admin:user
              - admin:user:ban
              - admin:user:verify
              - admin:user:delete
              - admin:user:purge
              - admin:instance
              - admin:instance:stats
              - admin:instance:settings
              - admin:instance:settings:read
              - admin:instance:settings:edit
              - admin:instance:information:edit
              - admin:federation
              - admin:federation:read
              - admin:federation:update
              - admin:oauth_clients
              - admin:oauth_clients:read
              - admin:oauth_clients:revoke
          default:
            - read
          minItems: 1
          example:
            - read
        image:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
      type: object
    OAuth2ClientDto3:
      required:
        - name
        - contactEmail
      properties:
        name:
          type: string
        contactEmail:
          type: string
        description:
          type: string
          nullable: true
        public:
          description: >-
            Native applications installed on user devices and web apps are
            considered public since they cannot store secrets securely, so they
            should use PKCE. https://www.oauth.com/oauth2-servers/pkce/
          type: boolean
          nullable: true
        username:
          description: >-
            Required if using the client_credentials grant type. Will attempt to
            create a bot user with the given username.
          type: string
          pattern: '[a-zA-Z0-9_\-]{1,30}'
          nullable: true
        redirectUris:
          type: array
          items:
            type: string
          default: []
          example:
            - http://localhost:3000/redirect
        grants:
          type: array
          items:
            type: string
            enum:
              - client_credentials
              - authorization_code
              - refresh_token
          default: []
          minItems: 1
          example:
            - authorization_code
            - refresh_token
        scopes:
          type: array
          items:
            type: string
            enum:
              - read
              - write
              - delete
              - subscribe
              - block
              - vote
              - report
              - domain
              - domain:subscribe
              - domain:block
              - entry
              - entry:create
              - entry:edit
              - entry:delete
              - entry:vote
              - entry:report
              - entry_comment
              - entry_comment:create
              - entry_comment:edit
              - entry_comment:delete
              - entry_comment:vote
              - entry_comment:report
              - magazine
              - magazine:subscribe
              - magazine:block
              - post
              - post:create
              - post:edit
              - post:delete
              - post:vote
              - post:report
              - post_comment
              - post_comment:create
              - post_comment:edit
              - post_comment:delete
              - post_comment:vote
              - post_comment:report
              - user
              - user:profile
              - user:profile:read
              - user:profile:edit
              - bookmark
              - bookmark:add
              - bookmark:remove
              - bookmark_list
              - bookmark_list:read
              - bookmark_list:edit
              - bookmark_list:delete
              - user:message
              - user:message:read
              - user:message:create
              - user:notification
              - user:notification:read
              - user:notification:delete
              - user:notification:edit
              - user:oauth_clients
              - user:oauth_clients:read
              - user:oauth_clients:edit
              - user:follow
              - user:block
              - moderate
              - moderate:entry
              - moderate:entry:language
              - moderate:entry:pin
              - moderate:entry:lock
              - moderate:entry:set_adult
              - moderate:entry:trash
              - moderate:entry_comment
              - moderate:entry_comment:language
              - moderate:entry_comment:set_adult
              - moderate:entry_comment:trash
              - moderate:post
              - moderate:post:language
              - moderate:post:pin
              - moderate:post:lock
              - moderate:post:set_adult
              - moderate:post:trash
              - moderate:post_comment
              - moderate:post_comment:language
              - moderate:post_comment:set_adult
              - moderate:post_comment:trash
              - moderate:magazine
              - moderate:magazine:ban
              - moderate:magazine:ban:read
              - moderate:magazine:ban:create
              - moderate:magazine:ban:delete
              - moderate:magazine:list
              - moderate:magazine:reports
              - moderate:magazine:reports:read
              - moderate:magazine:reports:action
              - moderate:magazine:trash:read
              - moderate:magazine_admin
              - moderate:magazine_admin:create
              - moderate:magazine_admin:delete
              - moderate:magazine_admin:update
              - moderate:magazine_admin:theme
              - moderate:magazine_admin:moderators
              - moderate:magazine_admin:badges
              - moderate:magazine_admin:tags
              - moderate:magazine_admin:stats
              - admin
              - admin:entry:purge
              - admin:entry_comment:purge
              - admin:post:purge
              - admin:post_comment:purge
              - admin:magazine
              - admin:magazine:move_entry
              - admin:magazine:purge
              - admin:magazine:moderate
              - admin:user
              - admin:user:ban
              - admin:user:verify
              - admin:user:delete
              - admin:user:purge
              - admin:instance
              - admin:instance:stats
              - admin:instance:settings
              - admin:instance:settings:read
              - admin:instance:settings:edit
              - admin:instance:information:edit
              - admin:federation
              - admin:federation:read
              - admin:federation:update
              - admin:oauth_clients
              - admin:oauth_clients:read
              - admin:oauth_clients:revoke
          default:
            - read
          minItems: 1
          example:
            - read
        uploadImage:
          type: string
          format: binary
          nullable: true
      type: object
    ClientConsentsResponseDto:
      required:
        - scopesGranted
        - scopesAvailable
      properties:
        consentId:
          type: integer
          nullable: true
        client:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        clientLogo:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ImageDto'
        scopesGranted:
          description: The scopes the app currently has permission to access
          type: array
          items:
            type: string
            enum:
              - read
              - write
              - delete
              - subscribe
              - block
              - vote
              - report
              - domain
              - domain:subscribe
              - domain:block
              - entry
              - entry:create
              - entry:edit
              - entry:delete
              - entry:vote
              - entry:report
              - entry_comment
              - entry_comment:create
              - entry_comment:edit
              - entry_comment:delete
              - entry_comment:vote
              - entry_comment:report
              - magazine
              - magazine:subscribe
              - magazine:block
              - post
              - post:create
              - post:edit
              - post:delete
              - post:vote
              - post:report
              - post_comment
              - post_comment:create
              - post_comment:edit
              - post_comment:delete
              - post_comment:vote
              - post_comment:report
              - user
              - user:profile
              - user:profile:read
              - user:profile:edit
              - bookmark
              - bookmark:add
              - bookmark:remove
              - bookmark_list
              - bookmark_list:read
              - bookmark_list:edit
              - bookmark_list:delete
              - user:message
              - user:message:read
              - user:message:create
              - user:notification
              - user:notification:read
              - user:notification:delete
              - user:notification:edit
              - user:oauth_clients
              - user:oauth_clients:read
              - user:oauth_clients:edit
              - user:follow
              - user:block
              - moderate
              - moderate:entry
              - moderate:entry:language
              - moderate:entry:pin
              - moderate:entry:lock
              - moderate:entry:set_adult
              - moderate:entry:trash
              - moderate:entry_comment
              - moderate:entry_comment:language
              - moderate:entry_comment:set_adult
              - moderate:entry_comment:trash
              - moderate:post
              - moderate:post:language
              - moderate:post:pin
              - moderate:post:lock
              - moderate:post:set_adult
              - moderate:post:trash
              - moderate:post_comment
              - moderate:post_comment:language
              - moderate:post_comment:set_adult
              - moderate:post_comment:trash
              - moderate:magazine
              - moderate:magazine:ban
              - moderate:magazine:ban:read
              - moderate:magazine:ban:create
              - moderate:magazine:ban:delete
              - moderate:magazine:list
              - moderate:magazine:reports
              - moderate:magazine:reports:read
              - moderate:magazine:reports:action
              - moderate:magazine:trash:read
              - moderate:magazine_admin
              - moderate:magazine_admin:create
              - moderate:magazine_admin:delete
              - moderate:magazine_admin:update
              - moderate:magazine_admin:theme
              - moderate:magazine_admin:moderators
              - moderate:magazine_admin:badges
              - moderate:magazine_admin:tags
              - moderate:magazine_admin:stats
              - admin
              - admin:entry:purge
              - admin:entry_comment:purge
              - admin:post:purge
              - admin:post_comment:purge
              - admin:magazine
              - admin:magazine:move_entry
              - admin:magazine:purge
              - admin:magazine:moderate
              - admin:user
              - admin:user:ban
              - admin:user:verify
              - admin:user:delete
              - admin:user:purge
              - admin:instance
              - admin:instance:stats
              - admin:instance:settings
              - admin:instance:settings:read
              - admin:instance:settings:edit
              - admin:instance:information:edit
              - admin:federation
              - admin:federation:read
              - admin:federation:update
              - admin:oauth_clients
              - admin:oauth_clients:read
              - admin:oauth_clients:revoke
        scopesAvailable:
          description: The scopes the app may request
          type: array
          items:
            type: string
            enum:
              - read
              - write
              - delete
              - subscribe
              - block
              - vote
              - report
              - domain
              - domain:subscribe
              - domain:block
              - entry
              - entry:create
              - entry:edit
              - entry:delete
              - entry:vote
              - entry:report
              - entry_comment
              - entry_comment:create
              - entry_comment:edit
              - entry_comment:delete
              - entry_comment:vote
              - entry_comment:report
              - magazine
              - magazine:subscribe
              - magazine:block
              - post
              - post:create
              - post:edit
              - post:delete
              - post:vote
              - post:report
              - post_comment
              - post_comment:create
              - post_comment:edit
              - post_comment:delete
              - post_comment:vote
              - post_comment:report
              - user
              - user:profile
              - user:profile:read
              - user:profile:edit
              - bookmark
              - bookmark:add
              - bookmark:remove
              - bookmark_list
              - bookmark_list:read
              - bookmark_list:edit
              - bookmark_list:delete
              - user:message
              - user:message:read
              - user:message:create
              - user:notification
              - user:notification:read
              - user:notification:delete
              - user:notification:edit
              - user:oauth_clients
              - user:oauth_clients:read
              - user:oauth_clients:edit
              - user:follow
              - user:block
              - moderate
              - moderate:entry
              - moderate:entry:language
              - moderate:entry:pin
              - moderate:entry:lock
              - moderate:entry:set_adult
              - moderate:entry:trash
              - moderate:entry_comment
              - moderate:entry_comment:language
              - moderate:entry_comment:set_adult
              - moderate:entry_comment:trash
              - moderate:post
              - moderate:post:language
              - moderate:post:pin
              - moderate:post:lock
              - moderate:post:set_adult
              - moderate:post:trash
              - moderate:post_comment
              - moderate:post_comment:language
              - moderate:post_comment:set_adult
              - moderate:post_comment:trash
              - moderate:magazine
              - moderate:magazine:ban
              - moderate:magazine:ban:read
              - moderate:magazine:ban:create
              - moderate:magazine:ban:delete
              - moderate:magazine:list
              - moderate:magazine:reports
              - moderate:magazine:reports:read
              - moderate:magazine:reports:action
              - moderate:magazine:trash:read
              - moderate:magazine_admin
              - moderate:magazine_admin:create
              - moderate:magazine_admin:delete
              - moderate:magazine_admin:update
              - moderate:magazine_admin:theme
              - moderate:magazine_admin:moderators
              - moderate:magazine_admin:badges
              - moderate:magazine_admin:tags
              - moderate:magazine_admin:stats
              - admin
              - admin:entry:purge
              - admin:entry_comment:purge
              - admin:post:purge
              - admin:post_comment:purge
              - admin:magazine
              - admin:magazine:move_entry
              - admin:magazine:purge
              - admin:magazine:moderate
              - admin:user
              - admin:user:ban
              - admin:user:verify
              - admin:user:delete
              - admin:user:purge
              - admin:instance
              - admin:instance:stats
              - admin:instance:settings
              - admin:instance:settings:read
              - admin:instance:settings:edit
              - admin:instance:information:edit
              - admin:federation
              - admin:federation:read
              - admin:federation:update
              - admin:oauth_clients
              - admin:oauth_clients:read
              - admin:oauth_clients:revoke
      type: object
    ClientConsentsRequestDto:
      required:
        - scopes
      properties:
        scopes:
          description: The scopes the app has permission to access
          type: array
          items:
            type: string
            enum:
              - read
              - write
              - delete
              - subscribe
              - block
              - vote
              - report
              - domain
              - domain:subscribe
              - domain:block
              - entry
              - entry:create
              - entry:edit
              - entry:delete
              - entry:vote
              - entry:report
              - entry_comment
              - entry_comment:create
              - entry_comment:edit
              - entry_comment:delete
              - entry_comment:vote
              - entry_comment:report
              - magazine
              - magazine:subscribe
              - magazine:block
              - post
              - post:create
              - post:edit
              - post:delete
              - post:vote
              - post:report
              - post_comment
              - post_comment:create
              - post_comment:edit
              - post_comment:delete
              - post_comment:vote
              - post_comment:report
              - user
              - user:profile
              - user:profile:read
              - user:profile:edit
              - bookmark
              - bookmark:add
              - bookmark:remove
              - bookmark_list
              - bookmark_list:read
              - bookmark_list:edit
              - bookmark_list:delete
              - user:message
              - user:message:read
              - user:message:create
              - user:notification
              - user:notification:read
              - user:notification:delete
              - user:notification:edit
              - user:oauth_clients
              - user:oauth_clients:read
              - user:oauth_clients:edit
              - user:follow
              - user:block
              - moderate
              - moderate:entry
              - moderate:entry:language
              - moderate:entry:pin
              - moderate:entry:lock
              - moderate:entry:set_adult
              - moderate:entry:trash
              - moderate:entry_comment
              - moderate:entry_comment:language
              - moderate:entry_comment:set_adult
              - moderate:entry_comment:trash
              - moderate:post
              - moderate:post:language
              - moderate:post:pin
              - moderate:post:lock
              - moderate:post:set_adult
              - moderate:post:trash
              - moderate:post_comment
              - moderate:post_comment:language
              - moderate:post_comment:set_adult
              - moderate:post_comment:trash
              - moderate:magazine
              - moderate:magazine:ban
              - moderate:magazine:ban:read
              - moderate:magazine:ban:create
              - moderate:magazine:ban:delete
              - moderate:magazine:list
              - moderate:magazine:reports
              - moderate:magazine:reports:read
              - moderate:magazine:reports:action
              - moderate:magazine:trash:read
              - moderate:magazine_admin
              - moderate:magazine_admin:create
              - moderate:magazine_admin:delete
              - moderate:magazine_admin:update
              - moderate:magazine_admin:theme
              - moderate:magazine_admin:moderators
              - moderate:magazine_admin:badges
              - moderate:magazine_admin:tags
              - moderate:magazine_admin:stats
              - admin
              - admin:entry:purge
              - admin:entry_comment:purge
              - admin:post:purge
              - admin:post_comment:purge
              - admin:magazine
              - admin:magazine:move_entry
              - admin:magazine:purge
              - admin:magazine:moderate
              - admin:user
              - admin:user:ban
              - admin:user:verify
              - admin:user:delete
              - admin:user:purge
              - admin:instance
              - admin:instance:stats
              - admin:instance:settings
              - admin:instance:settings:read
              - admin:instance:settings:edit
              - admin:instance:information:edit
              - admin:federation
              - admin:federation:read
              - admin:federation:update
              - admin:oauth_clients
              - admin:oauth_clients:read
              - admin:oauth_clients:revoke
      type: object
    UserProfileRequestDto:
      properties:
        about:
          type: string
          nullable: true
      type: object
    UserSettingsDto:
      properties:
        notifyOnNewEntry:
          type: boolean
          default: null
          nullable: true
        notifyOnNewEntryReply:
          type: boolean
          default: null
          nullable: true
        notifyOnNewEntryCommentReply:
          type: boolean
          default: null
          nullable: true
        notifyOnNewPost:
          type: boolean
          default: null
          nullable: true
        notifyOnNewPostReply:
          type: boolean
          default: null
          nullable: true
        notifyOnNewPostCommentReply:
          type: boolean
          default: null
          nullable: true
        hideAdult:
          type: boolean
          default: null
          nullable: true
        showProfileSubscriptions:
          type: boolean
          default: null
          nullable: true
        showProfileFollowings:
          type: boolean
          default: null
          nullable: true
        addMentionsEntries:
          type: boolean
          nullable: true
        addMentionsPosts:
          type: boolean
          nullable: true
        homepage:
          type: string
          default: null
          enum:
            - front
            - front_subscribed
            - front_moderated
            - front_favourite
          nullable: true
        frontDefaultSort:
          type: string
          default: null
          enum:
            - active
            - hot
            - newest
            - top
            - commented
          nullable: true
        commentDefaultSort:
          type: string
          default: null
          enum:
            - newest
            - top
            - hot
            - newest
            - oldest
          nullable: true
        featuredMagazines:
          type: array
          items:
            type: string
          default: null
          nullable: true
        preferredLanguages:
          type: array
          items:
            type: string
          default: null
          nullable: true
        customCss:
          type: string
          default: null
          nullable: true
        ignoreMagazinesCustomCss:
          type: boolean
          default: null
          nullable: true
        notifyOnUserSignup:
          type: boolean
          default: null
          nullable: true
        directMessageSetting:
          type: string
          default: null
          enum:
            - everyone
            - followers_only
            - nobody
          nullable: true
        frontDefaultContent:
          type: string
          default: null
          enum:
            - combined
            - threads
            - microblog
          nullable: true
        discoverable:
          type: boolean
          default: null
          nullable: true
        indexable:
          type: boolean
          default: null
          nullable: true
      type: object
    ExtendedContentResponseDto:
      properties:
        entry:
          default: null
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/EntryResponseDto'
        post:
          default: null
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/PostResponseDto'
        entryComment:
          default: null
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/EntryCommentResponseDto'
        postComment:
          default: null
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/PostCommentResponseDto'
      type: object
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /token
          scopes:
            read: Read all content you have access to.
            write: Create or edit any of your threads, posts, or comments.
            delete: Delete any of your threads, posts, or comments.
            report: Report threads, posts, or comments.
            vote: Upvote, downvote, or boost threads, posts, or comments.
            subscribe: >-
              Subscribe or follow any magazine, domain, or user, and view the
              magazines, domains, and users you subscribe to.
            block: >-
              Block or unblock any magazine, domain, or user, and view the
              magazines, domains, and users you have blocked.
            domain: >-
              Subscribe to or block domains, and view the domains you subscribe
              to or block.
            domain:subscribe: >-
              Subscribe or unsubscribe to domains and view the domains you
              subscribe to.
            domain:block: Block or unblock domains and view the domains you have blocked.
            entry: >-
              Create, edit, or delete your threads, and vote, boost, or report
              any thread.
            entry:create: Create new threads.
            entry:edit: Edit your existing threads.
            entry:vote: Vote or boost threads.
            entry:delete: Delete your existing threads.
            entry:report: Report any thread.
            entry_comment: >-
              Create, edit, or delete your comments in threads, and vote, boost,
              or report any comment in a thread.
            entry_comment:create: Create new comments in threads.
            entry_comment:edit: Edit your existing comments in threads.
            entry_comment:vote: Vote or boost comments in threads.
            entry_comment:delete: Delete your existing comments in threads.
            entry_comment:report: Report any comment in a thread.
            magazine: >-
              Subscribe to or block magazines, and view the magazines you
              subscribe to or block.
            magazine:subscribe: >-
              Subscribe or unsubscribe to magazines and view the magazines you
              subscribe to.
            magazine:block: >-
              Block or unblock magazines and view the magazines you have
              blocked.
            post: >-
              Create, edit, or delete your microblogs, and vote, boost, or
              report any microblog.
            post:create: Create new posts.
            post:edit: Edit your existing posts.
            post:vote: Vote or boost posts.
            post:delete: Delete your existing posts.
            post:report: Report any post.
            post_comment: >-
              Create, edit, or delete your comments on posts, and vote, boost,
              or report any comment on a post.
            post_comment:create: Create new comments on posts.
            post_comment:edit: Edit your existing comments on posts.
            post_comment:vote: Vote or boost comments on posts.
            post_comment:delete: Delete your existing comments on posts.
            post_comment:report: Report any comment on a post.
            user: >-
              Read and edit your profile, messages, notifications; follow or
              block other users; view lists of users you follow or block.
            user:profile: Read and edit your profile.
            user:profile:read: Read your profile.
            user:profile:edit: Edit your profile.
            user:message: Read your messages and send messages to other users.
            user:message:read: Read your messages.
            user:message:create: Send messages to other users.
            user:notification: Read and clear your notifications.
            user:notification:read: Read your notifications, including message notifications.
            user:notification:delete: Clear notifications.
            user:follow: Follow or unfollow users, and read a list of users you follow.
            user:block: Block or unblock users, and read a list of users you block.
            moderate: >-
              Perform any moderation action you have permission to perform in
              your moderated magazines.
            moderate:entry: Moderate threads in your moderated magazines.
            moderate:entry:language: Change the language of threads in your moderated magazines.
            moderate:entry:pin: Pin threads to the top of your moderated magazines.
            moderate:entry:set_adult: Mark threads as NSFW in your moderated magazines.
            moderate:entry:trash: Trash or restore threads in your moderated magazines.
            moderate:entry_comment: Moderate comments in threads in your moderated magazines.
            moderate:entry_comment:language: >-
              Change the language of comments in threads in your moderated
              magazines.
            moderate:entry_comment:set_adult: Mark comments in threads as NSFW in your moderated magazines.
            moderate:entry_comment:trash: Trash or restore comments in threads in your moderated magazines.
            moderate:post: Moderate posts in your moderated magazines.
            moderate:post:language: Change the language of posts in your moderated magazines.
            moderate:post:pin: Pin posts to the top of your moderated magazines.
            moderate:post:set_adult: Mark posts as NSFW in your moderated magazines.
            moderate:post:trash: Trash or restore posts in your moderated magazines.
            moderate:post_comment: Moderate comments on posts in your moderated magazines.
            moderate:post_comment:language: >-
              Change the language of comments on posts in your moderated
              magazines.
            moderate:post_comment:set_adult: Mark comments on posts as NSFW in your moderated magazines.
            moderate:post_comment:trash: Trash or restore comments on posts in your moderated magazines.
            moderate:magazine: >-
              Manage bans, reports, and view trashed items in your moderated
              magazines.
            moderate:magazine:ban: Manage banned users in your moderated magazines.
            moderate:magazine:ban:read: View banned users in your moderated magazines.
            moderate:magazine:ban:create: Ban users in your moderated magazines.
            moderate:magazine:ban:delete: Unban users in your moderated magazines.
            moderate:magazine:list: Read a list of your moderated magazines.
            moderate:magazine:reports: Manage reports in your moderated magazines.
            moderate:magazine:reports:read: Read reports in your moderated magazines.
            moderate:magazine:reports:action: Accept or reject reports in your moderated magazines.
            moderate:magazine:trash:read: View trashed content in your moderated magazines.
            moderate:magazine_admin: Create, edit, or delete your owned magazines.
            moderate:magazine_admin:create: Create new magazines.
            moderate:magazine_admin:delete: Delete any of your owned magazines.
            moderate:magazine_admin:update: >-
              Edit any of your owned magazines' rules, description, NSFW status,
              or icon.
            moderate:magazine_admin:theme: Edit the custom CSS of any of your owned magazines.
            moderate:magazine_admin:moderators: Add or remove moderators of any of your owned magazines.
            moderate:magazine_admin:badges: Create or remove badges from your owned magazines.
            moderate:magazine_admin:tags: Create or remove tags from your owned magazines.
            moderate:magazine_admin:stats: View the content, vote, and view stats of your owned magazines.
            admin: Perform any administrative action on your instance.
            admin:entry:purge: Completely delete any thread from your instance.
            admin:entry_comment:purge: Completely delete any comment in a thread from your instance.
            admin:post:purge: Completely delete any post from your instance.
            admin:post_comment:purge: Completely delete any comment on a post from your instance.
            admin:magazine: >-
              Move threads between, manage moderators of or completely delete
              magazines on your instance.
            admin:magazine:move_entry: Move threads between magazines on your instance.
            admin:magazine:purge: Completely delete magazines on your instance.
            admin:magazine:moderate: Manage moderators and owners of magazines.
            admin:user: Ban, verify, or completely delete users on your instance.
            admin:user:ban: Ban or unban users from your instance.
            admin:user:verify: Verify users on your instance.
            admin:user:delete: >-
              Delete a user from your instance, leaving a record of their
              username.
            admin:user:purge: Completely delete a user from your instance.
            admin:instance: >-
              View your instance's stats and settings, or update instance
              settings or information.
            admin:instance:stats: View your instance's stats.
            admin:instance:settings: View or update settings on your instance.
            admin:instance:settings:read: View settings on your instance.
            admin:instance:settings:edit: Update settings on your instance.
            admin:instance:information:edit: >-
              Update the About, FAQ, Contact, Terms of Service, and Privacy
              Policy on your instance.
            admin:federation: >-
              View and update current (de)federation settings of other instances
              on your instance.
            admin:federation:read: View a list of defederated instances on your instance.
            admin:federation:update: Add or remove instances to the list of defederated instances.
            admin:oauth_clients: View or revoke OAuth2 clients that exist on your instance.
            admin:oauth_clients:read: >-
              View the OAuth2 clients that exist on your instance, and their
              usage stats.
            admin:oauth_clients:revoke: Revoke access to OAuth2 clients on your instance.
        authorizationCode:
          authorizationUrl: /authorize
          tokenUrl: /token
          scopes:
            read: Read all content you have access to.
            write: Create or edit any of your threads, posts, or comments.
            delete: Delete any of your threads, posts, or comments.
            subscribe: Report threads, posts, or comments.
            block: Upvote, downvote, or boost threads, posts, or comments.
            vote: >-
              Subscribe or follow any magazine, domain, or user, and view the
              magazines, domains, and users you subscribe to.
            report: >-
              Block or unblock any magazine, domain, or user, and view the
              magazines, domains, and users you have blocked.
            domain: >-
              Subscribe to or block domains, and view the domains you subscribe
              to or block.
            domain:subscribe: >-
              Subscribe or unsubscribe to domains and view the domains you
              subscribe to.
            domain:block: Block or unblock domains and view the domains you have blocked.
            entry: >-
              Create, edit, or delete your threads, and vote, boost, or report
              any thread.
            entry:create: Create new threads.
            entry:edit: Edit your existing threads.
            entry:delete: Delete your existing threads.
            entry:vote: Upvote, boost, or downvote any thread.
            entry:report: Report any thread.
            entry_comment: >-
              Create, edit, or delete your comments in threads, and vote, boost,
              or report any comment in a thread.
            entry_comment:create: Create new comments in threads.
            entry_comment:edit: Edit your existing comments in threads.
            entry_comment:delete: Delete your existing comments in threads.
            entry_comment:vote: Upvote, boost, or downvote any comment in a thread.
            entry_comment:report: Report any comment in a thread.
            magazine: >-
              Subscribe to or block magazines, and view the magazines you
              subscribe to or block.
            magazine:subscribe: >-
              Subscribe or unsubscribe to magazines and view the magazines you
              subscribe to.
            magazine:block: >-
              Block or unblock magazines and view the magazines you have
              blocked.
            post: >-
              Create, edit, or delete your microblogs, and vote, boost, or
              report any microblog.
            post:create: Create new posts.
            post:edit: Edit your existing posts.
            post:delete: Delete your existing posts.
            post:vote: Upvote, boost, or downvote any post.
            post:report: Report any post.
            post_comment: >-
              Create, edit, or delete your comments on posts, and vote, boost,
              or report any comment on a post.
            post_comment:create: Create new comments on posts.
            post_comment:edit: Edit your existing comments on posts.
            post_comment:delete: Delete your existing comments on posts.
            post_comment:vote: Upvote, boost, or downvote any comment on a post.
            post_comment:report: Report any comment on a post.
            user: >-
              Read and edit your profile, messages, notifications; follow or
              block other users; view lists of users you follow or block.
            user:profile: Read and edit your profile.
            user:profile:read: Read your profile.
            user:profile:edit: Edit your profile.
            user:message: Read your messages and send messages to other users.
            user:message:read: Read your messages.
            user:message:create: Send messages to other users.
            user:notification: Read and clear your notifications.
            user:notification:read: Read your notifications, including message notifications.
            user:notification:delete: Clear notifications.
            user:follow: Follow or unfollow users, and read a list of users you follow.
            user:block: Block or unblock users, and read a list of users you block.
            moderate: >-
              Perform any moderation action you have permission to perform in
              your moderated magazines.
            moderate:entry: Moderate threads in your moderated magazines.
            moderate:entry:language: Change the language of threads in your moderated magazines.
            moderate:entry:pin: Pin threads to the top of your moderated magazines.
            moderate:entry:set_adult: Mark threads as NSFW in your moderated magazines.
            moderate:entry:trash: Trash or restore threads in your moderated magazines.
            moderate:entry_comment: Moderate comments in threads in your moderated magazines.
            moderate:entry_comment:language: >-
              Change the language of comments in threads in your moderated
              magazines.
            moderate:entry_comment:set_adult: Mark comments in threads as NSFW in your moderated magazines.
            moderate:entry_comment:trash: Trash or restore comments in threads in your moderated magazines.
            moderate:post: Moderate posts in your moderated magazines.
            moderate:post:language: Change the language of posts in your moderated magazines.
            moderate:post:set_adult: Mark posts as NSFW in your moderated magazines.
            moderate:post:trash: Trash or restore posts in your moderated magazines.
            moderate:post_comment: Moderate comments on posts in your moderated magazines.
            moderate:post_comment:language: >-
              Change the language of comments on posts in your moderated
              magazines.
            moderate:post_comment:set_adult: Mark comments on posts as NSFW in your moderated magazines.
            moderate:post_comment:trash: Trash or restore comments on posts in your moderated magazines.
            moderate:magazine: >-
              Manage bans, reports, and view trashed items in your moderated
              magazines.
            moderate:magazine:ban: Manage banned users in your moderated magazines.
            moderate:magazine:ban:read: View banned users in your moderated magazines.
            moderate:magazine:ban:create: Ban users in your moderated magazines.
            moderate:magazine:ban:delete: Unban users in your moderated magazines.
            moderate:magazine:list: Read a list of your moderated magazines.
            moderate:magazine:reports: Manage reports in your moderated magazines.
            moderate:magazine:reports:read: Read reports in your moderated magazines.
            moderate:magazine:reports:action: Accept or reject reports in your moderated magazines.
            moderate:magazine:trash:read: View trashed content in your moderated magazines.
            moderate:magazine_admin: Create, edit, or delete your owned magazines.
            moderate:magazine_admin:create: Create new magazines.
            moderate:magazine_admin:delete: Delete any of your owned magazines.
            moderate:magazine_admin:update: >-
              Edit any of your owned magazines' rules, description, NSFW status,
              or icon.
            moderate:magazine_admin:theme: Edit the custom CSS of any of your owned magazines.
            moderate:magazine_admin:moderators: Add or remove moderators of any of your owned magazines.
            moderate:magazine_admin:badges: Create or remove badges from your owned magazines.
            moderate:magazine_admin:tags: Create or remove tags from your owned magazines.
            moderate:magazine_admin:stats: View the content, vote, and view stats of your owned magazines.
            admin: Perform any administrative action on your instance.
            admin:entry:purge: Completely delete any thread from your instance.
            admin:entry_comment:purge: Completely delete any comment in a thread from your instance.
            admin:post:purge: Completely delete any post from your instance.
            admin:post_comment:purge: Completely delete any comment on a post from your instance.
            admin:magazine: >-
              Move threads between, manage moderators of or completely delete
              magazines on your instance.
            admin:magazine:move_entry: Move threads between magazines on your instance.
            admin:magazine:purge: Completely delete magazines on your instance.
            admin:magazine:moderate: Manage moderators and owners of magazines.
            admin:user: Ban, verify, or completely delete users on your instance.
            admin:user:ban: Ban or unban users from your instance.
            admin:user:verify: Verify users on your instance.
            admin:user:delete: >-
              Delete a user from your instance, leaving a record of their
              username.
            admin:user:purge: Completely delete a user from your instance.
            admin:instance: >-
              View your instance's stats and settings, or update instance
              settings or information.
            admin:instance:stats: View your instance's stats.
            admin:instance:settings: View or update settings on your instance.
            admin:instance:settings:read: View settings on your instance.
            admin:instance:settings:edit: Update settings on your instance.
            admin:instance:information:edit: >-
              Update the About, FAQ, Contact, Terms of Service, and Privacy
              Policy on your instance.
            admin:federation: >-
              View and update current (de)federation settings of other instances
              on your instance.
            admin:federation:read: View a list of defederated instances on your instance.
            admin:federation:update: Add or remove instances to the list of defederated instances.
            admin:oauth_clients: View or revoke OAuth2 clients that exist on your instance.
            admin:oauth_clients:read: >-
              View the OAuth2 clients that exist on your instance, and their
              usage stats.
            admin:oauth_clients:revoke: Revoke access to OAuth2 clients on your instance.
tags:
  - name: admin/entry
  - name: admin/entry_comment
  - name: admin/post
  - name: admin/post_comment
  - name: admin/user
  - name: admin/instance
  - name: admin/federation
  - name: admin/oauth2
  - name: admin/magazine
  - name: bookmark_list
  - name: bookmark
  - name: combined
  - name: domain
  - name: entry
  - name: entry_comment
  - name: instance
  - name: instance/stats
  - name: magazine
  - name: moderation/magazine/owner
  - name: message
  - name: moderation/entry
  - name: moderation/entry_comment
  - name: moderation/post
  - name: moderation/post_comment
  - name: moderation/magazine
  - name: notification
  - name: post
  - name: post_comment
  - name: search
  - name: oauth
  - name: user
