Aller au contenu
Livstick Développeurs

Avant de lire cette page

Le démarrage rapide a déjà placé un jeton Bearer dans un en-tête de requête, sans expliquer sa structure ni ce qu’il est autorisé à faire — cette page comble ce manque. Revoir la première requête API

La structure d’un jeton v3

Une clé v3 est envoyée comme un jeton Bearer standard, avec un préfixe fixe qui l’identifie comme une clé Livstick, avant la partie secrète :

http
Authorization: Bearer liv_<prefix>_<secret>
  • liv_ signale d’un coup d’œil que le jeton est une clé Livstick, dans les logs comme dans les tickets de support.
  • <prefix> identifie la clé sans exposer le secret — il peut être journalisé ou affiché sans risque.
  • <secret> est la partie qui authentifie la requête, et la seule qui doit rester confidentielle.

Les neuf scopes v3

Une clé v3 reçoit un ou plusieurs des neuf scopes. Chaque scope correspond à un pan des fonctionnalités liées aux conteneurs et aux messages, pas à un endpoint unique — containers:read, par exemple, couvre à la fois la liste des conteneurs et la lecture d’un conteneur.

Scopes v3
Scope Autorise
containers:read Lister les conteneurs, lire un conteneur et récupérer ses URL d’enregistrement et d’aperçu.
containers:write Créer ou récupérer un conteneur, et le corriger par une mise à jour partielle.
containers:notify Déclencher la remise au destinataire.
containers:unlock Rendre un message accessible à son destinataire.
containers:qrcode Récupérer le QR code du conteneur au format PNG.
containers:card Récupérer la carte imprimable du conteneur au format PDF.
messages:read Lire les messages, filtrés par identifiant de conteneur ou par groupe de codes.
messages:write Mettre à jour les champs data et privateData d’un message.
code_groups:read Lire la liste des groupes de codes.

Quatre scopes ajoutés pour l’API v3.1

L’API v3.1 reprend les scopes containers:* et messages:read listés ci-dessus, pour les mêmes opérations, et en ajoute quatre. Une clé qui doit appeler l’une des nouvelles routes a besoin du scope correspondant dès sa création : un scope ne peut pas être ajouté à une clé existante ; créez donc une nouvelle clé et retirez l’ancienne.

Scopes de la v3.1
Scope Autorise
tokens:record Émettre des jetons d’enregistrement, qui permettent au widget d’enregistrement d’écrire un message pour un mrid.
tokens:view Émettre des jetons de visualisation, qui permettent au widget de lecture de lire un message ou un conteneur entier.
messages:publish Libérer un message retenu, et supprimer un message en cas de remboursement ou de rétractation.
webhooks:read Lire le journal des envois de votre plateforme.

Les deux scopes 2.1

L’API 2.1 ne découpe pas les permissions par opération comme le fait la v3. Elle accorde l’accès par famille de routes, avec un scope par famille : client_v2 pour les routes /v2.1/client/… destinées au client, user_v2 pour la route /v2.1/user/… destinée au destinataire.

Scopes 2.1
Scope Autorise
client_v2 Toutes les routes /v2.1/client/{key}/{crid}/… : redirect, retarget, QR code, carte, notify, modify, details, enregistrement de webhook.
user_v2 La route /v2.1/user/{key}/{crid}/redirect destinée au destinataire.

Un seul système de clés pour les deux API

C’est le point à retenir : la v3 et la 2.1 ne sont pas deux systèmes d’authentification accolés l’un à l’autre. Une clé — quelle que soit l’API qu’elle cible — est gérée par la même infrastructure sous-jacente.

  • Les secrets sont stockés hachés, jamais sous une forme qui permettrait de les relire.
  • Une clé peut avoir une date d’expiration, et son statut (active, revoked, expired) est vérifié à chaque requête.
  • Chaque utilisation est auditée, et lastUsedAt est tenu à jour pour chaque clé.
  • Une clé peut être restreinte à une plateforme, en plus de ses scopes.

Où voir vos scopes réels

Cette page recense ce qui existe — chaque scope défini par l’une ou l’autre API, et la structure d’une clé. Elle ne vous dit pas, et ne peut pas vous dire, quels scopes détiennent vos propres clés, ni vous montrer la valeur réelle d’une clé.