API v3.1
L’API v3.1 ajoute trois choses à la v3 : des conteneurs qui gardent leur mode dès leur création, des messages identifiés par une référence marchand (mrid) et des webhooks signés qui informent votre système de ce qui s’est passé. Elle est servie sous son propre chemin de base et lit et écrit les mêmes messages que les widgets : un message enregistré avec le widget V3 est donc le même message que celui que liste votre API.
Avant de lire cette page
Lisez d’abord les références Authentification et Conteneurs de la v3. La v3.1 utilise les mêmes clés Bearer et la même enveloppe d’erreur ; les différences sont décrites ici. Clés d’API, scopes et contraintes de plateforme
URL de base et plateformes
Toutes les routes de la v3.1 se trouvent sous le chemin de base /api/v3.1, sur l’hôte de l’API client qui vous est communiqué lors de l’onboarding. Le chemin de base de la v3.1 ne partage aucune route avec /api/v3 : un appel à /api/v3.1/containers n’atteint jamais un handler de la v3, et un appel v3 n’atteint jamais un handler de la v3.1.
https://<client-api-host>/api/v3.1/containers
Authorization: Bearer liv_<prefix>_<secret>
- La v3.1 ne sert que les plateformes V3. Une clé dont la plateforme n’est pas sur l’application utilisateur V3 reçoit 403 PLATFORM_NOT_V3.
- Un conteneur créé via la v3.1 est marqué comme créé par l’API. Un conteneur créé par la v3 ou par l’ancienne stack n’est pas visible depuis la v3.1, et un conteneur v3.1 n’est pas visible depuis la v3.
- Votre clé doit porter exactement une contrainte de plateforme. Une clé sans contrainte, ou avec plusieurs, reçoit 403 INVALID_PLATFORM_CONSTRAINTS.
Différences avec la v3
La plupart des appels ressemblent à leurs équivalents v3. Voici les changements qu’un intégrateur doit anticiper.
| Sujet | v3 | v3.1 |
|---|---|---|
| Chemin de base | /api/v3 | /api/v3.1 |
| Mode d’un conteneur | Non défini par l’API | Obligatoire à la création (single ou gallery), fixé pour toute la vie du conteneur |
| Identité d’un message | Conteneur et urid | Conteneur et mrid, votre propre référence, unique au sein du conteneur |
| Accès à l’enregistrement | Clé d’édition et lien d’enregistrement | Jeton d’enregistrement (rt_…) émis par votre serveur, avec mise en attente facultative jusqu’au paiement |
| Accès à la lecture | urid | Jeton de visualisation (vt_…) émis par votre serveur, éventuellement limité à un mrid |
| Notifications | Envoyées par les appels notify et unlock | Réglées par public à la création : organisateur, contributeurs, destinataire |
| Événements | Non disponible | Webhooks signés, envoyés au moins une fois |
| Liste des messages | Non disponible | GET /containers/{crid}/messages, avec des champs limités par messageAccess |
Toutes les routes
Le tableau liste chaque route de la v3.1, le scope dont sa clé a besoin et la page qui la documente. Une route absente de ce tableau n’existe pas en v3.1.
| Méthode | Chemin | Scope | Documentée dans |
|---|---|---|---|
| GET | /health | aucun | Cette page |
| POST | /containers | containers:write | Conteneurs |
| GET | /containers | containers:read | Conteneurs |
| GET | /containers/{crid} | containers:read | Conteneurs |
| PATCH | /containers/{crid} | containers:write | Conteneurs |
| POST | /containers/{crid}/notify | containers:notify | Conteneurs |
| POST | /containers/{crid}/unlock | containers:unlock | Conteneurs |
| GET | /containers/{crid}/qrcode | containers:qrcode | Conteneurs |
| GET | /containers/{crid}/card | containers:card | Conteneurs |
| GET | /containers/{crid}/messages | messages:read | Messages et jetons |
| GET | /containers/{crid}/messages/{mrid} | messages:read | Messages et jetons |
| POST | /containers/{crid}/messages/{mrid}/release | messages:publish | Messages et jetons |
| DELETE | /containers/{crid}/messages/{mrid} | messages:publish | Messages et jetons |
| POST | /containers/{crid}/record-tokens | tokens:record | Messages et jetons |
| POST | /containers/{crid}/view-tokens | tokens:view | Messages et jetons |
| GET | /webhooks/deliveries | webhooks:read | Webhooks |
| GET | /docs/doc.json | aucun | Cette page |
Erreurs
Les erreurs utilisent l’enveloppe de la v3 : un objet avec un code en majuscules et un message en anglais. Lisez le code, pas le texte du message.
{
"error": {
"code": "MODE_MISMATCH",
"message": "Container is a single-message container; a contributor token cannot be issued."
}
}
| Code | Statut | Signification |
|---|---|---|
| PLATFORM_NOT_V3 | 403 | La plateforme de la clé n’est pas servie par la v3.1. |
| IMMUTABLE_FIELD | 400 | mode, ou gallery.mode, a été envoyé dans un PATCH. Le mode est fixé à la création. |
| CRID_IN_USE | 409 | Le crid appartient à un conteneur que la v3.1 n’a pas créé. |
| MODE_MISMATCH | 409 | Le rôle ne correspond pas au conteneur : un jeton organisateur pour un conteneur dont le message principal a un autre mrid, ou un jeton contributeur pour un conteneur single. |
| GALLERY_CLOSED | 409 | Un jeton d’enregistrement a été demandé pour une galerie fermée. |
| GALLERY_NOT_EMPTY | 409 | Suppression du message principal d’une galerie alors que d’autres messages y restent. |
| MESSAGE_REJECTED | 409 | Le message a été rejeté par la modération et ne peut pas être supprimé via l’API. |
| MESSAGE_MISSING | 409 | notify a été appelé avant qu’un message soit listé. |
| RATE_LIMITED | 429 | Trop d’appels pour cette clé. Espacez vos appels, puis réessayez. |