Mirrored from
/mnt/DATA/git/pikebacker/docs/09_api_contract.md. Origin:repository. Active tasks and changing state belong in Gitea issues; this wiki page is durable project context.
API Contract
The machine-readable OpenAPI draft is in schemas/openapi.yaml.
Core endpoints
Create trip
POST /v1/trips
Creates a trip shell from user inputs.
Plan route
POST /v1/routes/plan
Input:
- start/end/imported GPX,
- profile,
- constraints,
- preferred providers.
Output:
- route id,
- geometry,
- distance/elevation,
- scores,
- warnings,
- candidate alternatives.
Plan stages
POST /v1/stages/plan
Input:
- route id,
- day count/date range,
- daily constraints,
- sleep preferences.
Output:
- stage cards,
- Plan A/B endpoints,
- sleep/food/water/repair/bailout candidates,
- stage warnings.
Corridor POIs
GET /v1/routes/{route_id}/pois?category=water&buffer_km=5
Returns route-relevant POIs with distance along route, detour distance, confidence, and source.
Critical gaps
GET /v1/routes/{route_id}/gaps
Returns computed gaps for water, food, sleep, repair, bailout, and charging.
Rule cards
GET /v1/rules?bbox=minLon,minLat,maxLon,maxLat&route_id=...
Returns route- or area-specific advisory cards.
Offline pack
POST /v1/offline-packs
Generates a manifest and download URLs for cached trip data.
Export
GET /v1/routes/{route_id}/export?format=gpx
MVP: GPX. Later: TCX and FIT.
Local report
POST /v1/reports
Submits a dated, location-bound structured report. The MVP response includes moderationStatus, trustScore, and queuedOffline when an offline client id is supplied.
Report sync
POST /v1/reports/sync
Future endpoint. The current MVP queues reports client-side while offline and resubmits them through POST /v1/reports.
Error handling
Errors should include:
- machine-readable code,
- human-readable message,
- remediation suggestion,
- provider/source if relevant.
Example:
{
"error": "PROVIDER_UNAVAILABLE",
"message": "routing provider \"openrouteservice\" is not available in this MVP runtime. Set ROUTING_PROVIDER=mock for fixture mode or configure the selected provider adapter and credentials.",
"details": {
"providerName": "openrouteservice",
"providerType": "routing",
"setupHint": "Set ROUTING_PROVIDER=mock for fixture mode or configure the selected provider adapter and credentials."
}
}
Current MVP notes
schemas/openapi.yamlreflects implemented response fields including route segments, surface breakdown, attribution, stage POI buckets, offline manifest metadata, and report queue ids.format=gpxis implemented. TCX/FIT are reserved for futureDeviceExportProvideradapters.- Mock providers are deterministic and require no external keys.
- Rule cards and access/protected-area warnings are advisory and confidence-scored.