{"externalDocs":{"description":"Race Calendar developer portal","url":"https://racecalendar.app/developers"},"info":{"description":"Anonymous read-only Formula 1 schedules, standings, classifications, circuits, history, comparisons, updates, and spoiler-safe previews. All operations are synchronous GET requests under the versioned /api/v2 path.","title":"Race Calendar Formula 1 API","version":"2.0.0"},"openapi":"3.0.0","servers":[{"description":"Production","url":"https://api.racecalendar.app"}],"components":{"schemas":{"McpHistorySearchPayload":{"type":"object","properties":{"generatedAt":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/McpHistorySearchItem"},"maxItems":20},"nextCursor":{"type":"string","nullable":true},"query":{"type":"string"},"sourceUpdatedAt":{"type":"string","nullable":true},"types":{"type":"array","items":{"type":"string","enum":["driver","team","circuit","race"]}}},"required":["generatedAt","items","nextCursor","query","sourceUpdatedAt","types"]},"McpHistorySearchItem":{"type":"object","properties":{"bestChampionshipPosition":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true},"firstYear":{"type":"integer"},"id":{"type":"string"},"label":{"type":"string"},"lastYear":{"type":"integer"},"match":{"type":"string","enum":["exact","prefix","substring"]},"metadata":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"type":{"type":"string","enum":["driver","team","circuit","race"]},"url":{"type":"string","format":"uri"}},"required":["bestChampionshipPosition","firstYear","id","label","lastYear","match","metadata","sourceUrl","type","url"]},"McpFeatureError":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","enum":[false]}},"required":["error","ok"]},"McpUpdatesPayload":{"type":"object","properties":{"generatedAt":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/McpUpdateItem"},"maxItems":50},"nextCursor":{"type":"string","nullable":true},"since":{"type":"string","nullable":true}},"required":["generatedAt","items","nextCursor","since"]},"McpUpdateItem":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["result","schedule","standings"]},"meetingKey":{"type":"number","nullable":true},"modifiedAt":{"type":"string"},"sessionKey":{"type":"number","nullable":true},"sourceLabel":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"summary":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"year":{"type":"integer"}},"required":["id","kind","meetingKey","modifiedAt","sessionKey","sourceLabel","sourceUrl","summary","title","url","year"]},"McpCompetitorComparisonPayload":{"type":"object","properties":{"comparison":{"type":"object","properties":{"pointsDifference":{"type":"number"},"positionAdvantage":{"type":"number"},"winsDifference":{"type":"number","nullable":true}},"required":["pointsDifference","positionAdvantage","winsDifference"]},"generatedAt":{"type":"string"},"kind":{"type":"string","enum":["driver","constructor"]},"leader":{"type":"string","enum":["left","right","tie"]},"left":{"$ref":"#/components/schemas/McpCompetitorSummary"},"methodology":{"type":"string"},"right":{"$ref":"#/components/schemas/McpCompetitorSummary"},"source":{"type":"object","properties":{"label":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["label","updatedAt","url"]},"year":{"type":"integer"}},"required":["comparison","generatedAt","kind","leader","left","methodology","right","source","year"]},"McpCompetitorSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"nationality":{"type":"string","nullable":true},"points":{"type":"number"},"position":{"type":"integer"},"teams":{"type":"array","items":{"type":"string"}},"wins":{"type":"number","nullable":true}},"required":["id","name","nationality","points","position","teams","wins"]},"IOSVersionPolicy":{"type":"object","properties":{"platform":{"type":"string","enum":["ios"]},"latestVersion":{"type":"string"},"minimumSupportedVersion":{"type":"string"},"appStoreId":{"type":"string"},"appStoreUrl":{"type":"string"},"message":{"type":"string","nullable":true},"generatedAt":{"type":"string"}},"required":["platform","latestVersion","minimumSupportedVersion","appStoreId","appStoreUrl","message","generatedAt"]},"ErrorResponse":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"error":{"type":"string"}},"required":["ok","error"]},"LatestEditorialUpdatesPayload":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"$ref":"#/components/schemas/EditorialUpdateFeedEntry"},"maxItems":50},"sourceUrl":{"type":"string","format":"uri"}},"required":["generatedAt","items","sourceUrl"],"additionalProperties":false},"EditorialUpdateFeedEntry":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"string"},"minItems":1},"id":{"type":"string","format":"uri"},"modifiedAt":{"type":"string","format":"date-time"},"publishedAt":{"type":"string","format":"date-time"},"sourceLabel":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"summary":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["categories","id","modifiedAt","publishedAt","sourceLabel","sourceUrl","summary","title","url"],"additionalProperties":false},"HistoricalSeasonIndexPayload":{"type":"object","properties":{"generatedAt":{"type":"string"},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalSeasonSummary"}},"years":{"type":"array","items":{"type":"number"}}},"required":["generatedAt","seasons","years"]},"HistoricalSeasonSummary":{"type":"object","properties":{"year":{"type":"number"},"url":{"type":"string","nullable":true}},"required":["year","url"]},"HistoricalWebDataPayload":{"type":"object","properties":{"generatedAt":{"type":"string"},"qualifyingResults":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebQualifyingResult"}},"raceResults":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebRaceResult"}},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebSeason"}},"source":{"$ref":"#/components/schemas/HistoricalWebDataSource"}},"required":["generatedAt","qualifyingResults","raceResults","seasons","source"]},"HistoricalWebQualifyingResult":{"type":"object","properties":{"format":{"type":"string"},"kind":{"type":"string","enum":["pre-qualifying","qualifying"]},"r":{"type":"number"},"rows":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebQualifyingResultRow"}},"y":{"type":"number"}},"required":["format","kind","r","rows","y"]},"HistoricalWebQualifyingResultRow":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"string","nullable":true},{"type":"number","nullable":true}]},"minItems":15,"maxItems":15},"HistoricalWebRaceResult":{"type":"object","properties":{"r":{"type":"number"},"rows":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebRaceResultRow"}},"y":{"type":"number"}},"required":["r","rows","y"]},"HistoricalWebRaceResultRow":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"string","nullable":true},{"$ref":"#/components/schemas/HistoricalWebRaceFastestLap"},{"type":"number","nullable":true},{"type":"number"}]},"minItems":17,"maxItems":17},"HistoricalWebRaceFastestLap":{"type":"object","nullable":true,"properties":{"lap":{"type":"number","nullable":true},"rank":{"type":"number","nullable":true},"speed":{"type":"number","nullable":true},"time":{"type":"string","nullable":true}},"required":["lap","rank","speed","time"]},"HistoricalWebSeason":{"type":"object","properties":{"constructorStandings":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebConstructorStanding"}},"driverStandings":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebDriverStanding"}},"races":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalWebRace"}},"seasonUrl":{"type":"string"},"year":{"type":"number"}},"required":["constructorStandings","driverStandings","races","seasonUrl","year"]},"HistoricalWebConstructorStanding":{"type":"object","properties":{"constructorId":{"type":"string"},"constructorName":{"type":"string"},"nationality":{"type":"string"},"points":{"type":"number"},"position":{"type":"number"},"wins":{"type":"number"}},"required":["constructorId","constructorName","nationality","points","position","wins"]},"HistoricalWebDriverStanding":{"type":"object","properties":{"constructors":{"type":"array","items":{"type":"string"}},"driverCode":{"type":"string","nullable":true},"driverId":{"type":"string"},"fullName":{"type":"string"},"nationality":{"type":"string"},"points":{"type":"number"},"position":{"type":"number"},"wins":{"type":"number"}},"required":["constructors","driverCode","driverId","fullName","nationality","points","position","wins"]},"HistoricalWebRace":{"type":"object","properties":{"circuitId":{"type":"string"},"circuitName":{"type":"string"},"countryName":{"type":"string"},"date":{"type":"string"},"locality":{"type":"string"},"raceName":{"type":"string"},"round":{"type":"number"},"url":{"type":"string"},"winnerConstructorName":{"type":"string","nullable":true},"winnerName":{"type":"string","nullable":true}},"required":["circuitId","circuitName","countryName","date","locality","raceName","round","url","winnerConstructorName","winnerName"]},"HistoricalWebDataSource":{"type":"object","properties":{"artifactSha256":{"type":"string"},"commit":{"type":"string"},"license":{"type":"string","enum":["CC BY 4.0"]},"licenseUrl":{"type":"string"},"name":{"type":"string","enum":["F1DB"]},"publishedAt":{"type":"string"},"releaseUrl":{"type":"string"},"repositoryUrl":{"type":"string"},"version":{"type":"string"}},"required":["artifactSha256","commit","license","licenseUrl","name","publishedAt","releaseUrl","repositoryUrl","version"]},"HistoricalSeasonPayload":{"type":"object","properties":{"generatedAt":{"type":"string"},"races":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalRaceSummary"}},"seasonUrl":{"type":"string","nullable":true},"year":{"type":"number"}},"required":["generatedAt","races","seasonUrl","year"]},"HistoricalRaceSummary":{"type":"object","properties":{"circuit":{"$ref":"#/components/schemas/HistoricalCircuit"},"date":{"type":"string"},"raceName":{"type":"string"},"round":{"type":"number"},"time":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"year":{"type":"number"}},"required":["circuit","date","raceName","round","time","url","year"]},"HistoricalCircuit":{"type":"object","properties":{"circuitId":{"type":"string"},"circuitName":{"type":"string"},"location":{"$ref":"#/components/schemas/HistoricalCircuitLocation"},"url":{"type":"string","nullable":true}},"required":["circuitId","circuitName","location","url"]},"HistoricalCircuitLocation":{"type":"object","properties":{"country":{"type":"string"},"latitude":{"type":"number","nullable":true},"locality":{"type":"string"},"longitude":{"type":"number","nullable":true}},"required":["country","latitude","locality","longitude"]},"HistoricalRaceResultPayload":{"type":"object","properties":{"generatedAt":{"type":"string"},"race":{"$ref":"#/components/schemas/HistoricalRaceSummary"},"results":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalRaceResultRow"}},"round":{"type":"number"},"year":{"type":"number"}},"required":["generatedAt","race","results","round","year"]},"HistoricalRaceResultRow":{"type":"object","properties":{"carNumber":{"type":"string","nullable":true},"constructor":{"$ref":"#/components/schemas/HistoricalConstructor"},"driver":{"$ref":"#/components/schemas/HistoricalDriver"},"fastestLap":{"$ref":"#/components/schemas/HistoricalFastestLap"},"grid":{"type":"number","nullable":true},"laps":{"type":"number","nullable":true},"points":{"type":"number"},"position":{"type":"number","nullable":true},"positionText":{"type":"string"},"status":{"type":"string"},"time":{"$ref":"#/components/schemas/HistoricalRaceTime"}},"required":["carNumber","constructor","driver","fastestLap","grid","laps","points","position","positionText","status","time"]},"HistoricalConstructor":{"type":"object","properties":{"constructorId":{"type":"string"},"name":{"type":"string"},"nationality":{"type":"string"},"url":{"type":"string","nullable":true}},"required":["constructorId","name","nationality","url"]},"HistoricalDriver":{"type":"object","properties":{"code":{"type":"string","nullable":true},"dateOfBirth":{"type":"string","nullable":true},"driverId":{"type":"string"},"familyName":{"type":"string"},"fullName":{"type":"string"},"givenName":{"type":"string"},"nationality":{"type":"string"},"permanentNumber":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}},"required":["code","dateOfBirth","driverId","familyName","fullName","givenName","nationality","permanentNumber","url"]},"HistoricalFastestLap":{"type":"object","nullable":true,"properties":{"averageSpeedKph":{"type":"number","nullable":true},"lap":{"type":"number","nullable":true},"rank":{"type":"number","nullable":true},"time":{"type":"string","nullable":true}},"required":["averageSpeedKph","lap","rank","time"]},"HistoricalRaceTime":{"type":"object","nullable":true,"properties":{"millis":{"type":"number","nullable":true},"time":{"type":"string","nullable":true}},"required":["millis","time"]},"SeasonList":{"type":"object","properties":{"years":{"type":"array","items":{"type":"number"}},"generatedAt":{"type":"string"}},"required":["years","generatedAt"]},"SeasonPayload":{"type":"object","properties":{"year":{"type":"number"},"generatedAt":{"type":"string","nullable":true},"hasIncompleteResults":{"type":"boolean"},"weekends":{"type":"array","items":{"$ref":"#/components/schemas/SeasonWeekend"}}},"required":["year","generatedAt","hasIncompleteResults","weekends"]},"SeasonWeekend":{"type":"object","properties":{"id":{"type":"number"},"round":{"type":"number"},"grandPrixName":{"type":"string"},"circuitName":{"type":"string"},"location":{"type":"string"},"countryName":{"type":"string"},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"trackPath":{"type":"string","nullable":true},"startDate":{"type":"string"},"endDate":{"type":"string"},"meetingOfficialName":{"type":"string","nullable":true},"countryCode":{"type":"string","nullable":true},"countryFlag":{"type":"string","nullable":true},"circuitKey":{"type":"number","nullable":true},"circuitType":{"type":"string","nullable":true},"circuitImage":{"type":"string","nullable":true},"gmtOffset":{"type":"string","nullable":true},"raceWinnerName":{"type":"string","nullable":true},"raceWinnerHeadshotURL":{"type":"string","nullable":true},"raceWinnerConstructorName":{"type":"string","nullable":true},"sprintResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"qualifyingResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"raceResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"webSprintResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"webQualifyingResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"webRaceResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"startingGridSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/StartingGridEntry"}},"latestResultKind":{"type":"string","nullable":true,"enum":["sprint","qualifying","race",null]},"latestResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"webLatestResultSummary":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/RaceResultEntry"}},"latestResultSessionKey":{"type":"number","nullable":true},"latestResultUpdatedAt":{"type":"string","nullable":true},"latestResultFingerprint":{"type":"string","nullable":true},"latestResultSource":{"type":"string","nullable":true,"enum":["F1DB","OpenF1",null]},"latestResultSourceVersion":{"type":"string","nullable":true},"resultStatus":{"type":"string","enum":["notStarted","pending","available"]},"raceRecap":{"$ref":"#/components/schemas/RaceRecap"},"status":{"type":"string","enum":["scheduled","cancelled"]},"statusNote":{"type":"string","nullable":true},"sessions":{"type":"array","items":{"$ref":"#/components/schemas/SeasonSession"}},"additionalSessions":{"type":"array","items":{"$ref":"#/components/schemas/SeasonSession"}}},"required":["id","round","grandPrixName","circuitName","location","countryName","latitude","longitude","trackPath","startDate","endDate","meetingOfficialName","countryCode","countryFlag","circuitKey","circuitType","circuitImage","gmtOffset","raceWinnerName","raceWinnerHeadshotURL","raceWinnerConstructorName","sprintResultSummary","qualifyingResultSummary","raceResultSummary","startingGridSummary","latestResultKind","latestResultSummary","latestResultSessionKey","latestResultUpdatedAt","latestResultFingerprint","latestResultSource","latestResultSourceVersion","resultStatus","raceRecap","status","statusNote","sessions","additionalSessions"]},"RaceResultEntry":{"type":"object","properties":{"position":{"type":"number"},"positionLabel":{"type":"string","nullable":true},"driverNumber":{"type":"number"},"fullName":{"type":"string","nullable":true},"headshotUrl":{"type":"string","nullable":true},"constructorName":{"type":"string","nullable":true},"numberOfLaps":{"type":"number","nullable":true},"points":{"type":"number","nullable":true},"duration":{"type":"string","nullable":true},"gapToLeader":{"type":"string","nullable":true},"status":{"type":"string","nullable":true,"enum":["dnf","dns","dsq",null]}},"required":["position","driverNumber","fullName","headshotUrl","constructorName"]},"StartingGridEntry":{"allOf":[{"$ref":"#/components/schemas/RaceResultEntry"},{"type":"object","properties":{"lapDuration":{"type":"number","nullable":true}},"required":["lapDuration"]}]},"RaceRecap":{"type":"object","nullable":true,"properties":{"winner":{"allOf":[{"$ref":"#/components/schemas/RaceResultEntry"},{"nullable":true}]},"podium":{"type":"array","items":{"$ref":"#/components/schemas/RaceResultEntry"}},"biggestGainers":{"type":"array","items":{"type":"object","properties":{"gridPosition":{"type":"number"},"finishPosition":{"type":"number"},"positionsGained":{"type":"number"},"driverNumber":{"type":"number"},"fullName":{"type":"string","nullable":true},"headshotUrl":{"type":"string","nullable":true},"constructorName":{"type":"string","nullable":true}},"required":["gridPosition","finishPosition","positionsGained","driverNumber","fullName","headshotUrl","constructorName"]}},"notableFinishers":{"type":"array","items":{"type":"object","properties":{"finishPosition":{"type":"number","nullable":true},"status":{"type":"string","enum":["dnf","dns","dsq"]},"driverNumber":{"type":"number"},"fullName":{"type":"string","nullable":true},"headshotUrl":{"type":"string","nullable":true},"constructorName":{"type":"string","nullable":true}},"required":["finishPosition","status","driverNumber","fullName","headshotUrl","constructorName"]}},"summaryLine":{"type":"string"},"summaryDetail":{"type":"string","nullable":true}},"required":["winner","podium","biggestGainers","notableFinishers","summaryLine","summaryDetail"]},"SeasonSession":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"displayName":{"type":"string"},"kind":{"$ref":"#/components/schemas/SessionKind"},"sessionType":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"}},"required":["id","name","displayName","kind","sessionType","startDate","endDate"]},"SessionKind":{"type":"string","enum":["practice","sprintQualifying","sprint","qualifying","race","other"]},"SeasonSchedulePayload":{"type":"object","properties":{"year":{"type":"number"},"generatedAt":{"type":"string"},"lastVerifiedAt":{"type":"string"},"staleAfter":{"type":"string"},"refreshIntervalSeconds":{"type":"number"},"source":{"type":"string","enum":["OpenF1"]},"weekends":{"type":"array","items":{"$ref":"#/components/schemas/SeasonScheduleWeekend"}}},"required":["year","generatedAt","lastVerifiedAt","staleAfter","refreshIntervalSeconds","source","weekends"]},"SeasonScheduleWeekend":{"type":"object","properties":{"id":{"type":"number"},"round":{"type":"number"},"grandPrixName":{"type":"string"},"circuitName":{"type":"string"},"location":{"type":"string"},"countryName":{"type":"string"},"countryCode":{"type":"string","nullable":true},"gmtOffset":{"type":"string","nullable":true},"startDate":{"type":"string"},"endDate":{"type":"string"},"status":{"type":"string","enum":["scheduled","cancelled"]},"statusNote":{"type":"string","nullable":true},"resultStatus":{"type":"string","enum":["notStarted","pending","available"]},"raceWinnerName":{"type":"string","nullable":true},"raceWinnerConstructorName":{"type":"string","nullable":true},"resultSummary":{"type":"string","nullable":true},"sessions":{"type":"array","items":{"$ref":"#/components/schemas/SeasonSession"}}},"required":["id","round","grandPrixName","circuitName","location","countryName","countryCode","gmtOffset","startDate","endDate","status","statusNote","resultStatus","raceWinnerName","raceWinnerConstructorName","resultSummary","sessions"]},"SeasonStandingsPayload":{"type":"object","properties":{"year":{"type":"number"},"sessionKey":{"type":"number"},"drivers":{"type":"array","items":{"$ref":"#/components/schemas/StandingsDriverRow"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/StandingsTeamRow"}}},"required":["year","sessionKey","drivers","teams"]},"StandingsDriverRow":{"type":"object","properties":{"position":{"type":"number"},"points":{"type":"number"},"driverNumber":{"type":"number"},"fullName":{"type":"string","nullable":true},"headshotUrl":{"type":"string","nullable":true}},"required":["position","points","driverNumber","fullName","headshotUrl"]},"StandingsTeamRow":{"type":"object","properties":{"position":{"type":"number"},"points":{"type":"number"},"teamName":{"type":"string"},"teamColour":{"type":"string","nullable":true},"teamLogoUrl":{"type":"string","nullable":true}},"required":["position","points","teamName","teamColour","teamLogoUrl"]},"RaceWeekendsPayload":{"type":"object","properties":{"year":{"type":"number"},"raceWeekends":{"type":"array","items":{"$ref":"#/components/schemas/SeasonWeekend"}}},"required":["year","raceWeekends"]},"RaceWeekendPayload":{"type":"object","properties":{"year":{"type":"number"},"raceWeekend":{"$ref":"#/components/schemas/SeasonWeekend"}},"required":["year","raceWeekend"]},"RaceWeekendPreviewPayload":{"type":"object","properties":{"year":{"type":"number"},"raceWeekend":{"type":"object","properties":{"id":{"type":"number"},"round":{"type":"number"},"grandPrixName":{"type":"string"},"circuitName":{"type":"string"},"location":{"type":"string"},"countryName":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"},"meetingOfficialName":{"type":"string","nullable":true},"countryCode":{"type":"string","nullable":true},"circuitKey":{"type":"number","nullable":true},"circuitType":{"type":"string","nullable":true},"circuitImage":{"type":"string","nullable":true},"status":{"type":"string","enum":["scheduled","cancelled"]},"statusNote":{"type":"string","nullable":true},"sessions":{"type":"array","items":{"$ref":"#/components/schemas/SeasonSession"}}},"required":["id","round","grandPrixName","circuitName","location","countryName","startDate","endDate","meetingOfficialName","countryCode","circuitKey","circuitType","circuitImage","status","statusNote","sessions"]}},"required":["year","raceWeekend"]},"TrackPayload":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"]}},"rotationDegrees":{"type":"number"}},"required":["points","rotationDegrees"]},"RaceWeekendSessionPayload":{"type":"object","properties":{"year":{"type":"number"},"meetingKey":{"type":"number"},"session":{"$ref":"#/components/schemas/SeasonSession"}},"required":["year","meetingKey","session"]},"RaceWeekendResultsPayload":{"type":"object","properties":{"year":{"type":"number"},"meetingKey":{"type":"number"},"sessionKey":{"type":"number"},"results":{"type":"array","items":{"$ref":"#/components/schemas/RaceResultEntry"}}},"required":["year","meetingKey","sessionKey","results"]},"RaceWeekendStartingGridPayload":{"type":"object","properties":{"year":{"type":"number"},"meetingKey":{"type":"number"},"sessionKey":{"type":"number"},"startingGrid":{"type":"array","items":{"$ref":"#/components/schemas/StartingGridEntry"}}},"required":["year","meetingKey","sessionKey","startingGrid"]},"SeoSessionSummaryPayload":{"allOf":[{"$ref":"#/components/schemas/SeoSummaryPayload"},{"type":"object","properties":{"resultRows":{"type":"array","items":{"type":"object","properties":{"constructorName":{"type":"string","nullable":true},"driverNumber":{"type":"number"},"fullName":{"type":"string","nullable":true},"headshotUrl":{"type":"string","nullable":true},"duration":{"type":"string","nullable":true},"gapToLeader":{"type":"string","nullable":true},"numberOfLaps":{"type":"number","nullable":true},"points":{"type":"number","nullable":true},"position":{"type":"number"},"status":{"type":"string","nullable":true,"enum":["dnf","dns","dsq",null]}},"required":["constructorName","driverNumber","fullName","headshotUrl","duration","gapToLeader","numberOfLaps","points","position","status"]}},"startingGridRows":{"type":"array","items":{"type":"object","properties":{"constructorName":{"type":"string","nullable":true},"driverNumber":{"type":"number"},"fullName":{"type":"string","nullable":true},"headshotUrl":{"type":"string","nullable":true},"lapDuration":{"type":"number","nullable":true},"position":{"type":"number"}},"required":["constructorName","driverNumber","fullName","headshotUrl","lapDuration","position"]}}},"required":["resultRows","startingGridRows"],"additionalProperties":{"nullable":true}}]},"SeoSummaryPayload":{"type":"object","properties":{"year":{"type":"number"},"meetingKey":{"type":"number"},"sessionKey":{"type":"number"},"generatedAt":{"type":"string"},"hasData":{"type":"boolean"}},"required":["year","meetingKey","sessionKey","generatedAt","hasData"],"additionalProperties":{"nullable":true}},"SeoDriverSessionSummaryPayload":{"allOf":[{"$ref":"#/components/schemas/SeoSummaryPayload"},{"type":"object","properties":{"driverNumber":{"type":"number"},"fullName":{"type":"string","nullable":true},"headshotUrl":{"type":"string","nullable":true},"constructorName":{"type":"string","nullable":true}},"required":["driverNumber","fullName","headshotUrl","constructorName"],"additionalProperties":{"nullable":true}}]},"SeasonTracksPayload":{"type":"object","properties":{"year":{"type":"number"},"tracks":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/TrackPayload"}}},"required":["year","tracks"]},"CompactSeoIndex":{"type":"object","properties":{"generatedAt":{"type":"string"},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/CompactSeoIndexSeason"}},"years":{"type":"array","items":{"type":"number"}}},"required":["generatedAt","seasons","years"]},"CompactSeoIndexSeason":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/SeasonPayload"},"standings":{"allOf":[{"$ref":"#/components/schemas/SeasonStandingsPayload"},{"nullable":true}]},"year":{"type":"number"}},"required":["payload","standings","year"]}},"parameters":{}},"paths":{"/api/v2/mcp/history/search":{"get":{"operationId":"searchF1History","summary":"Search Formula 1 history","parameters":[{"schema":{"type":"string","maxLength":1000},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","pattern":"^\\d+$/u"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":80},"required":true,"name":"q","in":"query"},{"schema":{"type":"string","maxLength":100},"required":false,"name":"types","in":"query"}],"responses":{"200":{"description":"Bounded search over historical drivers, teams, circuits, and races","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpHistorySearchPayload"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}},"429":{"description":"MCP data query rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}},"500":{"description":"Feature query failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}}}}},"/api/v2/mcp/updates":{"get":{"operationId":"listF1Updates","summary":"List recent Formula 1 data updates","parameters":[{"schema":{"type":"string","maxLength":1000},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","pattern":"^\\d+$/u"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","maxLength":100},"required":false,"name":"since","in":"query"}],"responses":{"200":{"description":"Recent public schedule, standings, and classification snapshot updates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpUpdatesPayload"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}},"429":{"description":"MCP data query rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}},"500":{"description":"Feature query failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}}}}},"/api/v2/mcp/comparisons":{"get":{"operationId":"compareF1Competitors","summary":"Compare two Formula 1 competitors","parameters":[{"schema":{"type":"string","enum":["driver","constructor"]},"required":true,"name":"kind","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":100},"required":true,"name":"left","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":100},"required":true,"name":"right","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}$/u"},"required":true,"name":"year","in":"query"}],"responses":{"200":{"description":"Sourced comparison of two drivers or constructors in one season","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpCompetitorComparisonPayload"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}},"429":{"description":"MCP data query rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}},"500":{"description":"Feature query failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpFeatureError"}}}}}}},"/api/v2/app/ios-version-policy":{"get":{"operationId":"getIosVersionPolicy","summary":"Get the iOS version policy","responses":{"200":{"description":"iOS app update policy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IOSVersionPolicy"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/editorial/updates/latest":{"get":{"operationId":"listEditorialUpdates","summary":"List the latest editorial updates","responses":{"200":{"description":"Latest reviewed reports, finalized results, and schedule corrections","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestEditorialUpdatesPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/history/seasons":{"get":{"operationId":"listHistoricalSeasons","summary":"List historical Formula 1 seasons","responses":{"200":{"description":"Historical F1 season index","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalSeasonIndexPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/history/web-data":{"get":{"operationId":"getHistoricalWebData","summary":"Get the historical web dataset","responses":{"200":{"description":"Materialized historical web page and SEO dataset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalWebDataPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/history/seasons/{year}":{"get":{"operationId":"getHistoricalSeason","summary":"Get a historical Formula 1 season","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"}],"responses":{"200":{"description":"Historical F1 season race schedule","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalSeasonPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/history/seasons/{year}/races/{round}/results":{"get":{"operationId":"getHistoricalRaceResults","summary":"Get a historical race classification","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1"},"required":true,"name":"round","in":"path"}],"responses":{"200":{"description":"Historical F1 race result classification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalRaceResultPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons":{"get":{"operationId":"listSeasons","summary":"List supported Formula 1 seasons","responses":{"200":{"description":"Supported F1 seasons","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonList"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/snapshot":{"get":{"operationId":"getSeasonSnapshot","summary":"Get an app-sized season snapshot","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"}],"responses":{"200":{"description":"App-sized season snapshot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/schedule":{"get":{"operationId":"getSeasonSchedule","summary":"Get a season schedule","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"}],"responses":{"200":{"description":"Compact, freshness-bounded season schedule","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonSchedulePayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/standings":{"get":{"operationId":"getSeasonStandings","summary":"Get season standings","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"}],"responses":{"200":{"description":"Driver and constructor standings for a season","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonStandingsPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends":{"get":{"operationId":"listRaceWeekends","summary":"List race weekends for a season","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"}],"responses":{"200":{"description":"Race weekends for a season","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RaceWeekendsPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}":{"get":{"operationId":"getRaceWeekend","summary":"Race weekend details","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"}],"responses":{"200":{"description":"Race weekend details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RaceWeekendPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/preview":{"get":{"operationId":"getRaceWeekendPreview","summary":"Structurally spoiler-safe race weekend preview","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"}],"responses":{"200":{"description":"Structurally spoiler-safe race weekend preview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RaceWeekendPreviewPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/track":{"get":{"operationId":"getRaceWeekendTrack","summary":"Circuit track map","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"}],"responses":{"200":{"description":"Circuit track map","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}":{"get":{"operationId":"getRaceWeekendSession","summary":"Race weekend session details","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"Race weekend session details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RaceWeekendSessionPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/results":{"get":{"operationId":"getRaceWeekendSessionResults","summary":"Session result rows","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"Session result rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RaceWeekendResultsPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/starting-grid":{"get":{"operationId":"getRaceWeekendStartingGrid","summary":"Starting grid rows","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"Starting grid rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RaceWeekendStartingGridPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/session-summary":{"get":{"operationId":"getSessionSummary","summary":"Get the session summary","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"session summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoSessionSummaryPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/strategy-summary":{"get":{"operationId":"getStrategySummary","summary":"Get the strategy summary","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"strategy summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoSummaryPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/weather-summary":{"get":{"operationId":"getWeatherSummary","summary":"Get the weather summary","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"weather summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoSummaryPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/timeline-summary":{"get":{"operationId":"getTimelineSummary","summary":"Get the timeline summary","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"timeline summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoSummaryPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/championship-summary":{"get":{"operationId":"getChampionshipSummary","summary":"Get the championship summary","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"}],"responses":{"200":{"description":"championship summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoSummaryPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/race-weekends/{meetingKey}/sessions/{sessionKey}/drivers/{driverNumber}/summary":{"get":{"operationId":"getDriverSessionSummary","summary":"Get a driver session summary","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1262"},"required":true,"name":"meetingKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"9973"},"required":true,"name":"sessionKey","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","example":"1"},"required":true,"name":"driverNumber","in":"path"}],"responses":{"200":{"description":"Driver session summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoDriverSessionSummaryPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seasons/{year}/tracks":{"get":{"operationId":"listSeasonTracks","summary":"List season circuit track maps","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}$","example":"2026"},"required":true,"name":"year","in":"path"}],"responses":{"200":{"description":"Season track map collection","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonTracksPayload"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v2/seo-index":{"get":{"operationId":"getSeoIndex","summary":"Get the materialized web index","responses":{"200":{"description":"Materialized SEO index for the web app","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompactSeoIndex"}}}},"304":{"description":"Not modified"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}