{
  "openapi": "3.1.1",
  "info": {
    "title": "BuzzerBeater Public API",
    "description": "Read-only access to BuzzerBeater for third-party tools, on behalf of the managers who allow it. See the developer guide for authentication, scopes and quotas.",
    "version": "public"
  },
  "servers": [
    {
      "url": "http://buzzerbeater-api/"
    }
  ],
  "paths": {
    "/v1/teams/{teamId}/economy": {
      "get": {
        "tags": [
          "economy"
        ],
        "summary": "The club's money",
        "description": "Balance, money available and the transactions of the last weeks. The manager's own clubs only.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EconomySummary"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/economy/salaries": {
      "get": {
        "tags": [
          "economy"
        ],
        "summary": "The club's salaries",
        "description": "What each player and staff member is paid a week. The manager's own clubs only.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payroll"
                }
              }
            }
          }
        }
      }
    },
    "/v1/me": {
      "get": {
        "tags": [
          "manager"
        ],
        "summary": "The manager the token reads on behalf of",
        "description": "Username, supporter status, the clubs they own and the national teams they coach, and the scopes the token was granted.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Me"
                }
              }
            }
          }
        }
      }
    },
    "/v1/market/players": {
      "get": {
        "tags": [
          "market"
        ],
        "summary": "Search the transfer list",
        "description": "Players up for auction with their public figures, price and deadline, never their skills. A search pages no deeper than 150 players: narrow the filters to see more.",
        "parameters": [
          {
            "name": "MinAge",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "MaxAge",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "MinHeight",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "MaxHeight",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "MinSalary",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "MaxSalary",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "MinPrice",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "MinPotential",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PotentialType"
            }
          },
          {
            "name": "MaxPotential",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PotentialType"
            }
          },
          {
            "name": "Country",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Position",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/BasketballPosition"
            }
          },
          {
            "name": "Injury",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/MarketInjuryStatus"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/MarketOrderType"
            }
          },
          {
            "name": "Sort",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SortType"
            }
          },
          {
            "name": "Offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "Limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketPlayerList"
                }
              }
            }
          }
        }
      }
    },
    "/v1/market/players/{playerId}/auction": {
      "get": {
        "tags": [
          "market"
        ],
        "summary": "A player's auction",
        "description": "The current or latest auction: prices, exact deadline, listing club and the bids the manager may see. While it is open it carries the player's skills until skillsVisibleUntil; each such reveal counts against daily limits for the manager and for the application.",
        "parameters": [
          {
            "name": "playerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Auction"
                }
              }
            }
          }
        }
      }
    },
    "/v1/matches/{matchId}": {
      "get": {
        "tags": [
          "matches"
        ],
        "summary": "A match",
        "description": "When and where it is played, who plays it and, once the broadcast is over, the score by period.",
        "parameters": [
          {
            "name": "matchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Match"
                }
              }
            }
          }
        }
      }
    },
    "/v1/matches/{matchId}/boxscore": {
      "get": {
        "tags": [
          "matches"
        ],
        "summary": "A match's box score",
        "description": "Each side's strategies and ratings and every player's line. Refused while the match is still being broadcast.",
        "parameters": [
          {
            "name": "matchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoxScore"
                }
              }
            }
          }
        }
      }
    },
    "/v1/national-teams/{teamId}/roster": {
      "get": {
        "tags": [
          "national-teams"
        ],
        "summary": "A national team's squad",
        "description": "The players called up, with their public figures. Skills come only when the manager coaches the team and the token has the national scope.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roster"
                }
              }
            }
          }
        }
      }
    },
    "/v1/national-teams/{teamId}/training/history": {
      "get": {
        "tags": [
          "national-teams"
        ],
        "summary": "The squad's training history",
        "description": "The skill changes the called-up players got from their clubs' training, newest first, without the drills. The team's coach only; a coach who is not a supporter gets the latest day only.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SquadTrainingHistory"
                }
              }
            }
          }
        }
      }
    },
    "/v1/oauth/token": {
      "post": {
        "tags": [
          "oauth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/oauth/revoke": {
      "post": {
        "tags": [
          "oauth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/players/{playerId}": {
      "get": {
        "tags": [
          "players"
        ],
        "summary": "A player",
        "description": "Public figures for anyone. Skills come only for the manager's own players with the team scope, or the squad of the national team they coach with the national scope; a transfer-listed player's skills come from his auction alone. Looking up another manager's player counts against the daily breadth.",
        "parameters": [
          {
            "name": "playerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Player"
                }
              }
            }
          }
        }
      }
    },
    "/v1/players/{playerId}/training": {
      "get": {
        "tags": [
          "players"
        ],
        "summary": "A player's training history",
        "description": "Every session the player took part in, with his minutes and the skills that moved. The manager's own players only, and only for a supporter.",
        "parameters": [
          {
            "name": "playerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlayerTraining"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "A team",
        "description": "Name, short name, country, manager, league, arena and record, as the team's page shows them to anyone. Looking into another manager's team counts against the daily breadth.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Team"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/roster": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "A team's players",
        "description": "The players of a club, or the called-up squad of a national team, with their public figures. Skills come only for the manager's own club with the team scope, or the national team they coach with the national scope.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roster"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/schedule": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "A team's matches in a season",
        "description": "Oldest first, a page at a time. season is the season number and defaults to the one being played.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "season",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Schedule"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/stats": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "A team's player figures for a season",
        "description": "A club's league games, a national team's official games. mode is Averages (per game, the default) or Totals.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "season",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ApiStatsMode"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamStats"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/arena": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "A club's arena",
        "description": "Seats and ticket prices of each section, as visitors see them.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Arena"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/training": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "The club's current training",
        "description": "The drill and the positions it trains. The manager's own clubs only.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrainingPlan"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/training/history": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "The club's past training sessions",
        "description": "Newest first: drill, positions, efficiency, the staff and facilities each session ran with, every player's minutes, the skill changes and the breakthroughs. A manager who is not a supporter gets the latest session only. The manager's own clubs only.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrainingHistory"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/staff": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "The club's staff",
        "description": "Each member's role, level, specialty and salary. The manager's own clubs only.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StaffList"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/facilities": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "The club's sport city",
        "description": "The level of each building and its weekly upkeep. The manager's own clubs only.",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Facilities"
                }
              }
            }
          }
        }
      }
    },
    "/v1/competitions/{competitionId}/standings": {
      "get": {
        "tags": [
          "world"
        ],
        "summary": "A competition's tables",
        "description": "The table of every group of each stage played as a table, for a league or any other competition. season is the season number and defaults to the one being played.",
        "parameters": [
          {
            "name": "competitionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "season",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Standings"
                }
              }
            }
          }
        }
      }
    },
    "/v1/seasons": {
      "get": {
        "tags": [
          "world"
        ],
        "summary": "The seasons of the game",
        "description": "Oldest first, a page at a time.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeasonList"
                }
              }
            }
          }
        }
      }
    },
    "/v1/countries": {
      "get": {
        "tags": [
          "world"
        ],
        "summary": "Every country the game is played in",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountryList"
                }
              }
            }
          }
        }
      }
    },
    "/v1/countries/{countryId}/leagues": {
      "get": {
        "tags": [
          "world"
        ],
        "summary": "A country's leagues",
        "description": "Top division first, a page at a time; level narrows them to one division.",
        "parameters": [
          {
            "name": "countryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "level",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeagueList"
                }
              }
            }
          }
        }
      }
    },
    "/v1/countries/{countryId}/national-teams": {
      "get": {
        "tags": [
          "world"
        ],
        "summary": "A country's national teams",
        "description": "The senior and the junior team, with their coaches.",
        "parameters": [
          {
            "name": "countryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NationalTeamList"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApiScope": {
        "enum": [
          "Public",
          "Team",
          "Economy",
          "Market",
          "National"
        ]
      },
      "ApiStatsMode": {
        "enum": [
          "Averages",
          "Totals"
        ]
      },
      "Arena": {
        "required": [
          "teamId",
          "name",
          "capacity",
          "seats",
          "prices",
          "isUnderConstruction"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "capacity": {
            "type": "integer",
            "format": "int32"
          },
          "seats": {
            "$ref": "#/components/schemas/ArenaSeatsData"
          },
          "prices": {
            "$ref": "#/components/schemas/ArenaSeatsData"
          },
          "isUnderConstruction": {
            "type": "boolean"
          }
        }
      },
      "ArenaSeatsData": {
        "required": [
          "bleachers",
          "lowerTier",
          "courtside",
          "luxuryBoxes"
        ],
        "type": "object",
        "properties": {
          "bleachers": {
            "type": "integer",
            "format": "int32"
          },
          "lowerTier": {
            "type": "integer",
            "format": "int32"
          },
          "courtside": {
            "type": "integer",
            "format": "int32"
          },
          "luxuryBoxes": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "Auction": {
        "required": [
          "id",
          "playerId",
          "startingPrice",
          "currentPrice",
          "startedAt",
          "endsAt",
          "isOpen",
          "bids",
          "hasMoreBids"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "playerId": {
            "type": "string",
            "format": "uuid"
          },
          "startingPrice": {
            "type": "integer",
            "format": "int64"
          },
          "currentPrice": {
            "type": "integer",
            "format": "int64"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "isOpen": {
            "type": "boolean"
          },
          "listingClub": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AuctionClubData"
              }
            ]
          },
          "bids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuctionBidData"
            }
          },
          "hasMoreBids": {
            "type": "boolean"
          },
          "skills": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PlayerSkillsData"
              }
            ]
          },
          "skillsVisibleUntil": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "AuctionBidData": {
        "required": [
          "team",
          "amount",
          "at"
        ],
        "type": "object",
        "properties": {
          "team": {
            "$ref": "#/components/schemas/AuctionClubData"
          },
          "amount": {
            "type": "integer",
            "format": "int64"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AuctionClubData": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "BasketballPosition": {
        "enum": [
          "None",
          "PointGuard",
          "ShootingGuard",
          "SmallForward",
          "PowerForward",
          "Center"
        ]
      },
      "BoxScore": {
        "required": [
          "matchId",
          "teams"
        ],
        "type": "object",
        "properties": {
          "matchId": {
            "type": "string",
            "format": "uuid"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BoxScoreSideData"
            }
          }
        }
      },
      "BoxScorePlayerData": {
        "required": [
          "id",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          }
        }
      },
      "BoxScorePlayerLine": {
        "required": [
          "player",
          "minutes",
          "points",
          "fieldGoals",
          "fieldGoalsAttempts",
          "threePointFieldGoals",
          "threePointFieldGoalsAttempts",
          "freeThrows",
          "freeThrowsAttempts",
          "rebounds",
          "offensiveRebounds",
          "assists",
          "turnovers",
          "steals",
          "blocks",
          "fouls",
          "plusMinus"
        ],
        "type": "object",
        "properties": {
          "player": {
            "$ref": "#/components/schemas/BoxScorePlayerData"
          },
          "position": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BasketballPosition"
              }
            ]
          },
          "minutes": {
            "type": "integer",
            "format": "int32"
          },
          "points": {
            "type": "integer",
            "format": "int32"
          },
          "fieldGoals": {
            "type": "integer",
            "format": "int32"
          },
          "fieldGoalsAttempts": {
            "type": "integer",
            "format": "int32"
          },
          "threePointFieldGoals": {
            "type": "integer",
            "format": "int32"
          },
          "threePointFieldGoalsAttempts": {
            "type": "integer",
            "format": "int32"
          },
          "freeThrows": {
            "type": "integer",
            "format": "int32"
          },
          "freeThrowsAttempts": {
            "type": "integer",
            "format": "int32"
          },
          "rebounds": {
            "type": "integer",
            "format": "int32"
          },
          "offensiveRebounds": {
            "type": "integer",
            "format": "int32"
          },
          "assists": {
            "type": "integer",
            "format": "int32"
          },
          "turnovers": {
            "type": "integer",
            "format": "int32"
          },
          "steals": {
            "type": "integer",
            "format": "int32"
          },
          "blocks": {
            "type": "integer",
            "format": "int32"
          },
          "fouls": {
            "type": "integer",
            "format": "int32"
          },
          "plusMinus": {
            "type": "integer",
            "format": "int32"
          },
          "starRating": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "BoxScoreRatingsData": {
        "required": [
          "offenseStrategy",
          "defensiveStrategy",
          "outsideScoring",
          "insideScoring",
          "outsideDefense",
          "insideDefense",
          "rebounding",
          "offensiveFlow"
        ],
        "type": "object",
        "properties": {
          "offenseStrategy": {
            "$ref": "#/components/schemas/OffenseType"
          },
          "defensiveStrategy": {
            "$ref": "#/components/schemas/DefenseType"
          },
          "outsideScoring": {
            "$ref": "#/components/schemas/RatingType"
          },
          "insideScoring": {
            "$ref": "#/components/schemas/RatingType"
          },
          "outsideDefense": {
            "$ref": "#/components/schemas/RatingType"
          },
          "insideDefense": {
            "$ref": "#/components/schemas/RatingType"
          },
          "rebounding": {
            "$ref": "#/components/schemas/RatingType"
          },
          "offensiveFlow": {
            "$ref": "#/components/schemas/RatingType"
          }
        }
      },
      "BoxScoreSideData": {
        "required": [
          "players"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "ratings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BoxScoreRatingsData"
              }
            ]
          },
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BoxScorePlayerLine"
            }
          }
        }
      },
      "BuildingType": {
        "enum": [
          "Gym",
          "HealthCenter",
          "TrainingCourt",
          "TvStation",
          "MerchStore"
        ]
      },
      "CompetitionStageRole": {
        "enum": [
          "RegularSeason",
          "Qualification",
          "Championship",
          "Relegation"
        ]
      },
      "CompetitionType": {
        "enum": [
          "League",
          "PrivateLeague",
          "Madness",
          "Best",
          "Championship",
          "Cup",
          "Consolation"
        ]
      },
      "ConfederationType": {
        "enum": [
          "Europe",
          "Asia",
          "Americas",
          "Africa",
          null
        ]
      },
      "CountryList": {
        "required": [
          "countries"
        ],
        "type": "object",
        "properties": {
          "countries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CountryListCountryData"
            }
          }
        }
      },
      "CountryListCountryData": {
        "required": [
          "id",
          "isMicroCountry"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "confederation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ConfederationType"
              }
            ]
          },
          "isMicroCountry": {
            "type": "boolean"
          }
        }
      },
      "DefenseType": {
        "enum": [
          "ManToMan",
          "TwoThreeZone",
          "ThreeTwoZone",
          "OneThreeOneZone",
          "FullCourtPress",
          "InsideBoxAndOne",
          "OutsideBoxAndOne"
        ]
      },
      "EconomySummary": {
        "required": [
          "teamId",
          "transactions"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "balance": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "availableMoney": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "expectedSaleProceeds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EconomySummaryTransactionData"
            }
          }
        }
      },
      "EconomySummaryTransactionData": {
        "required": [
          "type",
          "amount",
          "at"
        ],
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/TransactionType"
          },
          "amount": {
            "type": "integer",
            "format": "int64"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "matchId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "Facilities": {
        "required": [
          "teamId",
          "buildings",
          "totalWeeklyUpkeep"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "buildings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FacilitiesBuildingData"
            }
          },
          "totalWeeklyUpkeep": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "FacilitiesBuildingData": {
        "required": [
          "type",
          "level",
          "maxLevel",
          "weeklyUpkeep"
        ],
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/BuildingType"
          },
          "level": {
            "type": "integer",
            "format": "int16"
          },
          "maxLevel": {
            "type": "integer",
            "format": "int16"
          },
          "weeklyUpkeep": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "InjuryType": {
        "enum": [
          "MildAnkleSprain",
          "StomachVirus",
          "SoreBack",
          "BruisedKnee",
          "BrokenNose",
          "SprainedKnee",
          "PulledGroin",
          "FacialCuts",
          "Concussion",
          "BrokenFinger",
          "SevereAnkleSprain",
          "FootFractures",
          "TornAcl",
          "BrokenLeg",
          "SportsHernia",
          "BrokenHip",
          null
        ]
      },
      "LeagueList": {
        "required": [
          "countryId",
          "leagues"
        ],
        "type": "object",
        "properties": {
          "countryId": {
            "type": "string"
          },
          "leagues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeagueListLeagueData"
            }
          }
        }
      },
      "LeagueListLeagueData": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "level": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "MarketInjuryStatus": {
        "enum": [
          "Nothing",
          "OnlyInjured",
          "ExcludeInjured",
          null
        ]
      },
      "MarketOrderType": {
        "enum": [
          "AuctionTime",
          "Age",
          "Salary",
          "TotalSkillsPoints",
          "CurrentBid",
          "Height",
          "Dmi",
          "GameShape",
          "Potential",
          "Experience",
          "JumpShot",
          "JumpRange",
          "OutsideDefense",
          "Handling",
          "Driving",
          "Passing",
          "InsideShot",
          "InsideDefense",
          "Rebound",
          "ShotBlock",
          "Stamina",
          "FreeThrow",
          "GuardSkillPoints",
          "BigMenSkillPoints",
          null
        ]
      },
      "MarketPlayerList": {
        "required": [
          "players"
        ],
        "type": "object",
        "properties": {
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketPlayerListListingData"
            }
          }
        }
      },
      "MarketPlayerListListingData": {
        "required": [
          "auctionId",
          "currentPrice",
          "endsAt",
          "player"
        ],
        "type": "object",
        "properties": {
          "auctionId": {
            "type": "string",
            "format": "uuid"
          },
          "currentPrice": {
            "type": "integer",
            "format": "int64"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "leadingBidder": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MarketPlayerListTeamData"
              }
            ]
          },
          "player": {
            "$ref": "#/components/schemas/MarketPlayerListPlayerData"
          }
        }
      },
      "MarketPlayerListPlayerData": {
        "required": [
          "id",
          "firstName",
          "lastName",
          "countryId",
          "age",
          "height",
          "salary",
          "dmi",
          "potential",
          "gameShape",
          "bestPosition"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "countryId": {
            "type": "string"
          },
          "age": {
            "type": "integer",
            "format": "int16"
          },
          "height": {
            "type": "integer",
            "format": "int16"
          },
          "salary": {
            "type": "integer",
            "format": "int64"
          },
          "dmi": {
            "type": "integer",
            "format": "int64"
          },
          "potential": {
            "type": "integer",
            "format": "int32"
          },
          "gameShape": {
            "type": "integer",
            "format": "int32"
          },
          "bestPosition": {
            "$ref": "#/components/schemas/BasketballPosition"
          }
        }
      },
      "MarketPlayerListTeamData": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "Match": {
        "required": [
          "id",
          "type",
          "scheduledAt",
          "isLive",
          "arenaName",
          "teams"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/MatchType"
          },
          "phase": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MatchPhaseType"
              }
            ]
          },
          "competition": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MatchCompetitionData"
              }
            ]
          },
          "scheduledAt": {
            "type": "string",
            "format": "date-time"
          },
          "finishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "isLive": {
            "type": "boolean"
          },
          "arenaName": {
            "type": "string"
          },
          "attendance": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MatchSideData"
            }
          }
        }
      },
      "MatchCompetitionData": {
        "required": [
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/CompetitionType"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "MatchPhaseType": {
        "enum": [
          "Repechage",
          "Relegation",
          "Qualification",
          "RoundOf64",
          "RoundOf32",
          "RoundOf16",
          "Quarterfinal",
          "Semifinal",
          "Final",
          null
        ]
      },
      "MatchSideData": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "isHome": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "score": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "periodScores": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "integer",
              "format": "int16"
            }
          }
        }
      },
      "MatchType": {
        "enum": [
          "Scrimmage",
          "League",
          "PrivateLeague",
          "Madness",
          "Best",
          "World",
          "Continental",
          "Cup",
          "Consolation",
          "Pickup",
          "AllStar"
        ]
      },
      "Me": {
        "required": [
          "id",
          "username",
          "isSupporter",
          "teams",
          "scopes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          },
          "isSupporter": {
            "type": "boolean"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MeTeamData"
            }
          },
          "scopes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiScope"
            }
          }
        }
      },
      "MeTeamData": {
        "required": [
          "id",
          "name",
          "shortName",
          "kind"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "shortName": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/TeamType"
          }
        }
      },
      "NationalTeamList": {
        "required": [
          "countryId",
          "teams"
        ],
        "type": "object",
        "properties": {
          "countryId": {
            "type": "string"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NationalTeamListTeamData"
            }
          }
        }
      },
      "NationalTeamListCoachData": {
        "required": [
          "id",
          "username"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "NationalTeamListTeamData": {
        "required": [
          "id",
          "name",
          "kind"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/TeamType"
          },
          "coach": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NationalTeamListCoachData"
              }
            ]
          }
        }
      },
      "OffenseType": {
        "enum": [
          "BaseOffense",
          "PushTheBall",
          "Patient",
          "LookInside",
          "LowPost",
          "Motion",
          "RunAndGun",
          "Princeton",
          "InsideIsolation",
          "OutsideIsolation"
        ]
      },
      "Payroll": {
        "required": [
          "teamId",
          "players",
          "staff",
          "salaryFloor",
          "salaryDay",
          "nextSalaryDay"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrollSalaryData"
            }
          },
          "staff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrollSalaryData"
            }
          },
          "salaryFloor": {
            "type": "integer",
            "format": "int64"
          },
          "salaryDay": {
            "type": "string",
            "format": "date-time"
          },
          "nextSalaryDay": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PayrollSalaryData": {
        "required": [
          "id",
          "firstName",
          "lastName",
          "salary"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "salary": {
            "type": "integer",
            "format": "int64"
          },
          "nextSalary": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          }
        }
      },
      "Player": {
        "required": [
          "id",
          "firstName",
          "lastName",
          "countryId",
          "age",
          "height",
          "salary",
          "dmi",
          "potential",
          "gameShape",
          "buzzerBeaterRating",
          "bestPosition",
          "isTransferListed",
          "isRetired"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "nickname": {
            "type": [
              "null",
              "string"
            ]
          },
          "number": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int16"
          },
          "countryId": {
            "type": "string"
          },
          "age": {
            "type": "integer",
            "format": "int16"
          },
          "height": {
            "type": "integer",
            "format": "int16"
          },
          "salary": {
            "type": "integer",
            "format": "int64"
          },
          "dmi": {
            "type": "integer",
            "format": "int64"
          },
          "potential": {
            "type": "integer",
            "format": "int32"
          },
          "gameShape": {
            "type": "integer",
            "format": "int32"
          },
          "buzzerBeaterRating": {
            "type": "integer",
            "format": "int32"
          },
          "bestPosition": {
            "$ref": "#/components/schemas/BasketballPosition"
          },
          "isTransferListed": {
            "type": "boolean"
          },
          "isRetired": {
            "type": "boolean"
          },
          "injury": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PlayerInjuryData"
              }
            ]
          },
          "club": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PlayerClubData"
              }
            ]
          },
          "nationalTeam": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PlayerNationalTeamData"
              }
            ]
          },
          "skills": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PlayerSkillsData"
              }
            ]
          }
        }
      },
      "PlayerClubData": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PlayerInjuryData": {
        "required": [
          "minDays",
          "maxDays"
        ],
        "type": "object",
        "properties": {
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/InjuryType"
              }
            ]
          },
          "minDays": {
            "type": "integer",
            "format": "int32"
          },
          "maxDays": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PlayerNationalTeamData": {
        "required": [
          "id",
          "name",
          "kind"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/TeamType"
          }
        }
      },
      "PlayerSkillsData": {
        "required": [
          "jumpShot",
          "jumpRange",
          "outsideDefense",
          "handling",
          "driving",
          "passing",
          "insideShot",
          "insideDefense",
          "rebound",
          "shotBlock",
          "stamina",
          "freeThrow",
          "experience"
        ],
        "type": "object",
        "properties": {
          "jumpShot": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "jumpRange": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "outsideDefense": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "handling": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "driving": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "passing": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "insideShot": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "insideDefense": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "rebound": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "shotBlock": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "stamina": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "freeThrow": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          },
          "experience": {
            "$ref": "#/components/schemas/PlayerSkillValue"
          }
        }
      },
      "PlayerSkillType": {
        "enum": [
          "Agreeable",
          "Aggressive",
          "Driving",
          "Experience",
          "FreeThrow",
          "GameShape",
          "Handling",
          "InsideDefense",
          "InsideShot",
          "JumpRange",
          "JumpShot",
          "OutsideDefense",
          "Passing",
          "Physical",
          "Potential",
          "Practice",
          "Rebound",
          "ShotBlock",
          "Stamina",
          "Strength",
          "Leadership"
        ]
      },
      "PlayerSkillValue": {
        "required": [
          "level",
          "change"
        ],
        "type": "object",
        "properties": {
          "level": {
            "type": "integer",
            "format": "int32"
          },
          "change": {
            "$ref": "#/components/schemas/SkillChange"
          }
        }
      },
      "PlayerTraining": {
        "required": [
          "playerId",
          "minutesSinceLastSession",
          "sessions"
        ],
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string",
            "format": "uuid"
          },
          "currentType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TrainingType"
              }
            ]
          },
          "currentPositions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/BasketballPosition"
            }
          },
          "minutesSinceLastSession": {
            "type": "integer",
            "format": "int32"
          },
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlayerTrainingSessionData"
            }
          }
        }
      },
      "PlayerTrainingSessionData": {
        "required": [
          "type",
          "positions",
          "trainedAt",
          "skillChanges"
        ],
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/TrainingType"
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BasketballPosition"
            }
          },
          "trainedAt": {
            "type": "string",
            "format": "date-time"
          },
          "trainingMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "hasFullMinutes": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "skillChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlayerTrainingSkillChangeData"
            }
          }
        }
      },
      "PlayerTrainingSkillChangeData": {
        "required": [
          "skill",
          "from",
          "to"
        ],
        "type": "object",
        "properties": {
          "skill": {
            "$ref": "#/components/schemas/PlayerSkillType"
          },
          "from": {
            "$ref": "#/components/schemas/RatingType"
          },
          "to": {
            "$ref": "#/components/schemas/RatingType"
          }
        }
      },
      "PotentialType": {
        "enum": [
          "Announcer",
          "BenchWarmer",
          "RolePlayer",
          "SixthMan",
          "Starter",
          "Star",
          "AllStar",
          "PerennialAllStar",
          "Superstar",
          "Mvp",
          "HallOfFamer",
          "AllTimeGreat",
          null
        ]
      },
      "RatingType": {
        "enum": [
          "Atrocious",
          "Pitiful",
          "Awful",
          "Inept",
          "Mediocre",
          "Average",
          "Respectable",
          "Strong",
          "Proficient",
          "Prominent",
          "Prolific",
          "Sensational",
          "Tremendous",
          "Wondrous",
          "Marvelous",
          "Prodigious",
          "Stupendous",
          "Phenomenal",
          "Colossal",
          "Legendary"
        ]
      },
      "Roster": {
        "required": [
          "teamId",
          "players"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Player"
            }
          }
        }
      },
      "Schedule": {
        "required": [
          "teamId",
          "season",
          "matches"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "season": {
            "type": "integer",
            "format": "int32"
          },
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScheduleMatchData"
            }
          }
        }
      },
      "ScheduleCompetitionData": {
        "required": [
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/CompetitionType"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ScheduleMatchData": {
        "required": [
          "id",
          "type",
          "scheduledAt",
          "isLive",
          "teams"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/MatchType"
          },
          "phase": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MatchPhaseType"
              }
            ]
          },
          "competition": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ScheduleCompetitionData"
              }
            ]
          },
          "scheduledAt": {
            "type": "string",
            "format": "date-time"
          },
          "finishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "isLive": {
            "type": "boolean"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScheduleSideData"
            }
          }
        }
      },
      "ScheduleSideData": {
        "required": [
          "name",
          "isHome"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "isHome": {
            "type": "boolean"
          },
          "score": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "SeasonList": {
        "required": [
          "seasons"
        ],
        "type": "object",
        "properties": {
          "seasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SeasonListSeasonData"
            }
          }
        }
      },
      "SeasonListSeasonData": {
        "required": [
          "id",
          "number",
          "startDate",
          "endDate"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "SkillChange": {
        "enum": [
          "Unchanged",
          "Improved",
          "Worsened"
        ]
      },
      "SortType": {
        "enum": [
          "Asc",
          "Desc",
          null
        ]
      },
      "SpecialtyType": {
        "enum": [
          "None",
          "Beginner",
          "Advanced",
          null
        ]
      },
      "SquadTrainingHistory": {
        "required": [
          "teamId",
          "skillChanges"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "skillChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SquadTrainingHistorySkillChangeData"
            }
          }
        }
      },
      "SquadTrainingHistoryClubData": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "SquadTrainingHistoryPlayerData": {
        "required": [
          "id",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          }
        }
      },
      "SquadTrainingHistorySkillChangeData": {
        "required": [
          "trainingId",
          "trainedAt",
          "player",
          "club",
          "skill",
          "from",
          "to"
        ],
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "format": "uuid"
          },
          "trainedAt": {
            "type": "string",
            "format": "date-time"
          },
          "player": {
            "$ref": "#/components/schemas/SquadTrainingHistoryPlayerData"
          },
          "club": {
            "$ref": "#/components/schemas/SquadTrainingHistoryClubData"
          },
          "skill": {
            "$ref": "#/components/schemas/PlayerSkillType"
          },
          "from": {
            "$ref": "#/components/schemas/RatingType"
          },
          "to": {
            "$ref": "#/components/schemas/RatingType"
          }
        }
      },
      "StaffList": {
        "required": [
          "teamId",
          "members"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffListMemberData"
            }
          }
        }
      },
      "StaffListMemberData": {
        "required": [
          "id",
          "firstName",
          "lastName",
          "type",
          "level",
          "salary"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/StaffType"
          },
          "level": {
            "$ref": "#/components/schemas/StaffSkillLevel"
          },
          "specialty": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SpecialtyType"
              }
            ]
          },
          "salary": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "StaffSkillLevel": {
        "enum": [
          "Minimal",
          "Basic",
          "Competent",
          "Advanced",
          "Superior",
          "Exceptional",
          "WorldRenowned",
          null
        ]
      },
      "StaffType": {
        "enum": [
          "Doctor",
          "Coach",
          "Manager",
          "YouthTrainer",
          "Psychologist",
          "Nutritionist"
        ]
      },
      "StandingOutcome": {
        "enum": [
          "Playoff",
          "Playout",
          "Demoted",
          null
        ]
      },
      "Standings": {
        "required": [
          "competitionId",
          "season",
          "groups"
        ],
        "type": "object",
        "properties": {
          "competitionId": {
            "type": "string",
            "format": "uuid"
          },
          "season": {
            "type": "integer",
            "format": "int32"
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StandingsGroupData"
            }
          }
        }
      },
      "StandingsGroupData": {
        "required": [
          "stageId",
          "role",
          "teams"
        ],
        "type": "object",
        "properties": {
          "stageId": {
            "type": "string",
            "format": "uuid"
          },
          "role": {
            "$ref": "#/components/schemas/CompetitionStageRole"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "tier": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StandingsRowData"
            }
          }
        }
      },
      "StandingsRowData": {
        "required": [
          "team",
          "rank",
          "wins",
          "losses",
          "forfeits",
          "pointsScored",
          "pointsAllowed",
          "gamesBehind"
        ],
        "type": "object",
        "properties": {
          "team": {
            "$ref": "#/components/schemas/StandingsTeamData"
          },
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "wins": {
            "type": "integer",
            "format": "int32"
          },
          "losses": {
            "type": "integer",
            "format": "int32"
          },
          "forfeits": {
            "type": "integer",
            "format": "int32"
          },
          "pointsScored": {
            "type": "integer",
            "format": "int32"
          },
          "pointsAllowed": {
            "type": "integer",
            "format": "int32"
          },
          "gamesBehind": {
            "type": "number",
            "format": "double"
          },
          "outcome": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StandingOutcome"
              }
            ]
          }
        }
      },
      "StandingsTeamData": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "Team": {
        "required": [
          "id",
          "name",
          "shortName",
          "countryId",
          "kind",
          "wins",
          "losses"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "shortName": {
            "type": "string"
          },
          "countryId": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/TeamType"
          },
          "manager": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TeamManagerData"
              }
            ]
          },
          "league": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TeamLeagueData"
              }
            ]
          },
          "arena": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TeamArenaData"
              }
            ]
          },
          "wins": {
            "type": "integer",
            "format": "int32"
          },
          "losses": {
            "type": "integer",
            "format": "int32"
          },
          "worldRank": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "countryRank": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "TeamArenaData": {
        "required": [
          "name",
          "capacity"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "capacity": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TeamLeagueData": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "level": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "TeamManagerData": {
        "required": [
          "id",
          "username"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "TeamStats": {
        "required": [
          "teamId",
          "season",
          "mode",
          "players"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "season": {
            "type": "integer",
            "format": "int32"
          },
          "mode": {
            "$ref": "#/components/schemas/ApiStatsMode"
          },
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamStatsPlayerLine"
            }
          }
        }
      },
      "TeamStatsPlayerData": {
        "required": [
          "id",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          }
        }
      },
      "TeamStatsPlayerLine": {
        "required": [
          "player",
          "games",
          "minutes",
          "points",
          "fieldGoals",
          "fieldGoalsAttempts",
          "threePointFieldGoals",
          "threePointFieldGoalsAttempts",
          "freeThrows",
          "freeThrowsAttempts",
          "rebounds",
          "offensiveRebounds",
          "assists",
          "turnovers",
          "steals",
          "blocks",
          "fouls",
          "starRating"
        ],
        "type": "object",
        "properties": {
          "player": {
            "$ref": "#/components/schemas/TeamStatsPlayerData"
          },
          "games": {
            "type": "integer",
            "format": "int32"
          },
          "minutes": {
            "type": "number",
            "format": "double"
          },
          "points": {
            "type": "number",
            "format": "double"
          },
          "fieldGoals": {
            "type": "number",
            "format": "double"
          },
          "fieldGoalsAttempts": {
            "type": "number",
            "format": "double"
          },
          "threePointFieldGoals": {
            "type": "number",
            "format": "double"
          },
          "threePointFieldGoalsAttempts": {
            "type": "number",
            "format": "double"
          },
          "freeThrows": {
            "type": "number",
            "format": "double"
          },
          "freeThrowsAttempts": {
            "type": "number",
            "format": "double"
          },
          "rebounds": {
            "type": "number",
            "format": "double"
          },
          "offensiveRebounds": {
            "type": "number",
            "format": "double"
          },
          "assists": {
            "type": "number",
            "format": "double"
          },
          "turnovers": {
            "type": "number",
            "format": "double"
          },
          "steals": {
            "type": "number",
            "format": "double"
          },
          "blocks": {
            "type": "number",
            "format": "double"
          },
          "fouls": {
            "type": "number",
            "format": "double"
          },
          "starRating": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "TeamType": {
        "enum": [
          "ManagedTeam",
          "PickupTeam",
          "SeniorNationalTeam",
          "JuniorNationalTeam",
          "WelcomeTeam"
        ]
      },
      "TrainingBreakthroughKind": {
        "type": "string"
      },
      "TrainingHistory": {
        "required": [
          "teamId",
          "sessions"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrainingHistorySessionData"
            }
          }
        }
      },
      "TrainingHistoryBreakthroughData": {
        "required": [
          "player",
          "skill",
          "oldLevel",
          "newLevel",
          "kinds"
        ],
        "type": "object",
        "properties": {
          "player": {
            "$ref": "#/components/schemas/TrainingHistoryPlayerData"
          },
          "skill": {
            "$ref": "#/components/schemas/PlayerSkillType"
          },
          "oldLevel": {
            "type": "integer",
            "format": "int32"
          },
          "newLevel": {
            "type": "integer",
            "format": "int32"
          },
          "kinds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrainingBreakthroughKind"
            }
          }
        }
      },
      "TrainingHistoryConditionsData": {
        "required": [
          "gymLevel",
          "trainingCourtLevel",
          "isOffseason"
        ],
        "type": "object",
        "properties": {
          "coachLevel": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StaffSkillLevel"
              }
            ]
          },
          "coachSpecialty": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SpecialtyType"
              }
            ]
          },
          "youthTrainerLevel": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StaffSkillLevel"
              }
            ]
          },
          "gymLevel": {
            "type": "integer",
            "format": "int32"
          },
          "trainingCourtLevel": {
            "type": "integer",
            "format": "int32"
          },
          "isOffseason": {
            "type": "boolean"
          }
        }
      },
      "TrainingHistoryParticipantData": {
        "required": [
          "player",
          "minutes",
          "trainingMinutes",
          "hasFullMinutes"
        ],
        "type": "object",
        "properties": {
          "player": {
            "$ref": "#/components/schemas/TrainingHistoryPlayerData"
          },
          "minutes": {
            "type": "integer",
            "format": "int32"
          },
          "trainingMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "hasFullMinutes": {
            "type": "boolean"
          }
        }
      },
      "TrainingHistoryPlayerData": {
        "required": [
          "id",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          }
        }
      },
      "TrainingHistorySessionData": {
        "required": [
          "id",
          "type",
          "positions",
          "trainedAt",
          "efficiencyPercent",
          "participants",
          "skillChanges",
          "breakthroughs"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/TrainingType"
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BasketballPosition"
            }
          },
          "trainedAt": {
            "type": "string",
            "format": "date-time"
          },
          "efficiencyPercent": {
            "type": "integer",
            "format": "int32"
          },
          "conditions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TrainingHistoryConditionsData"
              }
            ]
          },
          "participants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrainingHistoryParticipantData"
            }
          },
          "skillChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrainingHistorySkillChangeData"
            }
          },
          "breakthroughs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrainingHistoryBreakthroughData"
            }
          }
        }
      },
      "TrainingHistorySkillChangeData": {
        "required": [
          "player",
          "skill",
          "from",
          "to"
        ],
        "type": "object",
        "properties": {
          "player": {
            "$ref": "#/components/schemas/TrainingHistoryPlayerData"
          },
          "skill": {
            "$ref": "#/components/schemas/PlayerSkillType"
          },
          "from": {
            "$ref": "#/components/schemas/RatingType"
          },
          "to": {
            "$ref": "#/components/schemas/RatingType"
          }
        }
      },
      "TrainingPlan": {
        "required": [
          "teamId",
          "positions"
        ],
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TrainingType"
              }
            ]
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BasketballPosition"
            }
          }
        }
      },
      "TrainingType": {
        "enum": [
          "GameShape",
          "Pressure",
          "ShotBlocking",
          "InsideDefense",
          "FreeThrows",
          "Stamina",
          "Rebounding",
          "InsideScoring",
          "OneOnOne",
          "OutsideShooting",
          "JumpShot",
          "BallHandling",
          "Passing",
          null
        ]
      },
      "TransactionType": {
        "enum": [
          "Transfer",
          "StaffSeverance",
          "ArenaExpansion",
          "Match",
          "ArenaNameChange",
          "TeamNameChange",
          "WeeklyPlayerSalaries",
          "WeeklyStaffSalaries",
          "Interest",
          "WeeklyMerchandise",
          "NewManagerBonus",
          "WeeklyScoutingCosts",
          "GmFine",
          "DivisionPromotion",
          "WeeklyTvContract",
          "SigningStaffBonus",
          "OverextensionTax",
          "LeagueWinnerBonus",
          "LeagueRunnerUpBonus",
          "HoardingTax",
          "InfrastructureCost",
          "WeeklyInfrastructureMaintenance",
          "BankruptcyAdjustment",
          "BoardBonus",
          "ArenaDesign"
        ]
      }
    }
  },
  "tags": [
    {
      "name": "economy"
    },
    {
      "name": "manager"
    },
    {
      "name": "market"
    },
    {
      "name": "matches"
    },
    {
      "name": "national-teams"
    },
    {
      "name": "oauth"
    },
    {
      "name": "players"
    },
    {
      "name": "teams"
    },
    {
      "name": "world"
    }
  ]
}