Reference

Konvence a chyby

Pravidla, která platí napříč všemi endpointy, aby ses je musel učit jen jednou.

Stránkování

Endpointy se seznamy přijímají query parametry page (od 1) a pageSize (1–100, výchozí 30) a výsledky balí do jedné obálky:

{
  "items": [ … ],
  "pageNumber": 2,
  "totalPages": 9,
  "totalCount": 174,
  "hasPreviousPage": true,
  "hasNextPage": true
}

Enumy jsou camelCase řetězce

Hodnoty enumů jsou vždy řetězce v camelCase, nikdy celá čísla: "pounds", "kilometers", "oneRepMax", "chest", "normal". S neznámými hodnotami enumů počítej jako s dopředně kompatibilními: nové můžou přibýt i bez změny verze.

Jednotky

VeličinaJednotka
Váha (série, rekordy)Libry
VzdálenostMetry
Délka série / rekorduSekundy
Délka tréninkuMinuty (durationMinutes)
Tělesné mírySystém jednotek podle weightUnit daného záznamu (palce s librami, centimetry s kilogramy)

Preferované zobrazovací jednotky uživatele najdeš na /api/v1/user; převáděj až na okraji své aplikace, ne v úložišti.

Identifikátory

  • Uživatelská data (tréninky, šablony, splity, míry): stabilní GUID
  • Katalogová data (cviky, vybavení): stabilní celočíselná id sdílená s aplikací Gravl
  • Uživatel: neprůhledné řetězcové id, stabilní napříč všemi endpointy a tokeny

Datumy

Všechny časové údaje jsou UTC, ISO 8601 (2026-07-12T17:03:00Z). Filtry rozsahu dat (startDate, endDate) jsou včetně krajních hodnot.

Rate limity

OblastLimitKlíčováno podle
/api/v1/*100 requestů / 15 minaplikace + uživatel
/oauth/*10 requestů / minIP adresa

Překročení limitu vrací 429, a když je k dispozici, i hlavičku Retry-After. Ustupuj exponenciálně a nedělej polling; většina osobních dat se mění lidským tempem.

Chyby

StatusKdyTělo
401Chybějící, poškozený, expirovaný nebo zneplatněný token; pozastavená aplikacePrázdné (výzva WWW-Authenticate)
403Platný token, chybějící scopeProblem details s názvem chybějícího scope
404Zdroj neexistuje, nebo patří jinému uživateliProblem details
429Překročený rate limitPrázdné; hlavička Retry-After
400Selhání validace (špatná velikost stránky, poškozené parametry)Problem details s chybami jednotlivých polí
Problem details (RFC 7807)
{
  "status": 403,
  "title": "Missing scope",
  "detail": "This authorization is missing the 'measurements:read' scope."
}

Všimni si pravidla 404 pro cizí data: request na trénink jiného uživatele podle id vrací 404, ne 403. API nikdy nepotvrdí, že existují data, která nevidíš.