TS-Arena / src /app /api /v1 /API_STRUCTURE.md
Henrik Albers
convert to next.js
42f149e
# 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.