Per iniziare

Integrazioni

Lingua

Riferimento

Convenzioni ed errori

Le regole valide per ogni endpoint, così le impari una volta sola.

Paginazione

Gli endpoint di elenco accettano page (a partire da 1) e pageSize (1–100, default 30) come parametri query e racchiudono i risultati in un unico envelope:

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

Gli enum sono stringhe camelCase

I valori enum sono sempre stringhe in camelCase, mai interi: "pounds", "kilometers", "oneRepMax", "chest", "normal". Tratta i valori enum sconosciuti come forward-compatible: possono comparirne di nuovi senza un cambio di versione.

Unità

MisuraUnità
Peso (serie, record)Libbre
DistanzaMetri
Durata di serie / recordSecondi
Durata dell'allenamentoMinuti (durationMinutes)
Misurazioni corporeeIl sistema di unità nel weightUnit della voce (pollici con le libbre, centimetri con i chilogrammi)

Le unità di visualizzazione preferite dall'utente sono su /api/v1/user: converti ai bordi della tua app, non nello storage.

Identificatori

  • Dati utente (allenamenti, template, split, misurazioni): GUID stabili
  • Dati di catalogo (esercizi, attrezzatura): id interi stabili condivisi con l'app Gravl
  • L'utente: un id stringa opaco, stabile su tutti gli endpoint e i token

Date

Tutti i timestamp sono UTC, ISO 8601 (2026-07-12T17:03:00Z). I filtri per intervallo di date (startDate, endDate) sono inclusivi.

Rate limit

SuperficieLimiteChiave
/api/v1/*100 richieste / 15 minapp + utente
/oauth/*10 richieste / minindirizzo IP

Superare un limite restituisce 429 con un header Retry-After quando disponibile. Fai backoff esponenziale; non fare polling: la maggior parte dei dati personali cambia a velocità umana.

Errori

StatusQuandoCorpo
401Token mancante, malformato, scaduto o revocato; app sospesaVuoto (challenge WWW-Authenticate)
403Token valido, scope mancanteProblem details con il nome dello scope mancante
404La risorsa non esiste, oppure appartiene a un altro utenteProblem details
429Rate limit superatoVuoto; header Retry-After
400Errore di validazione (page size errata, parametri malformati)Problem details con gli errori per campo
Problem details (RFC 7807)
{
  "status": 403,
  "title": "Missing scope",
  "detail": "This authorization is missing the 'measurements:read' scope."
}

Nota la regola del 404 per i dati altrui: richiedere per id l'allenamento di un altro utente restituisce 404, non 403. L'API non conferma mai l'esistenza di dati che non puoi vedere.

Domande o idee?

La piattaforma per sviluppatori è giovane e prende forma da ciò che le persone costruiscono. Per la registrazione di app OAuth, domande o richieste di funzionalità, scrivi a developers@gravl.ai.