# Enregistrer un client

> Comment un dirigeant enregistre une intégration depuis la console Développeurs, quel type choisir, ce qu’il faut enregistrer exactement.

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

Chaque intégration est un **client** enregistré depuis la console **Développeurs** de l’application Vimine. La console
est réservée au conseil de l’association : si vous n’en faites pas partie, demandez à un dirigeant d’enregistrer le
client pour vous et de vous transmettre les identifiants.

Sans association — une agence, qui développe un plugin, qui veut essayer l'API — demandez à la plateforme une
**invitation développeur** : vous aurez une [sandbox](https://developers.vimine.network/fr/guides/sandbox/) à vous, une association d'essai avec des membres
synthétiques, et vous y enregistrerez vous-même vos clients de test, en acceptant les conditions pour les développeurs.
Les clients de production restent à l'association pour laquelle vous travaillez.

## Types de client

| Type | Pour | Identifiants | Notes |
|---|---|---|---|
| **Site web** (public) | des pages dans le navigateur | `client_id` seulement | PKCE obligatoire ; redirect URI `https` exactes |
| **Application native** | applications mobiles ou de bureau | `client_id` seulement | comme ci-dessus ; redirections loopback (`http://127.0.0.1:{port}/…`) ou schéma personnalisé |
| **Serveur** (confidentiel) | un backend de l’association | `client_id` + `client_secret` | le secret n’est affiché qu’une fois ; jamais dans un navigateur |

Les clients publics et natifs font **Se connecter avec Vimine** et appellent l’API avec le jeton du membre.
Les clients confidentiels peuvent en plus s’authentifier par eux-mêmes (`client_credentials`) pour les autorisations
« client », comme l’état des cartes.

## Environnements

| Environnement | Où il vit | Quand il est actif |
|---|---|---|
| **Test** | dans la [sandbox](https://developers.vimine.network/fr/guides/sandbox/) de l’association (créée à la demande) | **immédiatement** |
| **Production** | dans l’association réelle | après activation par Vimine : vous recevez un e-mail |

Les clients de test émettent des jetons avec `mode: "test"` et ne peuvent pas toucher à l’association réelle. Leurs
identifiants confidentiels commencent par `vms_test_`.

## Ce qu’il faut enregistrer

1. **Nom** — ce que le membre verra sur la page de consentement (« *Nom* souhaite accéder à votre profil… »).
2. **Type** et **environnement**.
3. **Redirect URI** — les pages vers lesquelles Vimine peut renvoyer le navigateur après la connexion. La correspondance
   est **exacte** (schéma, hôte, port, chemin) : enregistrez chaque page de callback que vous utiliserez.
4. **Origines autorisées** — les origines (`https://www.example.org`) depuis lesquelles vos pages appellent l’API dans
   le navigateur. Elles servent pour le CORS et comme destinations autorisées après la déconnexion
   (`post_logout_redirect_uri`).
5. **Autorisations** — les scopes que l’intégration peut demander. Ne demandez que ce dont vous avez besoin : le membre
   les voit toutes. Un client public ou natif ne peut détenir que des autorisations « membre » ; les autorisations
   « client » exigent un client confidentiel. Tableau dans [Autorisations, erreurs et limites](https://developers.vimine.network/fr/guides/scopes-and-errors/).

À la création, vous obtenez le `client_id` (`vmc_…`) et, pour les clients confidentiels, le `client_secret` (`vms_…`),
affiché **une seule fois**. Pour les clients de test, la console affiche aussi les membres synthétiques de la sandbox
et leur mot de passe.

## Cycle de vie

- **Régénérer le secret** — le nouveau secret n’est affiché qu’une fois ; **l’ancien continue de fonctionner pendant
  24 heures**, pour que vous puissiez mettre à jour vos systèmes sans interruption.
- **Suspendre** — les jetons du client cessent de fonctionner jusqu’à ce que vous le réactiviez. La réactivation est
  entre les mains du conseil.
- **Révoquer** — définitif : chaque session du client prend fin immédiatement et les membres ne le voient plus parmi
  leurs applications connectées.
- Les membres peuvent retirer leur consentement à tout moment depuis **Applications connectées** dans leur compte :
  les sessions de ce client pour ce membre prennent fin.

:::tip[Développement local]
Un client de **test** peut avoir des redirect URI et des origines `http://localhost:…` : c’est la façon normale de
développer. En production, seulement `https` (sauf le loopback, pour les applications natives).
:::
