@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api College Football Data API
@base https://api.collegefootballdata.com/
@version 5.13.2
@auth Bearer bearer
@endpoints 60
@hint download_for_search
@toc wepa(4), teams(4), roster(1), conferences(1), talent(1), venues(1), stats(6), recruiting(3), ratings(5), rankings(1), plays(4), player(4), ppa(5), metrics(3), live(1), lines(1), info(1), games(5), records(1), calendar(1), scoreboard(1), drives(1), draft(3), coaches(1), game(1)

@group wepa
@endpoint GET /wepa/team/season
@optional {year: int(int32), team: str, conference: str}
@returns(200)

@endpoint GET /wepa/players/passing
@optional {year: int(int32), team: str, conference: str, position: str}
@returns(200)

@endpoint GET /wepa/players/rushing
@optional {year: int(int32), team: str, conference: str, position: str}
@returns(200)

@endpoint GET /wepa/players/kicking
@optional {year: int(int32), team: str, conference: str}
@returns(200)

@endgroup

@group teams
@endpoint GET /teams
@optional {conference: str, year: int(int32)}
@returns(200)

@endpoint GET /teams/fbs
@optional {year: int(int32)}
@returns(200)

@endpoint GET /teams/matchup
@required {team1: str, team2: str}
@optional {minYear: int(int32), maxYear: int(int32)}
@returns(200) {team1: str, team2: str, startYear: int(int32), endYear: int(int32), team1Wins: int(int32), team2Wins: int(int32), ties: int(int32), games: [map]}

@endpoint GET /teams/ats
@required {year: int(int32)}
@optional {conference: str, team: str}
@returns(200)

@endgroup

@group roster
@endpoint GET /roster
@optional {team: str, year: int(int32), classification: str}
@returns(200)

@endgroup

@group conferences
@endpoint GET /conferences
@returns(200)

@endgroup

@group talent
@endpoint GET /talent
@required {year: int(int32)}
@returns(200)

@endgroup

@group venues
@endpoint GET /venues
@returns(200)

@endgroup

@group stats
@endpoint GET /stats/player/season
@required {year: int(int32)}
@optional {conference: str, team: str, startWeek: int(int32), endWeek: int(int32), seasonType: str, category: str}
@returns(200)

@endpoint GET /stats/season
@optional {year: int(int32), team: str, conference: str, startWeek: int(int32), endWeek: int(int32)}
@returns(200)

@endpoint GET /stats/categories
@returns(200)

@endpoint GET /stats/season/advanced
@optional {year: int(int32), team: str, excludeGarbageTime: bool, startWeek: int(int32), endWeek: int(int32)}
@returns(200)

@endpoint GET /stats/game/advanced
@optional {year: int(int32), team: str, week: num(double), opponent: str, excludeGarbageTime: bool, seasonType: str}
@returns(200)

@endpoint GET /stats/game/havoc
@optional {year: int(int32), team: str, week: num(double), opponent: str, seasonType: str}
@returns(200)

@endgroup

@group recruiting
@endpoint GET /recruiting/players
@optional {year: int(int32), team: str, position: str, state: str, classification: str}
@returns(200)

@endpoint GET /recruiting/teams
@optional {year: int(int32), team: str}
@returns(200)

@endpoint GET /recruiting/groups
@optional {team: str, conference: str, recruitType: str, startYear: int(int32), endYear: int(int32)}
@returns(200)

@endgroup

@group ratings
@endpoint GET /ratings/sp
@optional {year: int(int32), team: str}
@returns(200)

@endpoint GET /ratings/sp/conferences
@optional {year: int(int32), conference: str}
@returns(200)

@endpoint GET /ratings/srs
@optional {year: int(int32), team: str, conference: str}
@returns(200)

@endpoint GET /ratings/elo
@optional {year: int(int32), week: int(int32), seasonType: str, team: str, conference: str}
@returns(200)

@endpoint GET /ratings/fpi
@optional {year: int(int32), team: str, conference: str}
@returns(200)

@endgroup

@group rankings
@endpoint GET /rankings
@required {year: int(int32)}
@optional {seasonType: str, week: num(double)}
@returns(200)

@endgroup

@group plays
@endpoint GET /plays
@required {year: int(int32), week: int(int32)}
@optional {team: str, offense: str, defense: str, offenseConference: str, defenseConference: str, conference: str, playType: str, seasonType: str, classification: str}
@returns(200)

@endpoint GET /plays/types
@returns(200)

@endpoint GET /plays/stats
@optional {year: int(int32), week: int(int32), team: str, gameId: int(int32), athleteId: int(int32), statTypeId: int(int32), seasonType: str, conference: str}
@returns(200)

@endpoint GET /plays/stats/types
@returns(200)

@endgroup

@group player
@endpoint GET /player/search
@required {searchTerm: str}
@optional {year: int(int32), team: str, position: str}
@returns(200)

@endpoint GET /player/usage
@required {year: int(int32)}
@optional {conference: str, position: str, team: str, playerId: int(int32), excludeGarbageTime: bool}
@returns(200)

@endpoint GET /player/returning
@optional {year: int(int32), team: str, conference: str}
@returns(200)

@endpoint GET /player/portal
@required {year: int(int32)}
@returns(200)

@endgroup

@group ppa
@endpoint GET /ppa/predicted
@required {down: int(int32), distance: int(int32)}
@returns(200)

@endpoint GET /ppa/teams
@optional {year: int(int32), team: str, conference: str, excludeGarbageTime: bool}
@returns(200)

@endpoint GET /ppa/games
@required {year: int(int32)}
@optional {week: int(int32), seasonType: str, team: str, conference: str, excludeGarbageTime: bool}
@returns(200)

@endpoint GET /ppa/players/games
@required {year: int(int32)}
@optional {week: int(int32), seasonType: str, team: str, position: str, playerId: str, threshold: num(double), excludeGarbageTime: bool}
@returns(200)

@endpoint GET /ppa/players/season
@optional {year: int(int32), conference: str, team: str, position: str, playerId: str, threshold: num(double), excludeGarbageTime: bool}
@returns(200)

@endgroup

@group metrics
@endpoint GET /metrics/wp
@required {gameId: int(int32)}
@returns(200)

@endpoint GET /metrics/wp/pregame
@optional {year: int(int32), week: int(int32), seasonType: str, team: str}
@returns(200)

@endpoint GET /metrics/fg/ep
@returns(200)

@endgroup

@group live
@endpoint GET /live/plays
@required {gameId: int(int32)}
@returns(200) {id: int(int32), status: str, period: int(int32)?, clock: str, possession: str, down: int(int32)?, distance: int(int32)?, yardsToGoal: int(int32)?, teams: [map], drives: [map]}

@endgroup

@group lines
@endpoint GET /lines
@optional {gameId: int(int32), year: int(int32), seasonType: str, week: int(int32), team: str, home: str, away: str, conference: str, provider: str}
@returns(200)

@endgroup

@group info
@endpoint GET /info
@returns(200)

@endgroup

@group games
@endpoint GET /games
@optional {year: int(int32), week: int(int32), seasonType: str, classification: str, team: str, home: str, away: str, conference: str, id: int(int32)}
@returns(200)

@endpoint GET /games/teams
@optional {year: int(int32), week: int(int32), team: str, conference: str, classification: str, seasonType: str, id: int(int32)}
@returns(200)

@endpoint GET /games/players
@optional {year: int(int32), week: int(int32), team: str, conference: str, classification: str, seasonType: str, category: str, id: int(int32)}
@returns(200)

@endpoint GET /games/media
@required {year: int(int32)}
@optional {seasonType: str, week: int(int32), team: str, conference: str, mediaType: str, classification: str}
@returns(200)

@endpoint GET /games/weather
@optional {year: int(int32), seasonType: str, week: int(int32), team: str, conference: str, classification: str, gameId: int(int32)}
@returns(200)

@endgroup

@group records
@endpoint GET /records
@optional {year: int(int32), team: str, conference: str}
@returns(200)

@endgroup

@group calendar
@endpoint GET /calendar
@required {year: int(int32)}
@returns(200)

@endgroup

@group scoreboard
@endpoint GET /scoreboard
@optional {classification: str, conference: str}
@returns(200)

@endgroup

@group drives
@endpoint GET /drives
@required {year: int(int32)}
@optional {seasonType: str, week: int(int32), team: str, offense: str, defense: str, conference: str, offenseConference: str, defenseConference: str, classification: str}
@returns(200)

@endgroup

@group draft
@endpoint GET /draft/teams
@returns(200)

@endpoint GET /draft/positions
@returns(200)

@endpoint GET /draft/picks
@optional {year: int(int32), team: str, school: str, conference: str, position: str}
@returns(200)

@endgroup

@group coaches
@endpoint GET /coaches
@optional {firstName: str, lastName: str, team: str, year: int(int32), minYear: int(int32), maxYear: int(int32)}
@returns(200)

@endgroup

@group game
@endpoint GET /game/box/advanced
@required {id: int(int32)}
@returns(200) {gameInfo: map{excitement: num(double), homeWinner: bool, awayWinProb: num(double), awayPoints: int(int32), awayTeam: str, homeWinProb: num(double), homePoints: int(int32), homeTeam: str}, teams: map{fieldPosition: [map], scoringOpportunities: [map], havoc: [map], rushing: [map], explosiveness: [map], successRates: [map], cumulativePpa: [map], ppa: [map]}, players: map{ppa: [map], usage: [map]}}

@endgroup

@end
