API
Migrating from /v1
Where each /v1 route lives in /v2, what changed, and when /v1 is removed.
Lovat Next serves the old /v1 routes for a short overlap so existing integrations keep working, but /v1 is deprecated from launch and will be removed one to two months after /v2 launches.
How to tell when /v1 ends
Section titled “How to tell when /v1 ends”Every /v1 response carries:
Deprecation: trueSunset: <the date /v1 stops working>Link: <https://lovat.cjcameron.com/docs/api/migrating-from-v1>; rel="deprecation"We will also email key holders before /v1 is removed, and each key’s Usage page in Lovat Dashboard warns This key still calls /v1 until it stops.
Your key
Section titled “Your key”Existing keys keep working on both /v1 and /v2. They were migrated as team keys, with scopes matching the routes they actually called. If a /v2 route answers 403 with a missing scope, create a new key with that scope in Lovat Dashboard under Settings → API keys.
/v1 only accepts API keys. The apps use the new API.
Route by route
Section titled “Route by route”/v1 | /v2 | Notes |
|---|---|---|
GET analysis/matchprediction?red1…blue3 | GET /analysis/tournaments/{tournamentKey}/prediction?red=…&blue=… | /v1 guessed the event from the teams. /v2 takes the event explicitly, and red/blue are comma-separated lists (254,1678,973). GET …/predictions returns every scheduled match at once |
GET analysis/alliance?teamOne…teamThree | GET /analysis/tournaments/{tournamentKey}/alliance?teams=… | Same: name the event |
GET analysis/reportcsv?tournamentKey= | GET /exports/tournaments/{tournamentKey}/reports.csv | Your team’s events only (see below) |
GET analysis/csvplain?tournamentKey= | GET /exports/tournaments/{tournamentKey}/teams.csv | Your team’s events only |
GET manager/matches/:tournament | GET /tournaments/{tournamentKey}/matches | |
GET analysis/category/team/:team | GET /analysis/seasons/{seasonYear}/teams/{teamNumber} | Metrics and breakdowns in one response. For one event, use GET /analysis/tournaments/{tournamentKey}/teams/{teamNumber} |
GET analysis/breakdown/team/:team | GET /analysis/seasons/{seasonYear}/teams/{teamNumber} | breakdowns field |
GET analysis/metric/:metric/team/:team | GET /analysis/seasons/{seasonYear}/teams/{teamNumber} | Find the metric by key in metrics |
GET analysis/flag/team/:team | GET /analysis/tournaments/{tournamentKey}/teams/{teamNumber} | Rank comes from GET /tournaments/{tournamentKey}/teams |
GET analysis/metrics/scoutreport/:uuid | GET /own/reports/{id} | Your team’s reports |
GET analysis/picklist?…weights | POST /analysis/tournaments/{tournamentKey}/picklist | Weights are a JSON body keyed by metric, not query parameters |
GET manager/profile | GET /key | Returns the key’s team and scopes |
GET manager/tournaments | GET /tournaments | |
GET manager/teams | GET /teams | |
GET manager/scouterreports?scouterUuid= | GET /own/reports | Filter by scouter on your side |
Routes not listed here (key management, upgradeuser, qualrankingprediction, custom fields) aren’t available on /v1 any more and return 404 with a link to this page. Key management moved to Dashboard settings.
What changed
Section titled “What changed”- CSV exports are limited to your team’s events: events your team is on the team list for or has scouted, in any season. One event per file. Scouter names only appear on your own team’s reports. Any other event returns
403with a link to this page, never a partial file. - Rate limits are cost-based and returned in
RateLimitheaders. See Rate limits. - Shared data has a breadth budget of distinct team×event pairs per day at other events. See The breadth budget.
/v1response shapes are frozen. New metrics and seasons only appear in/v2.