Misskey Reversi API

The Reversi API from Misskey — 7 operation(s) for reversi.

OpenAPI Specification

misskey-reversi-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 2025.4.1-io.12b-fb6fbea074
  title: Misskey account Reversi API
servers:
- url: https://misskey.io/api
tags:
- name: Reversi
paths:
  /reversi/cancel-match:
    post:
      operationId: post___reversi___cancel-match
      summary: reversi/cancel-match
      description: 'No description provided.


        **Credential required**: *Yes* / **Permission**: *read:account*'
      externalDocs:
        description: Source code
        url: https://github.com/MisskeyIO/misskey/blob/io/packages/backend/src/server/api/endpoints/reversi/cancel-match.ts
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userId:
                  type:
                  - string
                  - 'null'
                  format: misskey:id
      responses:
        '204':
          description: OK (without any results)
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INVALID_PARAM:
                  value:
                    error:
                      message: Invalid param.
                      code: INVALID_PARAM
                      id: 3d81ceae-475f-4600-b2a8-2bc116157532
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CREDENTIAL_REQUIRED:
                  value:
                    error:
                      message: Credential required.
                      code: CREDENTIAL_REQUIRED
                      id: 1384574d-a912-4b81-8601-c7b1c4085df1
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AUTHENTICATION_FAILED:
                  value:
                    error:
                      message: Authentication failed. Please ensure your token is correct.
                      code: AUTHENTICATION_FAILED
                      id: b0a7f5f8-dc2f-4171-b91f-de88ad238e14
        '418':
          description: I'm Ai
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                I_AM_AI:
                  value:
                    error:
                      message: You sent a request to Ai-chan, Misskey's showgirl, instead of the server.
                      code: I_AM_AI
                      id: 60c46cd1-f23a-46b1-bebe-5d2b73951a84
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INTERNAL_ERROR:
                  value:
                    error:
                      message: Internal error occurred. Please contact us if the error persists.
                      code: INTERNAL_ERROR
                      id: 5d37dbcb-891e-41ca-a3d6-e690c97775ac
      tags:
      - Reversi
  /reversi/games:
    post:
      operationId: post___reversi___games
      summary: reversi/games
      description: 'No description provided.


        **Credential required**: *No*'
      externalDocs:
        description: Source code
        url: https://github.com/MisskeyIO/misskey/blob/io/packages/backend/src/server/api/endpoints/reversi/games.ts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  type: integer
                  minimum: 1
                  maximum: 100
                  default: 10
                sinceId:
                  type: string
                  format: misskey:id
                untilId:
                  type: string
                  format: misskey:id
                my:
                  type: boolean
                  default: false
      responses:
        '200':
          description: OK (with results)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReversiGameLite'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INVALID_PARAM:
                  value:
                    error:
                      message: Invalid param.
                      code: INVALID_PARAM
                      id: 3d81ceae-475f-4600-b2a8-2bc116157532
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CREDENTIAL_REQUIRED:
                  value:
                    error:
                      message: Credential required.
                      code: CREDENTIAL_REQUIRED
                      id: 1384574d-a912-4b81-8601-c7b1c4085df1
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AUTHENTICATION_FAILED:
                  value:
                    error:
                      message: Authentication failed. Please ensure your token is correct.
                      code: AUTHENTICATION_FAILED
                      id: b0a7f5f8-dc2f-4171-b91f-de88ad238e14
        '418':
          description: I'm Ai
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                I_AM_AI:
                  value:
                    error:
                      message: You sent a request to Ai-chan, Misskey's showgirl, instead of the server.
                      code: I_AM_AI
                      id: 60c46cd1-f23a-46b1-bebe-5d2b73951a84
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INTERNAL_ERROR:
                  value:
                    error:
                      message: Internal error occurred. Please contact us if the error persists.
                      code: INTERNAL_ERROR
                      id: 5d37dbcb-891e-41ca-a3d6-e690c97775ac
      tags:
      - Reversi
  /reversi/invitations:
    post:
      operationId: post___reversi___invitations
      summary: reversi/invitations
      description: 'No description provided.


        **Credential required**: *Yes* / **Permission**: *read:account*'
      externalDocs:
        description: Source code
        url: https://github.com/MisskeyIO/misskey/blob/io/packages/backend/src/server/api/endpoints/reversi/invitations.ts
      security:
      - bearerAuth: []
      responses:
        '200':
          description: OK (with results)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserLite'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INVALID_PARAM:
                  value:
                    error:
                      message: Invalid param.
                      code: INVALID_PARAM
                      id: 3d81ceae-475f-4600-b2a8-2bc116157532
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CREDENTIAL_REQUIRED:
                  value:
                    error:
                      message: Credential required.
                      code: CREDENTIAL_REQUIRED
                      id: 1384574d-a912-4b81-8601-c7b1c4085df1
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AUTHENTICATION_FAILED:
                  value:
                    error:
                      message: Authentication failed. Please ensure your token is correct.
                      code: AUTHENTICATION_FAILED
                      id: b0a7f5f8-dc2f-4171-b91f-de88ad238e14
        '418':
          description: I'm Ai
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                I_AM_AI:
                  value:
                    error:
                      message: You sent a request to Ai-chan, Misskey's showgirl, instead of the server.
                      code: I_AM_AI
                      id: 60c46cd1-f23a-46b1-bebe-5d2b73951a84
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INTERNAL_ERROR:
                  value:
                    error:
                      message: Internal error occurred. Please contact us if the error persists.
                      code: INTERNAL_ERROR
                      id: 5d37dbcb-891e-41ca-a3d6-e690c97775ac
      tags:
      - Reversi
  /reversi/match:
    post:
      operationId: post___reversi___match
      summary: reversi/match
      description: 'No description provided.


        **Credential required**: *Yes* / **Permission**: *read:account*'
      externalDocs:
        description: Source code
        url: https://github.com/MisskeyIO/misskey/blob/io/packages/backend/src/server/api/endpoints/reversi/match.ts
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userId:
                  type:
                  - string
                  - 'null'
                  format: misskey:id
                noIrregularRules:
                  type: boolean
                  default: false
                multiple:
                  type: boolean
                  default: false
      responses:
        '200':
          description: OK (with results)
          content:
            application/json:
              schema:
                type: object
                anyOf:
                - $ref: '#/components/schemas/ReversiGameDetailed'
                - type: 'null'
        '204':
          description: OK (without any results)
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NO_SUCH_USER:
                  value:
                    error:
                      message: No such user.
                      code: NO_SUCH_USER
                      id: 0b4f0559-b484-4e31-9581-3f73cee89b28
                TARGET_IS_YOURSELF:
                  value:
                    error:
                      message: Target user is yourself.
                      code: TARGET_IS_YOURSELF
                      id: 96fd7bd6-d2bc-426c-a865-d055dcd2828e
                INVALID_PARAM:
                  value:
                    error:
                      message: Invalid param.
                      code: INVALID_PARAM
                      id: 3d81ceae-475f-4600-b2a8-2bc116157532
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CREDENTIAL_REQUIRED:
                  value:
                    error:
                      message: Credential required.
                      code: CREDENTIAL_REQUIRED
                      id: 1384574d-a912-4b81-8601-c7b1c4085df1
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AUTHENTICATION_FAILED:
                  value:
                    error:
                      message: Authentication failed. Please ensure your token is correct.
                      code: AUTHENTICATION_FAILED
                      id: b0a7f5f8-dc2f-4171-b91f-de88ad238e14
        '418':
          description: I'm Ai
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                I_AM_AI:
                  value:
                    error:
                      message: You sent a request to Ai-chan, Misskey's showgirl, instead of the server.
                      code: I_AM_AI
                      id: 60c46cd1-f23a-46b1-bebe-5d2b73951a84
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INTERNAL_ERROR:
                  value:
                    error:
                      message: Internal error occurred. Please contact us if the error persists.
                      code: INTERNAL_ERROR
                      id: 5d37dbcb-891e-41ca-a3d6-e690c97775ac
      tags:
      - Reversi
  /reversi/show-game:
    post:
      operationId: post___reversi___show-game
      summary: reversi/show-game
      description: 'No description provided.


        **Credential required**: *No*'
      externalDocs:
        description: Source code
        url: https://github.com/MisskeyIO/misskey/blob/io/packages/backend/src/server/api/endpoints/reversi/show-game.ts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gameId:
                  type: string
                  format: misskey:id
              required:
              - gameId
      responses:
        '200':
          description: OK (with results)
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ReversiGameDetailed'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NO_SUCH_GAME:
                  value:
                    error:
                      message: No such game.
                      code: NO_SUCH_GAME
                      id: f13a03db-fae1-46c9-87f3-43c8165419e1
                INVALID_PARAM:
                  value:
                    error:
                      message: Invalid param.
                      code: INVALID_PARAM
                      id: 3d81ceae-475f-4600-b2a8-2bc116157532
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CREDENTIAL_REQUIRED:
                  value:
                    error:
                      message: Credential required.
                      code: CREDENTIAL_REQUIRED
                      id: 1384574d-a912-4b81-8601-c7b1c4085df1
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AUTHENTICATION_FAILED:
                  value:
                    error:
                      message: Authentication failed. Please ensure your token is correct.
                      code: AUTHENTICATION_FAILED
                      id: b0a7f5f8-dc2f-4171-b91f-de88ad238e14
        '418':
          description: I'm Ai
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                I_AM_AI:
                  value:
                    error:
                      message: You sent a request to Ai-chan, Misskey's showgirl, instead of the server.
                      code: I_AM_AI
                      id: 60c46cd1-f23a-46b1-bebe-5d2b73951a84
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INTERNAL_ERROR:
                  value:
                    error:
                      message: Internal error occurred. Please contact us if the error persists.
                      code: INTERNAL_ERROR
                      id: 5d37dbcb-891e-41ca-a3d6-e690c97775ac
      tags:
      - Reversi
  /reversi/surrender:
    post:
      operationId: post___reversi___surrender
      summary: reversi/surrender
      description: 'No description provided.


        **Credential required**: *Yes* / **Permission**: *read:account*'
      externalDocs:
        description: Source code
        url: https://github.com/MisskeyIO/misskey/blob/io/packages/backend/src/server/api/endpoints/reversi/surrender.ts
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gameId:
                  type: string
                  format: misskey:id
              required:
              - gameId
      responses:
        '204':
          description: OK (without any results)
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NO_SUCH_GAME:
                  value:
                    error:
                      message: No such game.
                      code: NO_SUCH_GAME
                      id: ace0b11f-e0a6-4076-a30d-e8284c81b2df
                ALREADY_ENDED:
                  value:
                    error:
                      message: That game has already ended.
                      code: ALREADY_ENDED
                      id: 6c2ad4a6-cbf1-4a5b-b187-b772826cfc6d
                ACCESS_DENIED:
                  value:
                    error:
                      message: Access denied.
                      code: ACCESS_DENIED
                      id: 6e04164b-a992-4c93-8489-2123069973e1
                INVALID_PARAM:
                  value:
                    error:
                      message: Invalid param.
                      code: INVALID_PARAM
                      id: 3d81ceae-475f-4600-b2a8-2bc116157532
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CREDENTIAL_REQUIRED:
                  value:
                    error:
                      message: Credential required.
                      code: CREDENTIAL_REQUIRED
                      id: 1384574d-a912-4b81-8601-c7b1c4085df1
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AUTHENTICATION_FAILED:
                  value:
                    error:
                      message: Authentication failed. Please ensure your token is correct.
                      code: AUTHENTICATION_FAILED
                      id: b0a7f5f8-dc2f-4171-b91f-de88ad238e14
        '418':
          description: I'm Ai
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                I_AM_AI:
                  value:
                    error:
                      message: You sent a request to Ai-chan, Misskey's showgirl, instead of the server.
                      code: I_AM_AI
                      id: 60c46cd1-f23a-46b1-bebe-5d2b73951a84
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INTERNAL_ERROR:
                  value:
                    error:
                      message: Internal error occurred. Please contact us if the error persists.
                      code: INTERNAL_ERROR
                      id: 5d37dbcb-891e-41ca-a3d6-e690c97775ac
      tags:
      - Reversi
  /reversi/verify:
    post:
      operationId: post___reversi___verify
      summary: reversi/verify
      description: 'No description provided.


        **Credential required**: *No*'
      externalDocs:
        description: Source code
        url: https://github.com/MisskeyIO/misskey/blob/io/packages/backend/src/server/api/endpoints/reversi/verify.ts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gameId:
                  type: string
                  format: misskey:id
                crc32:
                  type: string
              required:
              - gameId
              - crc32
      responses:
        '200':
          description: OK (with results)
          content:
            application/json:
              schema:
                type: object
                properties:
                  desynced:
                    type: boolean
                  game:
                    type:
                    - object
                    - 'null'
                    anyOf:
                    - $ref: '#/components/schemas/ReversiGameDetailed'
                    - type: 'null'
                required:
                - desynced
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NO_SUCH_GAME:
                  value:
                    error:
                      message: No such game.
                      code: NO_SUCH_GAME
                      id: 8fb05624-b525-43dd-90f7-511852bdfeee
                INVALID_PARAM:
                  value:
                    error:
                      message: Invalid param.
                      code: INVALID_PARAM
                      id: 3d81ceae-475f-4600-b2a8-2bc116157532
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CREDENTIAL_REQUIRED:
                  value:
                    error:
                      message: Credential required.
                      code: CREDENTIAL_REQUIRED
                      id: 1384574d-a912-4b81-8601-c7b1c4085df1
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AUTHENTICATION_FAILED:
                  value:
                    error:
                      message: Authentication failed. Please ensure your token is correct.
                      code: AUTHENTICATION_FAILED
                      id: b0a7f5f8-dc2f-4171-b91f-de88ad238e14
        '418':
          description: I'm Ai
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                I_AM_AI:
                  value:
                    error:
                      message: You sent a request to Ai-chan, Misskey's showgirl, instead of the server.
                      code: I_AM_AI
                      id: 60c46cd1-f23a-46b1-bebe-5d2b73951a84
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INTERNAL_ERROR:
                  value:
                    error:
                      message: Internal error occurred. Please contact us if the error persists.
                      code: INTERNAL_ERROR
                      id: 5d37dbcb-891e-41ca-a3d6-e690c97775ac
      tags:
      - Reversi
components:
  schemas:
    ReversiGameLite:
      type: object
      properties:
        id:
          type: string
          format: id
        createdAt:
          type: string
          format: date-time
        startedAt:
          type:
          - string
          - 'null'
          format: date-time
        endedAt:
          type:
          - string
          - 'null'
          format: date-time
        isStarted:
          type: boolean
        isEnded:
          type: boolean
        user1Id:
          type: string
          format: id
        user2Id:
          type: string
          format: id
        user1:
          type: object
          $ref: '#/components/schemas/UserLite'
        user2:
          type: object
          $ref: '#/components/schemas/UserLite'
        winnerId:
          type:
          - string
          - 'null'
          format: id
        winner:
          type:
          - object
          - 'null'
          anyOf:
          - $ref: '#/components/schemas/UserLite'
          - type: 'null'
        surrenderedUserId:
          type:
          - string
          - 'null'
          format: id
        timeoutUserId:
          type:
          - string
          - 'null'
          format: id
        black:
          type:
          - number
          - 'null'
        bw:
          type: string
        noIrregularRules:
          type: boolean
        isLlotheo:
          type: boolean
        canPutEverywhere:
          type: boolean
        loopedBoard:
          type: boolean
        timeLimitForEachTurn:
          type: number
      required:
      - id
      - createdAt
      - startedAt
      - endedAt
      - isStarted
      - isEnded
      - user1Id
      - user2Id
      - user1
      - user2
      - winnerId
      - winner
      - surrenderedUserId
      - timeoutUserId
      - black
      - bw
      - noIrregularRules
      - isLlotheo
      - canPutEverywhere
      - loopedBoard
      - timeLimitForEachTurn
    ReversiGameDetailed:
      type: object
      properties:
        id:
          type: string
          format: id
        createdAt:
          type: string
          format: date-time
        startedAt:
          type:
          - string
          - 'null'
          format: date-time
        endedAt:
          type:
          - string
          - 'null'
          format: date-time
        isStarted:
          type: boolean
        isEnded:
          type: boolean
        form1:
          type:
          - object
          - 'null'
        form2:
          type:
          - object
          - 'null'
        user1Ready:
          type: boolean
        user2Ready:
          type: boolean
        user1Id:
          type: string
          format: id
        user2Id:
          type: string
          format: id
        user1:
          type: object
          $ref: '#/components/schemas/UserLite'
        user2:
          type: object
          $ref: '#/components/schemas/UserLite'
        winnerId:
          type:
          - string
          - 'null'
          format: id
        winner:
          type:
          - object
          - 'null'
          anyOf:
          - $ref: '#/components/schemas/UserLite'
          - type: 'null'
        surrenderedUserId:
          type:
          - string
          - 'null'
          format: id
        timeoutUserId:
          type:
          - string
          - 'null'
          format: id
        black:
          type:
          - number
          - 'null'
        bw:
          type: string
        noIrregularRules:
          type: boolean
        isLlotheo:
          type: boolean
        canPutEverywhere:
          type: boolean
        loopedBoard:
          type: boolean
        timeLimitForEachTurn:
          type: number
        logs:
          type: array
          items:
            type: array
            items:
              type: number
        map:
          type: array
          items:
            type: string
      required:
      - id
      - createdAt
      - startedAt
      - endedAt
      - isStarted
      - isEnded
      - form1
      - form2
      - user1Ready
      - user2Ready
      - user1Id
      - user2Id
      - user1
      - user2
      - winnerId
      - winner
      - surrenderedUserId
      - timeoutUserId
      - black
      - bw
      - noIrregularRules
      - isLlotheo
      - canPutEverywhere
      - loopedBoard
      - timeLimitForEachTurn
      - logs
      - map
    UserLite:
      type: object
      properties:
        id:
          type: string
          format: id
          example: xxxxxxxxxx
        name:
          type:
          - string
          - 'null'
          example: 藍
        username:
          type: string
          example: ai
        host:
          type:
          - string
          - 'null'
          example: misskey.example.com
          description: The local host is represented with `null`.
        avatarUrl:
          type:
          - string
          - 'null'
          format: url
        avatarBlurhash:
          type:
          - string
          - 'null'
        avatarDecorations:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: id
              angle:
                type: number
              flipH:
                type: boolean
              url:
                type: string
                format: url
              offsetX:
                type: number
              offsetY:
                type: number
            required:
            - id
            - url
        isBot:
          type: boolean
        isCat:
          type: boolean
        requireSigninToViewContents:
          type: boolean
        makeNotesFollowersOnlyBefore:
          type:
          - number
          - 'null'
        makeNotesHiddenBefore:
          type:
          - number
          - 'null'
        instance:
          type: object
          properties:
            name:
              type:
              - string
              - 'null'
            softwareName:
              type:
              - string
              - 'null'
            softwareVersion:
              type:
              - string
              - 'null'
            iconUrl:
              type:
              - string
              - 'null'
            faviconUrl:
              type:
              - string
              - 'null'
            themeColor:
              type:
              - string
              - 'null'
          required:
          - name
          - softwareName
          - softwareVersion
          - iconUrl
          - faviconUrl
          - themeColor
        emojis:
          type: object
          additionalProperties:
            type: string
        onlineStatus:
          type: string
          enum:
          - unknown
          - online
          - active
          - offline
        badgeRoles:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              iconUrl:
                type:
                - string
                - 'null'
              displayOrder:
                type: number
              behavior:
                type: stri

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/misskey/refs/heads/main/openapi/misskey-reversi-api-openapi.yml