{
    "openapi": "3.1.0",
    "info": {
        "title": "Volleyball API",
        "version": "1.0.0",
        "description": "Live scores, results, rally-by-rally points and player figures for indoor and beach volleyball.",
        "contact": {
            "name": "Volleyball API support",
            "url": "https://volleyballapi.com/support"
        }
    },
    "servers": [
        {
            "url": "https://api.volleyballapi.com"
        }
    ],
    "security": [
        {
            "bearer": []
        },
        {
            "apiKey": []
        }
    ],
    "paths": {
        "/v1/usage": {
            "get": {
                "operationId": "usage",
                "summary": "Your plan, your calls today and this month, your limits and the dates you can read",
                "description": "Your plan, the calls you have made today and this month, your limits, when the quota resets and the days you can read. Calls to this endpoint are never counted. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/usage"
                },
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/matches/live": {
            "get": {
                "operationId": "live",
                "summary": "Every match being played now, with the running set scores",
                "description": "Every match being played this minute, indoor and beach, with the running score of each set and the set in play. Scores refresh every 15 seconds; meta says when the data last changed and how many seconds behind it is. Plans: Live, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/live"
                },
                "parameters": [
                    {
                        "name": "discipline",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "indoor",
                                "beach"
                            ]
                        },
                        "description": "One of indoor, beach."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/results/yesterday": {
            "get": {
                "operationId": "resultsYesterday",
                "summary": "Yesterday's finished matches",
                "description": "Every match that finished yesterday, in UTC days, with the set-by-set score and durations. Readable on every plan, including the free key: one call a day keeps a results page or a bot up to date. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/results-yesterday"
                },
                "parameters": [
                    {
                        "name": "discipline",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "indoor",
                                "beach"
                            ]
                        },
                        "description": "One of indoor, beach."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200,
                            "default": 50
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/matches": {
            "get": {
                "operationId": "matches",
                "summary": "Matches on a day or between two days, filtered by discipline, gender, status, competition or team",
                "description": "Matches on one day or between two days, indoor and beach, filtered by discipline, gender, status, competition or team. Every match carries the set-by-set score, durations, round and pool, and comes back once even when it was played under two names. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/matches"
                },
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "One day, in the venue's own calendar. Today when no day, range, competition or team is given."
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First day of a range. Send with to; a range covers 31 days at most."
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last day of the range, included."
                    },
                    {
                        "name": "discipline",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "indoor",
                                "beach"
                            ]
                        },
                        "description": "One of indoor, beach."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "scheduled",
                                "live",
                                "finished",
                                "awarded",
                                "cancelled"
                            ]
                        },
                        "description": "One of scheduled, live, finished, awarded, cancelled."
                    },
                    {
                        "name": "competition",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "A competition id, cp_."
                    },
                    {
                        "name": "team",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "A team id, tm_. Matches under every name the team has played as."
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200,
                            "default": 50
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/matches/{id}/points": {
            "get": {
                "operationId": "matchPoints",
                "summary": "Every rally of every set: the score after it, who won it and who served",
                "description": "Every rally of every set in the order it was played: the score after it, the side that won it and the side that served it. Enough to work out side-out and break-point rates, runs, momentum and clutch points. Plans: Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/match-points"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/matches/{id}/players": {
            "get": {
                "operationId": "matchPlayers",
                "summary": "Per-player figures for the match: points, serve, reception, attack and block",
                "description": "Each player's figures for the match, both teams: points, break points, serve, reception, attack and block, as the official match sheet records them. Plans: Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/match-players"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/matches/{id}/lineups": {
            "get": {
                "operationId": "matchLineups",
                "summary": "Starting six by court zone for every set, the players who came on, and both head coaches",
                "description": "Who started every set and where: the six players in court zones 1 to 6 for each team, the players who came on during the set, liberos marked, and both head coaches. Rotations, substitution patterns and coach records in one call. Plans: Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/match-lineups"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/export/matches": {
            "get": {
                "operationId": "exportMatches",
                "summary": "Every match between two days in one call, with sets, venue, officials and coaches (up to 184 days)",
                "description": "Every match between two days in one call, up to 184 days at a time: the full match record with sets, venue, referees, attendance and coaches. Built for loading a season into your own database without paging. Plans: Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/export-matches"
                },
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First day of a range. Send with to; a range covers 31 days at most."
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last day of the range, included."
                    },
                    {
                        "name": "discipline",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "indoor",
                                "beach"
                            ]
                        },
                        "description": "One of indoor, beach."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/export/lineups": {
            "get": {
                "operationId": "exportLineups",
                "summary": "Every lineup between two days in one call: starting six by zone, players who came on, coaches (up to 92 days)",
                "description": "Every lineup between two days in one call, up to 92 days at a time: the starting six by court zone for each set, the players who came on, and both head coaches. Plans: Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/export-lineups"
                },
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First day of a range. Send with to; a range covers 31 days at most."
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last day of the range, included."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/export/points": {
            "get": {
                "operationId": "exportPoints",
                "summary": "Every rally of every match between two days in one call (up to 14 days)",
                "description": "Every rally of every match between two days in one call, up to 14 days at a time: the score after each rally, who won it and who served. Plans: Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/export-points"
                },
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First day of a range. Send with to; a range covers 31 days at most."
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last day of the range, included."
                    },
                    {
                        "name": "discipline",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "indoor",
                                "beach"
                            ]
                        },
                        "description": "One of indoor, beach."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/matches/{id}": {
            "get": {
                "operationId": "match",
                "summary": "One match: teams, result, every set, duration, venue, spectators and referees",
                "description": "One match in full: both teams, the result, every set with its duration, the venue, city and country, attendance and referees, and links to its rallies and player figures when they exist. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/match"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/competitions": {
            "get": {
                "operationId": "competitions",
                "summary": "Competitions, newest first, filtered by discipline, gender, season or name",
                "description": "Competitions newest first, from world championships and tours to national leagues and cups, filtered by discipline, gender, season or a word in the name. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/competitions"
                },
                "parameters": [
                    {
                        "name": "discipline",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "indoor",
                                "beach"
                            ]
                        },
                        "description": "One of indoor, beach."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    },
                    {
                        "name": "season",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        },
                        "description": "The year a season starts in, like 2025."
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "A word in the competition's name, 2 to 80 characters."
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200,
                            "default": 50
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/competitions/{id}/matches": {
            "get": {
                "operationId": "competitionMatches",
                "summary": "A competition's matches",
                "description": "A competition's matches, every round and pool, filtered by status. Use it for a fixture list, a results page or a whole tournament at once. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/competition-matches"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "scheduled",
                                "live",
                                "finished",
                                "awarded",
                                "cancelled"
                            ]
                        },
                        "description": "One of scheduled, live, finished, awarded, cancelled."
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200,
                            "default": 50
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/competitions/{id}/standings": {
            "get": {
                "operationId": "competitionStandings",
                "summary": "League tables for a competition, one per pool, worked out from its results",
                "description": "The table for every pool or league phase of a competition, worked out from its finished matches, one for each stage and pool: played, won, lost, league points, sets and points for and against, and the last five results. Indoor tables give 3 points for a 3-0 or 3-1 win, 2 for a 3-2 win and 1 for a 3-2 loss, and rank by points, then wins, set ratio and point ratio. Beach pools give 2 for a win and 1 for a loss and rank by wins. Knockout rounds are left out unless you ask for them. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/competition-standings"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "stage",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "table",
                                "all"
                            ]
                        },
                        "description": "table (the default) counts league and pool matches only; all counts every finished match, knockout rounds included."
                    },
                    {
                        "name": "pool",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Only the tables whose pool or stage name contains this, like Pool B or Winners."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/competitions/{id}": {
            "get": {
                "operationId": "competition",
                "summary": "One competition, with its dates and match count",
                "description": "One competition with its discipline, gender, season and dates, the number of matches you can read in it and the first and last of them. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/competition"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/teams": {
            "get": {
                "operationId": "teams",
                "summary": "Teams and beach pairs, found by name",
                "description": "Clubs, national teams and beach pairs found by name, including the other names a team has played under. Each comes back once, under one id. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/teams"
                },
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Part of the name, 2 to 80 characters. Required."
                    },
                    {
                        "name": "discipline",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "indoor",
                                "beach"
                            ]
                        },
                        "description": "One of indoor, beach."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "A two-letter country code, like IT: teams that play for that country."
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200,
                            "default": 50
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/teams/{id}/matches": {
            "get": {
                "operationId": "teamMatches",
                "summary": "A team's matches, newest first",
                "description": "A team's matches newest first, under every name it has played as, filtered by status. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/team-matches"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "scheduled",
                                "live",
                                "finished",
                                "awarded",
                                "cancelled"
                            ]
                        },
                        "description": "One of scheduled, live, finished, awarded, cancelled."
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200,
                            "default": 50
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/teams/{id}": {
            "get": {
                "operationId": "team",
                "summary": "One team: its name, kind, federation and players",
                "description": "One team with its kind, discipline, gender and federation, and the players it has fielded. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/team"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/players": {
            "get": {
                "operationId": "players",
                "summary": "Players, found by name",
                "description": "Players found by name, with gender and federation. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/players"
                },
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Part of the name, 2 to 80 characters. Required."
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "men",
                                "women",
                                "mixed"
                            ]
                        },
                        "description": "One of men, women, mixed."
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200,
                            "default": 50
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/players/{id}": {
            "get": {
                "operationId": "player",
                "summary": "One player, the teams they have played for and their career, competition by competition",
                "description": "One player: name, nationality, date of birth, height, weight, position and hand where known, every team they have played for, and their career competition by competition: matches, wins, points, kills, aces and blocks. Plans: Free key, Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/player"
                },
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/head-to-head": {
            "get": {
                "operationId": "headToHead",
                "summary": "Every meeting of two teams, with the record between them",
                "description": "Every meeting of two teams since 2001 that your plan can read, newest first, with the record between them. Plans: Live, Archive, Complete.",
                "externalDocs": {
                    "url": "https://volleyballapi.com/documentation/head-to-head"
                },
                "parameters": [
                    {
                        "name": "team_a",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "A team id, tm_. Required."
                    },
                    {
                        "name": "team_b",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "A team id, tm_. Required."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "data and meta",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Envelope"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "An error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearer": {
                "type": "http",
                "scheme": "bearer"
            },
            "apiKey": {
                "type": "apiKey",
                "in": "header",
                "name": "X-API-Key"
            }
        },
        "schemas": {
            "Envelope": {
                "type": "object",
                "properties": {
                    "data": [],
                    "meta": {
                        "type": "object"
                    }
                }
            },
            "Error": {
                "type": "object",
                "properties": {
                    "error": {
                        "type": "object",
                        "properties": {
                            "code": {
                                "type": "string"
                            },
                            "message": {
                                "type": "string"
                            },
                            "plan": {
                                "type": "string"
                            },
                            "pricing": {
                                "type": "string"
                            },
                            "docs": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        }
    }
}