Skip to Content
Autenticazione

Autenticazione e chiavi API

L’API usa chiavi API aziendali (service account, non legate a un utente). Ogni richiesta si autentica con la chiave come Bearer token:

curl https://api.kinmu.app/v1/organization \ -H "Authorization: Bearer kinmu_sk_live_xxxxxxxx"

Natura delle chiavi

L’azienda si risolve sempre dalla chiave: non invii mai un companyId nell’URL né nel body.

AspettoDettaglio
Formatokinmu_sk_live_<40+ chars> (produzione) · kinmu_sk_test_<40+ chars> (sandbox).
VisibilitàVengono mostrate una sola volta alla creazione. Dopo vedrai solo il prefisso + i primi caratteri.
EmissioneDalla dashboard my.kinmu.app → Sviluppatori (solo global_admin / company_manager).
LimiteMassimo 10 chiavi attive per azienda.
ScadenzaOpzionale (90 / 180 / 365 giorni o senza scadenza).

Scopes

Ogni chiave ha scopes espliciti (minimo privilegio). Senza lo scope richiesto, l’endpoint risponde 403 invalid_scope.

ScopePermette
org:empleados:readLeggere i dipendenti.
org:empleados:writeCreare, aggiornare e cessare i dipendenti.
org:fichajes:readLeggere timbrature e work-summaries.
org:fichajes:writeRegistrare timbrature.
org:ausencias:readLeggere le assenze.
org:ausencias:writeCreare, approvare e rifiutare assenze.
org:saldos:readLeggere i saldi ferie.
org:estructura:readLeggere locations e units.
org:informes:readRichiedere e scaricare report.
webhooks:manageGestire i webhooks in uscita.

GET /v1/organization non richiede uno scope specifico: serve per l’introspezione e per validare la chiave. I report richiedono anche lo scope di lettura del loro dominio: ad es. absences_export richiede org:ausencias:read.

Concedi a ogni integrazione solo gli scopes di cui ha bisogno.

Sandbox

Le chiavi kinmu_sk_test_ operano sempre su un’azienda sandbox con dati sintetici, isolata dai tuoi dati reali. Vedi la guida alla Sandbox.

Rotazione

Ruotare una chiave = crearne una nuova e revocare la vecchia. Flusso senza downtime:

  1. Crea la nuova chiave con gli stessi scopes.
  2. Fai il deploy della tua integrazione con la nuova chiave.
  3. Verifica che funzioni (ad es. con un GET /v1/organization).
  4. Revoca la chiave vecchia.

Revoca

La revoca è immediata dalla dashboard: la chiave smette di funzionare dalla richiesta successiva (401 unauthenticated). Revoca subito qualsiasi chiave che sospetti compromessa e controlla il suo last_used_ip.

Best practice

  • Mai pubblicare una chiave in codice client, app mobile, repository o log. Sono credenziali server.
  • Conservale in un secret manager o in variabili d’ambiente.
  • Usa una chiave per integrazione, così puoi revocare in modo granulare.
  • Applica il minimo privilegio: solo gli scopes indispensabili.
  • Imposta una scadenza e ruota le chiavi periodicamente.
  • Nei log, non registrare mai l’header Authorization.

Errori di autenticazione

HTTPcodeCausa
401unauthenticatedChiave assente, non valida, revocata o scaduta.
403invalid_scopeLa chiave non ha lo scope richiesto (errors.required_scope).
403subscription_inactiveL’abbonamento dell’azienda è sospeso.
403addon_disabledL’addon Public API non è attivo.

Trovi il formato completo degli errori in Convenzioni → Errori.

Last updated on