Skip to content

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.

Every /v1 response carries:

Deprecation: true
Sunset: <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.

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.

/v1/v2Notes
GET analysis/matchprediction?red1…blue3GET /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…teamThreeGET /analysis/tournaments/{tournamentKey}/alliance?teams=…Same: name the event
GET analysis/reportcsv?tournamentKey=GET /exports/tournaments/{tournamentKey}/reports.csvYour team’s events only (see below)
GET analysis/csvplain?tournamentKey=GET /exports/tournaments/{tournamentKey}/teams.csvYour team’s events only
GET manager/matches/:tournamentGET /tournaments/{tournamentKey}/matches
GET analysis/category/team/:teamGET /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/:teamGET /analysis/seasons/{seasonYear}/teams/{teamNumber}breakdowns field
GET analysis/metric/:metric/team/:teamGET /analysis/seasons/{seasonYear}/teams/{teamNumber}Find the metric by key in metrics
GET analysis/flag/team/:teamGET /analysis/tournaments/{tournamentKey}/teams/{teamNumber}Rank comes from GET /tournaments/{tournamentKey}/teams
GET analysis/metrics/scoutreport/:uuidGET /own/reports/{id}Your team’s reports
GET analysis/picklist?…weightsPOST /analysis/tournaments/{tournamentKey}/picklistWeights are a JSON body keyed by metric, not query parameters
GET manager/profileGET /keyReturns the key’s team and scopes
GET manager/tournamentsGET /tournaments
GET manager/teamsGET /teams
GET manager/scouterreports?scouterUuid=GET /own/reportsFilter 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.

  • 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 403 with a link to this page, never a partial file.
  • Rate limits are cost-based and returned in RateLimit headers. See Rate limits.
  • Shared data has a breadth budget of distinct team×event pairs per day at other events. See The breadth budget.
  • /v1 response shapes are frozen. New metrics and seasons only appear in /v2.