# Registra un client

> Come un direttore registra un'integrazione dalla console Sviluppatori, che tipo scegliere, cosa serve registrare esattamente.

URL: https://developers.vimine.network/start/register-a-client/

Ogni integrazione è un **client** registrato dalla console **Sviluppatori** dell'app Vimine. La console è
riservata al direttivo dell'associazione: se non ne fai parte, chiedi a un direttore di registrare il client
per te e di passarti le credenziali.

Senza un'associazione — un'agenzia, chi sviluppa un plugin, chi vuole provare l'API — chiedi alla piattaforma un
**invito da sviluppatore**: avrai una [sandbox](https://developers.vimine.network/guides/sandbox/) tutta tua, un'associazione di prova con soci sintetici,
e vi registrerai da solo i client di test, accettando i termini per sviluppatori. I client di produzione restano
dell'associazione per cui lavori.

## I tipi di client

| Tipo | Per | Credenziali | Note |
|---|---|---|---|
| **Sito web** (pubblico) | pagine nel browser | solo `client_id` | PKCE obbligatorio; redirect URI `https` esatti |
| **App nativa** | app mobile o desktop | solo `client_id` | come sopra; redirect loopback (`http://127.0.0.1:{porta}/…`) o schema personalizzato |
| **Server** (riservato) | un backend dell'associazione | `client_id` + `client_secret` | il secret è mostrato una volta sola; mai in un browser |

I client pubblici e nativi fanno **Accedi con Vimine** e chiamano l'API con il token del socio. I client
riservati possono in più autenticarsi da soli (`client_credentials`) per i permessi «client», come lo stato
delle tessere.

## Gli ambienti

| Ambiente | Dove vive | Quando è attivo |
|---|---|---|
| **Test** | nella [sandbox](https://developers.vimine.network/guides/sandbox/) dell'associazione (creata al bisogno) | **subito** |
| **Produzione** | nell'associazione reale | dopo l'attivazione da parte di Vimine: ricevi un'e-mail |

I client di test emettono token con `mode: "test"` e non possono toccare l'associazione reale. Le loro
credenziali riservate iniziano con `vms_test_`.

## Cosa registrare

1. **Nome** — quello che il socio vedrà sulla pagina di consenso («*Nome* vuole accedere al tuo profilo…»).
2. **Tipo** e **ambiente**.
3. **Redirect URI** — le pagine a cui Vimine può rimandare il browser dopo l'accesso. La corrispondenza è
   **esatta** (schema, host, porta, percorso): registra ogni pagina di callback che userai.
4. **Origini ammesse** — le origini (`https://www.tuosito.it`) da cui le tue pagine chiamano l'API nel browser.
   Servono per CORS e come destinazioni consentite dopo l'uscita (`post_logout_redirect_uri`).
5. **Permessi** — gli scope che l'integrazione potrà chiedere. Chiedi solo quelli che ti servono: il socio li
   vede tutti. Un client pubblico o nativo può avere solo permessi del socio; quelli «client» richiedono un
   client riservato. Tabella in [Permessi, errori e limiti](https://developers.vimine.network/guides/scopes-and-errors/).

Alla creazione ricevi il `client_id` (`vmc_…`) e, per i client riservati, il `client_secret` (`vms_…`), mostrato
**una volta sola**. Per i client di test la console mostra anche i soci sintetici della sandbox e la loro
password.

## Il ciclo di vita

- **Rigenera secret** — il nuovo secret è mostrato una volta; **il precedente continua a funzionare per
  24 ore**, così aggiorni i tuoi sistemi senza interruzioni.
- **Sospendi** — i token del client smettono di funzionare finché non lo riattivi. La riattivazione è nelle
  mani del direttivo.
- **Revoca** — definitiva: tutte le sessioni del client terminano subito e i soci non lo vedono più tra le
  loro app collegate.
- I soci possono in ogni momento togliere il consenso da **App collegate** nella loro area personale: le
  sessioni di quel client per quel socio terminano.

:::tip[Sviluppo in locale]
Un client di **test** può avere redirect URI e origini `http://localhost:…`: è il modo normale di sviluppare.
In produzione solo `https` (loopback a parte, per le app native).
:::
