Lichess Teams API

Access and manage Lichess teams and their members.

OpenAPI Specification

lichess-teams-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 2.0.144
  title: Lichess.org API reference Account Teams API
  contact:
    name: Lichess.org API
    url: https://lichess.org/api
    email: contact@lichess.org
  x-logo:
    url: https://lichess1.org/assets/logo/lichess-pad12.svg
  license:
    name: AGPL-3.0-or-later
    url: https://www.gnu.org/licenses/agpl-3.0.txt
  description: '# Introduction

    Welcome to the reference for the Lichess API! Lichess is free/libre,

    open-source chess server powered by volunteers and donations.

    - Get help in the [Lichess Discord channel](https://discord.gg/lichess)

    - API demo app with OAuth2 login and gameplay: [source](https://github.com/lichess-org/api-demo) / [demo](https://lichess-org.github.io/api-demo/)

    - API UI app with OAuth2 login and endpoint forms: [source](https://github.com/lichess-org/api-ui) / [website](https://lichess.org/api/ui)

    - [Contribute to this documentation on Github](https://github.com/lichess-org/api)

    - Check out [Lichess widgets to embed in your website](https://lichess.org/developers)

    - [Download all Lichess rated games](https://database.lichess.org/)

    - [Download all Lichess puzzles with themes, ratings and votes](https://database.lichess.org/#puzzles)

    - [Download all evaluated positions](https://database.lichess.org/#evals)


    ## Endpoint

    All requests go to `https://lichess.org` (unless otherwise specified).


    ## Clients

    - [Python general API](https://github.com/lichess-org/berserk)

    - [MicroPython general API](https://github.com/mkomon/uberserk)

    - [Python general API - async](https://pypi.org/project/async-lichess-sdk)

    - [Python Lichess Bot](https://github.com/lichess-bot-devs/lichess-bot)

    - [Python Board API for Certabo](https://github.com/haklein/certabo-lichess)

    - [Java general API](https://github.com/tors42/chariot)

    - [JavaScript & TypeScript general API](https://github.com/devjiwonchoi/equine)

    - [LichessNET - C# API Wrapper](https://github.com/Rabergsel/LichessNET)

    - [.NET general API](https://github.com/Dblike/LichessSharp)


    ## Rate limiting

    All requests are rate limited using various strategies,

    to ensure the API remains responsive for everyone.

    Only make one request at a time.

    If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429),

    you have exceded one of the rate limits.

    In most cases, waiting one minute before retrying will be sufficient, but some limits may require longer.

    Reduce your request frequency before retrying.


    ## Streaming with ND-JSON

    Some API endpoints stream their responses as [Newline Delimited JSON a.k.a. **nd-json**](https://github.com/ndjson/ndjson-spec), with one JSON object per line.


    Here''s a [JavaScript utility function](https://gist.github.com/ornicar/a097406810939cf7be1df8ea30e94f3e) to help reading NDJSON streamed responses.


    ## Authentication

    ### Which authentication method is right for me?

    [Read about the Lichess API authentication methods and code examples](https://github.com/lichess-org/api/blob/master/example/README.md)


    ### Personal Access Token

    Personal API access tokens allow you to quickly interact with Lichess API without going through an OAuth flow.

    - [Generate a personal access token](https://lichess.org/account/oauth/token)

    - `curl https://lichess.org/api/account -H "Authorization: Bearer {token}"`

    - [NodeJS example](https://github.com/lichess-org/api/tree/master/example/oauth-personal-token)


    ### Token Security

    - Keep your tokens secret. Do not share them in public repositories or public forums.

    - Your tokens can be used to make your account perform arbitrary actions (within the limits of the tokens'' scope). You remain responsible for all activities on your account.

    - Do not hardcode tokens in your application''s code. Use environment variables or a secure storage and ensure they are not shipped/exposed to users. Be especially careful that they are not included in frontend bundles or apps that are shipped to users.

    - If you suspect a token has been compromised, revoke it immediately.


    To see your active tokens or revoke them, see [your Personal API access tokens](https://lichess.org/account/oauth/token).


    ### Authorization Code Flow with PKCE

    The authorization code flow with PKCE allows your users to **login with Lichess**.

    Lichess supports unregistered and public clients (no client authentication, choose any unique client id).

    The only accepted code challenge method is `S256`.

    Access tokens are long-lived (expect one year), unless they are revoked.

    Refresh tokens are not supported.


    See the [documentation for the OAuth endpoints](#tag/OAuth) or

    the [PKCE RFC](https://datatracker.ietf.org/doc/html/rfc7636#section-4) for a precise protocol description.


    - [Demo app](https://lichess-org.github.io/api-demo/)

    - [Minimal client-side example](https://github.com/lichess-org/api/tree/master/example/oauth-app)

    - [Flask/Python example](https://github.com/lakinwecker/lichess-oauth-flask)

    - [Java example](https://github.com/tors42/lichess-oauth-pkce-app)

    - [NodeJS Passport strategy to login with Lichess OAuth2](https://www.npmjs.com/package/passport-lichess)


    #### Real life examples

    - [PyChess](https://github.com/gbtami/pychess-variants) ([source code](https://github.com/gbtami/pychess-variants))

    - [Lichess4545](https://www.lichess4545.com/) ([source code](https://github.com/cyanfish/heltour))

    - [English Chess Federation](https://ecf.octoknight.com/)

    - [Rotherham Online Chess](https://rotherhamonlinechess.azurewebsites.net/tournaments)


    ### Token format

    Access tokens and authorization codes match `^[A-Za-z0-9_]+$`.

    The length of tokens can be increased without notice. Make sure your application can handle at least 512 characters.

    By convention tokens have a recognizable prefix, but do not rely on this.

    '
servers:
- url: https://lichess.org
- url: https://lichess.dev
- url: http://localhost:{port}
  variables:
    port:
      default: '8080'
- url: http://l.org
tags:
- name: Teams
  description: 'Access and manage Lichess teams and their members.

    <https://lichess.org/team>

    '
paths:
  /api/team/{teamId}/swiss:
    get:
      operationId: apiTeamSwiss
      summary: Get team swiss tournaments
      description: 'Get all swiss tournaments of a team.

        Tournaments are sorted by reverse chronological order of start date (last starting first).

        Tournaments are streamed as [ndjson](#description/streaming-with-nd-json).

        '
      tags:
      - Teams
      security: []
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
        required: true
        example: coders
      - in: query
        name: max
        description: How many tournaments to download.
        schema:
          type: integer
          minimum: 1
          default: 100
      - in: query
        name: status
        description: '[Filter] Only swiss tournaments in this current state.

          '
        schema:
          $ref: '#/components/schemas/SwissStatus'
      - in: query
        name: createdBy
        description: '[Filter] Only swiss tournaments created by a given user.

          '
        schema:
          type: string
      - in: query
        name: name
        description: '[Filter] Only swiss tournaments with a given name.

          '
        schema:
          type: string
      responses:
        '200':
          description: The list of Swiss tournaments of a team.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/x-ndjson:
              schema:
                $ref: '#/components/schemas/SwissTournament'
              examples:
                default:
                  $ref: '#/components/examples/teams-getTeamSwissTournaments.json'
  /api/team/{teamId}:
    get:
      operationId: teamShow
      summary: Get a single team
      description: Public info about a team. Includes the list of publicly visible leaders.
      tags:
      - Teams
      security: []
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
        required: true
      responses:
        '200':
          description: The information about the team.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
              examples:
                default:
                  $ref: '#/components/examples/teams-getSingleTeam.json'
  /api/team/all:
    get:
      operationId: teamAll
      summary: Get popular teams
      description: 'Paginator of the most popular teams.

        '
      tags:
      - Teams
      security: []
      parameters:
      - in: query
        name: page
        schema:
          type: integer
          example: 1
          default: 1
      responses:
        '200':
          description: A paginated list of the most popular teams.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TeamPaginatorJson'
              examples:
                default:
                  $ref: '#/components/examples/teams-getPopularTeams.json'
  /api/team/of/{username}:
    get:
      operationId: teamOfUsername
      summary: Teams of a player
      description: 'All the teams a player is a member of.

        Teams that hide their player list are only included if you also belong to the team.

        '
      tags:
      - Teams
      security:
      - OAuth2: []
      parameters:
      - in: path
        name: username
        schema:
          type: string
          example: thibault
        required: true
      responses:
        '200':
          description: The list of teams the player is a member of.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Team'
              examples:
                default:
                  $ref: '#/components/examples/teams-teamsOfPlayer.json'
  /api/team/search:
    get:
      operationId: teamSearch
      summary: Search teams
      description: 'Paginator of team search results for a keyword.

        '
      tags:
      - Teams
      security: []
      parameters:
      - in: query
        name: text
        schema:
          type: string
          example: coders
      - in: query
        name: page
        schema:
          type: integer
          example: 1
          default: 1
      responses:
        '200':
          description: The paginated list of teams.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TeamPaginatorJson'
              examples:
                default:
                  $ref: '#/components/examples/teams-searchTeams.json'
  /api/team/{teamId}/users:
    get:
      operationId: teamIdUsers
      summary: Get members of a team
      description: 'Members are sorted by reverse chronological order of joining the team (most recent first).

        OAuth is only required if the list of members is private.

        Up to 5,000 users are streamed as [ndjson](#description/streaming-with-nd-json).

        '
      tags:
      - Teams
      security:
      - OAuth2:
        - team:read
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
          example: coders
        required: true
      - in: query
        name: full
        description: 'Full user documents with performance ratings.

          This limits the response to 1,000 users.

          '
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: The list of users in the team.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/x-ndjson:
              schema:
                type: object
                properties:
                  joinedTeamAt:
                    type: integer
                    format: int64
                    example: 1716930043067
                  id:
                    type: string
                    example: chess-network
                  name:
                    type: string
                    example: Chess-Network
                  title:
                    $ref: '#/components/schemas/Title'
                  patronColor:
                    $ref: '#/components/schemas/PatronColor'
                required:
                - id
                - name
  /api/team/{teamId}/arena:
    get:
      operationId: apiTeamArena
      summary: Get team Arena tournaments
      description: 'Get all Arena tournaments relevant to a team.

        Tournaments are sorted by reverse chronological order of start date (last starting first).

        Tournaments are streamed as [ndjson](#description/streaming-with-nd-json).

        '
      tags:
      - Teams
      security: []
      parameters:
      - in: path
        name: teamId
        description: ID of the team
        schema:
          type: string
        required: true
      - in: query
        name: max
        description: How many tournaments to download.
        schema:
          type: integer
          minimum: 1
          default: 100
      - in: query
        name: status
        description: '[Filter] Only arena tournaments in this current state.

          '
        schema:
          $ref: '#/components/schemas/ArenaStatusName'
      - in: query
        name: createdBy
        description: '[Filter] Only arena tournaments created by a given user.

          '
        schema:
          type: string
      - in: query
        name: name
        description: '[Filter] Only arena tournaments with a given name.

          '
        schema:
          type: string
      responses:
        '200':
          description: The list of Arena tournaments of a team.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/x-ndjson:
              schema:
                $ref: '#/components/schemas/ArenaTournament'
              examples:
                default:
                  $ref: '#/components/examples/arenas-getTeamArenaTournaments.json'
  /team/{teamId}/join:
    post:
      operationId: teamIdJoin
      summary: Join a team
      description: 'Join a team.

        If the team requires a password but the `password` field is incorrect,

        then the call fails with `403 Forbidden`.

        Similarly, if the team join policy requires a confirmation but the

        `message` parameter is not given, then the call fails with

        `403 Forbidden`.

        '
      tags:
      - Teams
      security:
      - OAuth2:
        - team:write
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
          example: coders
        required: true
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: Required if team manually reviews admission requests.
                  minLength: 30
                  maxLength: 2000
                password:
                  type: string
                  description: Optional password, if the team requires one.
      responses:
        '200':
          description: The request to join a team was successfully sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ok'
  /team/{teamId}/quit:
    post:
      operationId: teamIdQuit
      summary: Leave a team
      description: 'Leave a team.

        - <https://lichess.org/team>

        '
      tags:
      - Teams
      security:
      - OAuth2:
        - team:write
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
          example: coders
        required: true
      responses:
        '200':
          description: The logged in user has successfully left the team.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ok'
  /api/team/{teamId}/requests:
    get:
      operationId: teamRequests
      summary: Get join requests
      description: Get pending join requests of your team
      tags:
      - Teams
      security:
      - OAuth2:
        - team:read
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
        required: true
      - in: query
        name: declined
        description: Get the declined join requests
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: The list of pending join requests on your team
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TeamRequestWithUser'
                example:
                - request:
                    userId: mary
                    teamId: my-private-team
                    message: Hello, I would like to join the team!
                    date: 1745112259637
                  user:
                    id: mary
                    username: Mary
                    perfs:
                      bullet:
                        games: 119
                        rating: 1066
                        rd: 101
                        prog: -1
                      blitz:
                        games: 34
                        rating: 1007
                        rd: 55
                        prog: -59
                      rapid:
                        games: 134
                        rating: 1021
                        rd: 70
                        prog: 26
                      classical:
                        games: 451
                        rating: 1136
                        rd: 78
                        prog: -1
                      correspondence:
                        games: 35
                        rating: 1049
                        rd: 45
                        prog: 15
                      chess960:
                        games: 52
                        rating: 996
                        rd: 72
                        prog: -9
                      kingOfTheHill:
                        games: 1998
                        rating: 1169
                        rd: 79
                        prog: -13
                      threeCheck:
                        games: 6
                        rating: 946
                        rd: 52
                        prog: 32
                      antichess:
                        games: 79
                        rating: 1143
                        rd: 48
                        prog: 61
                      atomic:
                        games: 239
                        rating: 978
                        rd: 76
                        prog: 22
                      horde:
                        games: 246
                        rating: 1031
                        rd: 108
                        prog: -28
                      crazyhouse:
                        games: 473
                        rating: 1063
                        rd: 88
                        prog: 2
                      puzzle:
                        games: 37
                        rating: 977
                        rd: 86
                        prog: 26
                    flair: food-drink.coconut
                    createdAt: 1744526339498
                    seenAt: 1745112249912
                    playTime:
                      total: 14336
                      tv: 0
  /api/team/{teamId}/request/{userId}/accept:
    post:
      operationId: teamRequestAccept
      summary: Accept join request
      description: Accept someone's request to join your team
      tags:
      - Teams
      security:
      - OAuth2:
        - team:lead
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
          example: coders
        required: true
      - in: path
        name: userId
        schema:
          type: string
          example: neio
        required: true
      responses:
        '200':
          description: The member has been added to the team.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ok'
  /api/team/{teamId}/request/{userId}/decline:
    post:
      operationId: teamRequestDecline
      summary: Decline join request
      description: Decline someone's request to join your team
      tags:
      - Teams
      security:
      - OAuth2:
        - team:lead
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
          example: coders
        required: true
      - in: path
        name: userId
        schema:
          type: string
          example: neio
        required: true
      responses:
        '200':
          description: The join request has been declined and is no longer pending.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ok'
  /api/team/{teamId}/kick/{userId}:
    post:
      operationId: teamIdKickUserId
      summary: Kick a user from your team
      description: 'Kick a member out of one of your teams.

        - <https://lichess.org/team>

        '
      tags:
      - Teams
      security:
      - OAuth2:
        - team:lead
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
          example: coders
        required: true
      - in: path
        name: userId
        schema:
          type: string
          example: neio
        required: true
      responses:
        '200':
          description: The member has been kicked from the team.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ok'
  /team/{teamId}/pm-all:
    post:
      operationId: teamIdPmAll
      summary: Message all members
      description: 'Send a private message to all members of a team.

        You must be a team leader with the "Messages" permission.

        '
      tags:
      - Teams
      security:
      - OAuth2:
        - team:lead
      parameters:
      - in: path
        name: teamId
        schema:
          type: string
          example: coders
        required: true
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: The message to send to all your team members.
      responses:
        '200':
          description: The message has successfully been sent to all team members.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ok'
        '400':
          description: The sending of message to all team members has failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PuzzleModePerf:
      type: object
      properties:
        runs:
          type: integer
        score:
          type: integer
      required:
      - runs
      - score
    PatronColor:
      type: integer
      description: 'Players can choose a color for their Patron wings.

        See [here for the color mappings](https://github.com/lichess-org/lila/blob/master/ui/lib/css/abstract/_patron-colors.scss).


        The presence of this field indicates the player is an active Patron.

        '
      minimum: 1
      maximum: 10
    Verdicts:
      type: object
      properties:
        accepted:
          type: boolean
        list:
          type: array
          items:
            $ref: '#/components/schemas/Verdict'
      required:
      - accepted
      - list
    Variant:
      type: object
      properties:
        key:
          $ref: '#/components/schemas/VariantKey'
        name:
          type: string
        short:
          type: string
      required:
      - key
      - name
    ArenaPerf:
      type: object
      properties:
        key:
          $ref: '#/components/schemas/PerfType'
        name:
          type: string
          example: Blitz
        position:
          type: integer
          example: 1
        icon:
          type: string
          example: )
      required:
      - key
      - name
      - position
    ArenaStatus:
      type: integer
      description: '10: created, 20: started, 30: finished

        '
      enum:
      - 10
      - 20
      - 30
    PlayTime:
      type: object
      properties:
        total:
          type: integer
        tv:
          type: integer
        human:
          type: integer
      required:
      - total
      - tv
    Patron:
      type: boolean
      deprecated: true
      description: 'Use patronColor value instead to determine if player is a patron.

        '
    ArenaStatusName:
      type: string
      description: The current state of the arena tournament
      enum:
      - created
      - started
      - finished
    VariantKey:
      type: string
      enum:
      - standard
      - chess960
      - crazyhouse
      - antichess
      - atomic
      - horde
      - kingOfTheHill
      - racingKings
      - threeCheck
      - fromPosition
      example: standard
      default: standard
    TeamRequest:
      type: object
      properties:
        teamId:
          type: string
          example: coders
        userId:
          type: string
          example: thibault
        date:
          type: integer
          example: 1514505150384
        message:
          type: string
          example: Hello, I would like to join the team!
      required:
      - teamId
      - userId
      - date
    Ok:
      properties:
        ok:
          type: boolean
      required:
      - ok
    PerfType:
      type: string
      enum:
      - ultraBullet
      - bullet
      - blitz
      - rapid
      - classical
      - correspondence
      - chess960
      - crazyhouse
      - antichess
      - atomic
      - horde
      - kingOfTheHill
      - racingKings
      - threeCheck
    Team:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        flair:
          $ref: '#/components/schemas/Flair'
        leader:
          $ref: '#/components/schemas/LightUser'
        leaders:
          type: array
          items:
            $ref: '#/components/schemas/LightUser'
        nbMembers:
          type: integer
        open:
          type: boolean
        joined:
          type: boolean
        requested:
          type: boolean
      required:
      - id
      - name
    SwissTournament:
      type: object
      properties:
        id:
          type: string
        createdBy:
          type: string
        startsAt:
          type: string
        name:
          type: string
        clock:
          type: object
          properties:
            limit:
              type: number
            increment:
              type: number
          required:
          - limit
          - increment
        variant:
          type: string
        round:
          type: number
        nbRounds:
          type: number
        nbPlayers:
          type: number
        nbOngoing:
          type: number
        status:
          $ref: '#/components/schemas/SwissStatus'
        stats:
          type: object
          properties:
            games:
              type: number
            whiteWins:
              type: number
            blackWins:
              type: number
            draws:
              type: number
            byes:
              type: number
            absences:
              type: number
            averageRating:
              type: number
          required:
          - games
          - whiteWins
          - blackWins
          - draws
          - byes
          - absences
          - averageRating
        rated:
          type: boolean
        verdicts:
          $ref: '#/components/schemas/Verdicts'
        nextRound:
          type: object
          properties:
            at:
              type: string
              format: date-time
            in:
              type: integer
              description: The number of seconds until the next round starts.
      required:
      - id
      - createdBy
      - startsAt
      - name
      - clock
      - variant
      - round
      - nbRounds
      - nbPlayers
      - nbOngoing
      - status
      - rated
      - verdicts
    Profile:
      type: object
      properties:
        flag:
          type: string
          example: EC
        location:
          type: string
        bio:
          type: string
          example: Free bugs!
        realName:
          type: string
          example: Thibault Duplessis
        fideRating:
          type: integer
          example: 1500
          description: only appears if a user has set them
        uscfRating:
          type: integer
          example: 1500
          description: only appears if a user has set them
        ecfRating:
          type: integer
          example: 1500
          description: only appears if a user has set them
        cfcRating:
          type: integer
          example: 1500
          description: only appears if a user has set them
        rcfRating:
          type: integer
          example: 1500
          description: only appears if a user has set them
        dsbRating:
          type: integer
          example: 1500
          description: only appears if a user has set them
        links:
          type: string
          example: "github.com/ornicar\r\nmas.to/@thibault"
    Verdict:
      type: object
      properties:
        condition:
          type: string
        verdict:
          type: string
      required:
      - condition
      - verdict
    Clock:
      type: object
      properties:
        limit:
          type: integer
        increment:
          type: integer
      required:
      - limit
      - increment
    Flair:
      type: string
      description: See [available flair list and images](https://github.com/lichess-org/lila/tree/master/public/flair)
    Perf:
      type: object
      properties:
        games:
          type: integer
        rating:
          type: integer
        rd:
          type: integer
          description: rating deviation
        prog:
          type: integer
        prov:
          type: boolean
          description: only appears if a user's perf rating are [provisional](https://lichess.org/faq#provisional)
        rank:
          type: integer
          description: global lichess ranking, only appears for recently active players
      required:
      - games
      - rating
      - rd
      - prog
    Error:
      type: object
      properties:
        error:
          type: string
          description: The cause of the error.
      required:
      - error
      example:
        error: This request is invalid because [...]
    User:
      type: object
      properties:
        id:
          type: string
        username:
          type: st

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