Migrating from /v1
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"Key holders also get an email on launch day and again a week before removal, and the key’s usage page in Dashboard shows whether it still calls /v1.
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 Dashboard → 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 registered at in Lovat, or is on the team list for, 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.