{"openapi": "3.0.3", "info": {"title": "Touchline Wire Tactical Intelligence API", "version": "1.0.0", "description": "Free, unauthenticated Premier League tactical intelligence API. Live predicted starting XIs, injury telemetry, standings, and match fixtures with zero API keys required.", "contact": {"name": "Touchline Wire Data Bureau", "url": "https://touchlinewire.com"}, "license": {"name": "MIT with Attribution", "url": "https://touchlinewire.com/docs"}}, "servers": [{"url": "https://touchlinewire.com", "description": "Production CloudFront Global Edge"}], "paths": {"/api/v1/table": {"get": {"operationId": "getPremierLeagueTable", "summary": "Premier League Table & Form", "description": "Retrieve current 20-club Premier League standings with points, goal difference, and 5-match form.", "responses": {"200": {"description": "Successful table retrieval"}}}}, "/api/v1/lineups/{club}": {"get": {"operationId": "getClubPredictedLineup", "summary": "Predicted Tactical Starting 11 for Club", "description": "Get verified predicted tactical formation, starting XI player names, positions, and bench for a club.", "parameters": [{"name": "club", "in": "path", "required": true, "schema": {"type": "string"}, "example": "arsenal", "description": "Club name or slug (e.g. 'arsenal', 'chelsea', 'man-city', 'spurs')"}], "responses": {"200": {"description": "Predicted tactical lineup"}, "404": {"description": "Club not found"}}}}, "/api/v1/lineups": {"get": {"operationId": "getAllPredictedLineups", "summary": "All 20 Premier League Predicted Lineups", "description": "Retrieve the entire slate of all 20 Premier League predicted formations and starting XIs.", "responses": {"200": {"description": "List of 20 club lineups"}}}}, "/api/v1/injuries": {"get": {"operationId": "getSquadInjuries", "summary": "Squad Injuries & Availability Telemetry", "description": "List of all currently flagged or injured players across the Premier League with chance of playing and press conference takeaways.", "parameters": [{"name": "club", "in": "query", "required": false, "schema": {"type": "string"}, "example": "arsenal", "description": "Optional filter by club name or slug"}], "responses": {"200": {"description": "List of injured and flagged players"}}}}, "/api/v1/fixtures": {"get": {"operationId": "getMatchdayFixtures", "summary": "Matchday Calendar & Fixtures", "description": "List of upcoming matchday fixtures with kickoff ISO dates and home/away team details.", "parameters": [{"name": "gameweek", "in": "query", "required": false, "schema": {"type": "integer"}, "example": 7, "description": "Filter by specific gameweek number"}, {"name": "club", "in": "query", "required": false, "schema": {"type": "string"}, "example": "liverpool", "description": "Filter by club"}], "responses": {"200": {"description": "List of fixtures"}}}}, "/api/v1/clubs": {"get": {"operationId": "getPremierLeagueClubs", "summary": "Premier League Clubs Directory", "description": "List of all 20 clubs with managers, stadiums, primary colors, and set-piece specialists.", "responses": {"200": {"description": "List of 20 clubs"}}}}, "/api/v1/matches/{fixture_id}": {"get": {"operationId": "getMatchReportByFixtureId", "summary": "Tactical Match Report, Lineups & Live Events", "description": "Comprehensive tactical match report including official starting XIs and benches, chronological match timeline (goals, cards, substitutions), head-to-head match stats (xG, possession, shots, passes), and Touchline Wire lineup forecast accuracy.", "parameters": [{"name": "fixture_id", "in": "path", "required": true, "schema": {"type": "integer"}, "example": 1557417, "description": "Official match fixture ID"}], "responses": {"200": {"description": "Tactical match report with full stats and events"}, "404": {"description": "Fixture not found"}}}}, "/api/v1/matches/{club}/latest": {"get": {"operationId": "getLatestMatchReportForClub", "summary": "Latest Match Report for Club", "description": "Retrieve the most recent match report, starting XI, in-game events, and stats for a specific Premier League club.", "parameters": [{"name": "club", "in": "path", "required": true, "schema": {"type": "string"}, "example": "arsenal", "description": "Club name or slug (e.g. 'arsenal', 'chelsea', 'man-city', 'spurs')"}], "responses": {"200": {"description": "Latest match report for club"}, "404": {"description": "Club not found"}}}}, "/api/v1/matches/latest": {"get": {"operationId": "getLatestPremierLeagueMatchReport", "summary": "Latest Premier League Match", "description": "Retrieve the most recent Premier League match report and tactical intelligence across the entire competition.", "responses": {"200": {"description": "Latest match report"}}}}, "/api/v1/matches/{home}-vs-{away}/preview": {"get": {"operationId": "getMatchTacticalPreview", "summary": "Tactical Match Preview & Formations Clash", "description": "Pre-match tactical breakdown: predicted formations (e.g. 4-3-3 vs 4-2-3-1), manager head-to-head, squad injuries, form guide, and key tactical battles.", "parameters": [{"name": "home", "in": "path", "required": true, "schema": {"type": "string"}, "example": "arsenal", "description": "Home club slug"}, {"name": "away", "in": "path", "required": true, "schema": {"type": "string"}, "example": "chelsea", "description": "Away club slug"}], "responses": {"200": {"description": "Tactical match preview"}, "404": {"description": "Match or clubs not found"}}}}, "/api/v1/set-pieces": {"get": {"operationId": "getAllSetPieceTakers", "summary": "All 20 Premier League Set-Piece Takers", "description": "Hierarchical breakdown of primary & secondary penalty takers, direct free-kick specialists, and corner/indirect set-piece takers across all 20 Premier League clubs.", "responses": {"200": {"description": "Full set-piece hierarchies for 20 clubs"}}}}, "/api/v1/set-pieces/{club}": {"get": {"operationId": "getClubSetPieceTakers", "summary": "Club Set-Piece Takers (Penalties, Free-Kicks, Corners)", "description": "Specific club set-piece hierarchy showing verified penalty takers, direct free-kick takers, and corner specialists ordered by priority with player availability status.", "parameters": [{"name": "club", "in": "path", "required": true, "schema": {"type": "string"}, "example": "arsenal", "description": "Club name or slug"}], "responses": {"200": {"description": "Club set-piece taker hierarchy"}, "404": {"description": "Club not found"}}}}, "/api/v1/schedule/difficulty": {"get": {"operationId": "getFixtureDifficultyRankings", "summary": "Fixture Difficulty Ratings (FDR Schedule Ranker)", "description": "Rank Premier League clubs by easiest to toughest schedule over upcoming matches (3 to 10 fixtures) with home/away difficulty tags (1=easiest, 5=hardest).", "parameters": [{"name": "window", "in": "query", "required": false, "schema": {"type": "integer", "default": 5}, "description": "Number of upcoming matches to analyze (1-10)"}, {"name": "sort", "in": "query", "required": false, "schema": {"type": "string", "enum": ["easiest", "hardest"], "default": "easiest"}, "description": "Sort order of clubs"}], "responses": {"200": {"description": "Ranked fixture difficulty schedules"}}}}, "/api/v1/referees": {"get": {"operationId": "getReferees", "summary": "Premier League Referees Directory & Disciplinary Rates", "description": "Returns all 12 active Premier League match officials with cards per match, fouls per tackle, penalty rates, and key officiating tendencies.", "responses": {"200": {"description": "List of active Premier League referees"}}}}, "/api/v1/referees/{slug}": {"get": {"operationId": "getRefereeProfile", "summary": "Referee Dossier & 5-Year Club Disciplinary Record", "description": "Comprehensive referee dossier with 5-year club breakdown (matches, cards, win rates) and key officiating habits.", "parameters": [{"name": "slug", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Referee profile dossier"}}}}, "/api/v1/players": {"get": {"operationId": "getPlayers", "summary": "Player Tactical Directory & Squad Availability", "description": "Search and filter 600+ Premier League players by club, position, status, name substring, and sort by ownership, starts, or minutes.", "parameters": [{"name": "club", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "position", "in": "query", "required": false, "schema": {"type": "string", "enum": ["GK", "DEF", "MID", "FWD"]}}, {"name": "status", "in": "query", "required": false, "schema": {"type": "string", "enum": ["a", "d", "i", "s"]}}, {"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "sort", "in": "query", "required": false, "schema": {"type": "string", "enum": ["ownership", "starts", "minutes", "name"]}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "default": 50}}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "default": 0}}], "responses": {"200": {"description": "Filtered player tactical directory"}}}}, "/api/v1/players/{slug}": {"get": {"operationId": "getPlayerProfile", "summary": "Player Tactical Dossier & Live Medical Status", "description": "Complete player dossier including team, position, starts, minutes, medical bulletins, and chance of playing.", "parameters": [{"name": "slug", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Player tactical intelligence dossier"}}}}, "/api/v1/stadiums": {"get": {"operationId": "getStadiums", "summary": "Premier League Stadiums & Grounds Directory", "description": "Returns all 20 Premier League stadiums sorted by seated capacity, including city, playing surface, pitch size, opened year, and host club.", "responses": {"200": {"description": "Directory of Premier League stadiums"}}}}, "/api/v1/stadiums/{slug}": {"get": {"operationId": "getStadiumProfile", "summary": "Stadium Venue Intelligence & Upcoming Fixtures", "description": "Detailed venue specs for a Premier League stadium, including coordinates, capacity, surface, address, and scheduled upcoming matches.", "parameters": [{"name": "slug", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Stadium venue intelligence dossier"}}}}}}