get:
  tags:
    - posts
  summary: get a post
  description: This operation retrieves a post's data
  parameters:
    - in: path
      name: pid
      schema:
        type: string
      required: true
      description: a valid post id
      example: 1
  responses:
    '200':
      description: Post successfully retrieved
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                $ref: ../../components/schemas/Status.yaml#/Status
              response:
                allOf:
                  - type: object
                    properties:
                      pid:
                        type: number
                      uid:
                        type: number
                        description: A user identifier
                      tid:
                        type: number
                        description: A topic identifier
                      content:
                        type: string
                      timestamp:
                        type: number
                      flagId:
                        type: number
                      deleted:
                        type: number
                      upvotes:
                        type: number
                      downvotes:
                        type: number
                      deleterUid:
                        type: number
                      edited:
                        type: number
                      replies:
                        type: number
                      bookmarks:
                        type: number
                      votes:
                        type: number
                      timestampISO:
                        type: string
                        description: An ISO 8601 formatted date string (complementing `timestamp`)
                      editedISO:
                        type: string
                        description: An ISO 8601 formatted date string (complementing `timestamp`)
                      upvoted:
                        type: boolean
                      downvoted:
                        type: boolean
                      attachments:
                        type: array
                        items:
                          type: string
                          description: A sha256 hash of the attachment (tied to the corresponding entry in the database)
                  - type: object
                    description: Optional properties that may or may not be present (except for `pid`, which is always present, and is only here as a hack to pass validation)
                    properties:
                      pid:
                        type: number
                        description: A post identifier
                      sourceContent:
                        type: string
                        description: The markdown equivalent of a remote post content, as received (or fetched) from the remote site.
                    required:
                      - pid
put:
  tags:
    - posts
  summary: edit a post
  description: This operation edits a post
  parameters:
    - in: path
      name: pid
      schema:
        type: string
      required: true
      description: a valid post id
      example: 1
  requestBody:
    required: true
    content:
      application/json:
        schema:
          type: object
          properties:
            content:
              type: string
              description: New post content
              example: New post content
            title:
              type: string
              description: Topic title, only accepted for main posts
              example: New title
          required:
            - content
  responses:
    '200':
      description: Post successfully edited
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                $ref: ../../components/schemas/Status.yaml#/Status
              response:
                allOf:
                  - $ref: ../../components/schemas/PostObject.yaml#/PostObject
                  - type: object
                    properties:
                      edited:
                        type: boolean
                      deleterUid:
                        type: number
delete:
  tags:
    - posts
  summary: purge a post
  description: This operation purges a post.
  parameters:
    - in: path
      name: pid
      schema:
        type: string
      required: true
      description: a valid post id
      example: 1
  responses:
    '200':
      description: Post successfully purged
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                $ref: ../../components/schemas/Status.yaml#/Status
              response:
                type: object
                properties: {}