| # API Structure Documentation |
| ## Structure |
|
|
| ``` |
| /src/app/api/v1/ |
| βββ definitions/ |
| β βββ route.ts GET /api/v1/definitions |
| β βββ [definitionId]/ |
| β βββ rounds/ |
| β βββ route.ts GET /api/v1/definitions/{id}/rounds |
| βββ rounds/ |
| β βββ route.ts GET /api/v1/rounds |
| β βββ metadata/ |
| β β βββ route.ts GET /api/v1/rounds/metadata |
| β βββ [roundId]/ |
| β βββ route.ts GET /api/v1/rounds/{id} |
| β βββ leaderboard/ |
| β β βββ route.ts GET /api/v1/rounds/{id}/leaderboard |
| β βββ models/ |
| β β βββ route.ts GET /api/v1/rounds/{id}/models |
| β βββ series/ |
| β βββ route.ts GET /api/v1/rounds/{id}/series |
| β βββ [seriesId]/ |
| β βββ data/ |
| β β βββ route.ts GET /api/v1/rounds/{id}/series/{id}/data |
| β βββ forecasts/ |
| β βββ route.ts GET /api/v1/rounds/{id}/series/{id}/forecasts |
| βββ models/ |
| βββ rankings/ |
| β βββ route.ts GET /api/v1/models/rankings |
| βββ ranking-filters/ |
| β βββ route.ts GET /api/v1/models/ranking-filters |
| βββ [modelId]/ |
| βββ route.ts GET /api/v1/models/{id} |
| βββ rankings/ |
| β βββ route.ts GET /api/v1/models/{id}/rankings |
| βββ series-by-definition/ |
| β βββ route.ts GET /api/v1/models/{id}/series-by-definition |
| βββ definitions/ |
| βββ [definitionId]/ |
| βββ series/ |
| βββ [seriesId]/ |
| βββ forecasts/ |
| βββ route.ts GET /api/v1/models/{id}/definitions/{id}/series/{id}/forecasts |
| ``` |
|
|
| ## Service Layer |
|
|
| The service layer has been organized into three domain-specific files: |
|
|
| ### definitionService.ts |
| Handles challenge definition-related API calls: |
| - `getDefinitionRounds()` - Get rounds for a specific definition |
|
|
| ### roundService.ts |
| Handles round-related API calls: |
| - `getChallenges()` - List all rounds (previously called challenges) |
| - `getRoundsMetadata()` - Get filter metadata |
| - `getChallengeSeries()` - Get series for a round |
| - `getSeriesData()` - Get time series data |
| - `getSeriesForecasts()` - Get forecasts for a series |
| - `getRoundModels()` - Get models participating in a round |
|
|
| ### modelService.ts |
| Handles model-related API calls: |
| - `getFilteredRankings()` - Get model rankings with filters |
| - `getRankingFilters()` - Get available ranking filters |
| - `getModelDetails()` - Get model details |
| - `getModelRankings()` - Get model ranking history |
| - `getModelSeriesByDefinition()` - Get series grouped by definition |
| - `getModelSeriesForecasts()` - Get model forecasts across rounds |
|
|
| ## Authentication |
|
|
| All API routes forward the `X-API-Key` header to the backend API for authentication. |
|
|