Chiavi API
La sezione Chiavi API permette di creare credenziali per integrazioni esterne (dispositivi IoT, dashboard di terze parti, contatori automatici) con accesso in sola lettura alle statistiche e ai dati degli eventi tramite l’API pubblica /api/v1/.
Solo gli utenti con ruolo OrgAdmin possono creare, vedere e revocare le chiavi API. Il ruolo Admin non ha accesso a questa sezione.
Creare una chiave
- Vai su Amministrazione → Chiavi API e clicca Nuova chiave.
- Inserisci un nome descrittivo (es. “Contatore birre stand 1”).
- Scegli l’ambito:
- Tutti gli eventi — la chiave può leggere i dati di qualsiasi evento dell’organizzazione.
- Un evento specifico — la chiave può accedere solo ai dati di quell’evento. Consigliato per dispositivi IoT dedicati a una singola sagra.
- Seleziona i permessi (vedi tabella sotto).
- Imposta facoltativamente una data di scadenza.
- Clicca Crea.
Il token completo viene mostrato una sola volta, subito dopo la creazione. Copialo e conservalo in un posto sicuro: non potrà più essere recuperato. Se lo perdi, dovrai revocare la chiave e crearne una nuova.
Permessi (scope)
| Scope | Accesso |
|---|---|
analytics:read | Statistiche dell’evento (KPI, andamento vendite, prodotti più venduti, conteggi in tempo reale) |
events:read | Elenco eventi e dettagli (incluso il giorno evento attualmente aperto) |
Revocare una chiave
Clicca sull’icona del cestino accanto alla chiave e conferma. La revoca è immediata e non reversibile: tutte le richieste con quel token restituiranno 401 Unauthorized da quel momento in poi.
Limiti di utilizzo (rate limit)
Per evitare un uso eccessivo delle risorse, le richieste all’API pubblica sono limitate per organizzazione (non per singola chiave: creare più chiavi non aumenta il limite).
Self-hosted (Community Edition)
Limite predefinito: 60 richieste al minuto, configurabile dal gestore dell’installazione tramite la variabile d’ambiente ApiKeys__RateLimitPerMinute.
Se il limite viene superato, l’API risponde 429 Too Many Requests con gli header Retry-After, X-RateLimit-Limit e X-RateLimit-Remaining.
Usare la chiave
Includi il token in ogni richiesta usando uno di questi due header:
curl https://<tuo-dominio>/api/v1/events \
-H "X-Api-Key: sgf_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"oppure:
curl https://<tuo-dominio>/api/v1/events \
-H "Authorization: Bearer sgf_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Esempio: contatore in tempo reale
L’endpoint live/item-counts è pensato per dispositivi che interrogano periodicamente le quantità vendute (es. un contatore di birre alla spina):
curl "https://<tuo-dominio>/api/v1/events/<eventId>/live/item-counts" \
-H "X-Api-Key: sgf_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Risposta:
{
"data": [
{ "menuItemId": 12, "itemName": "Birra alla spina", "quantitySold": 134 }
],
"meta": {
"generatedAt": "2026-06-11T13:06:34Z",
"eventId": "3fa85f64-...",
"dayId": 42
}
}Se non specifichi dayId, l’endpoint usa il giorno evento attualmente aperto (o l’ultimo chiuso, se nessuno è aperto).
Errori comuni
| Codice | Causa | Soluzione |
|---|---|---|
401 Unauthorized | Token mancante, malformato, scaduto o revocato | Verifica l’header e crea una nuova chiave se necessario |
403 Forbidden | La chiave non ha lo scope richiesto dall’endpoint | Crea una chiave con il permesso corretto |
404 Not Found | L’evento non esiste, appartiene a un’altra organizzazione, oppure la chiave è vincolata a un altro evento | Verifica l’ID evento e l’ambito della chiave |
429 Too Many Requests | Limite di richieste superato | Attendi il tempo indicato in Retry-After e riduci la frequenza delle richieste |