Décision en ligne
Le portique envoie ce qu'il a lu, la plateforme accorde ou refuse, puis le portique confirme le passage.
Demander une décision
POST
/partners/gates/api/v1/gates/decisions{
"siteId": "0199…",
"requestId": "0199d0a1-7c5e-7b9a-9f00-1a2b3c4d5e6f",
"uid": "6EC387C8",
"read": {
"authenticated": true,
"sector": 1,
"keyType": "A",
"blocks": [
{ "block": 4, "data": "3F2A9C1E7B4D4E8FA21C6D5B0E9F7A13" },
{ "block": 5, "data": "574C450107EA00010000000000000000" }
]
},
"zone": "PORT",
"readAt": "2026-12-26T19:42:07.120Z",
"scannerLabel": "Tripode 3"
}| Champ | Obligatoire | Sens |
|---|---|---|
requestId | oui | UUID unique de la présentation, choisi par vous |
uid | oui | UID lu, 4 à 10 octets en hexadécimal ; :, - et espaces acceptés, casse ignorée |
read | oui | résultat de votre authentification et blocs lus ; jamais de clé |
read.blocks | oui | blocs du secteur authentifié seulement, jamais le bloc 7 ; liste vide si non authentifié |
zone | non | zone configurée sur le portique, un code de sessions.zones ; sans zone, tous les pass entrent |
readAt | non | heure de la lecture ; une lecture arrivée plus de 30 secondes après est refusée (READ_TOO_OLD) |
scannerLabel | non | nom du portique, pour le journal, 80 caractères au plus |
siteId | selon le cas | si vous opérez plusieurs sites |
La réponse
{
"data": {
"id": "0199d0a1-7c5e-7b9a-9f00-1a2b3c4d5e6f",
"decision": "GRANTED",
"message": "Bienvenue",
"checkpointId": "0199…",
"sessionId": "0199…",
"holder": { "kind": "TICKET", "reference": "WLE26-959WVM-T01", "category": "STANDARD" },
"decidedAt": "2026-12-26T19:42:07.180Z",
"openUntil": "2026-12-26T19:42:12.180Z",
"passage": "PENDING",
"replayed": false
}
}decision:GRANTED, ouvrir ;DENIED, rester fermé et affichermessage.openUntil: n'ouvrez que si la réponse arrive avant cette heure, soit 5 secondes après la décision. Passé ce délai, restez fermé : la personne représente son bracelet.message: texte court, prêt à afficher.notice:WRONG_DAYquand l'entrée est accordée en dehors des heures du jour de son pass. C'est une simple mention : le portique ouvre. Vous pouvez l'afficher à l'agent.holder: absent pour un bracelet inconnu.
Nouvel essai
Si la réponse n'arrive pas, coupure ou délai dépassé, renvoyez la même demande avec le même requestId. La plateforme rend la même décision (replayed: true) sans rien consommer de plus.
Un nouveau requestId est une nouvelle présentation. Le même requestId avec un autre UID est refusé : 409 DECISION_ID_TAKEN.
Motifs de refus
Les vérifications se font dans cet ordre ; la première qui échoue donne le motif.
reason | message | Cas |
|---|---|---|
UNKNOWN | Bracelet inconnu | bracelet lié à aucun billet, ou remplacé : la personne passe au retrait |
NOT_AUTHENTIC | Bracelet non authentique | bracelet lié, mais secteur 1 non authentifié : une copie probable |
INVALID_BLOCKS | Bracelet non conforme | blocs 4 et 5 différents de ceux attendus |
BLOCKED | Bracelet bloqué | bracelet, billet ou droit bloqué ou annulé |
WRONG_DAY | Pas de pass pour aujourd'hui | le billet n'a aucun droit d'entrée |
WRONG_ENTRANCE | Mauvaise entrée | le pass n'ouvre pas la zone envoyée par le portique |
ALREADY_USED | Déjà entré aujourd'hui | entrée unique déjà utilisée ce jour |
ALREADY_INSIDE | Déjà sur le site | pass de réentrée déjà à l'intérieur |
Le jour du pass
La date ne bloque jamais l'entrée ; elle donne au plus la mention WRONG_DAY.
- Pendant les heures d'une soirée, c'est le droit de cette soirée qui sert. S'il a déjà servi, l'entrée est refusée (
ALREADY_USED), même après minuit. - En dehors des heures, la plateforme prend le droit encore disponible le plus proche. Une même personne n'entre qu'une fois par jour ; revenue un autre jour, elle utilise son droit suivant.
- Deux portiques qui lisent le même bracelet au même instant ne font entrer qu'une personne.
Confirmer le passage
Après un accord, dites si la personne est réellement passée :
POST
/partners/gates/api/v1/gates/decisions/{id}/passage{ "siteId": "0199…", "passed": true }passed: true: la personne est passée.passed: false: le portique s'est ouvert mais personne n'est passé. Le droit reste utilisable : la présentation suivante sera accordée.- La réponse est la décision à jour, au même format. Renvoyer la même confirmation ne change rien ; confirmer l'inverse répond
409 PASSAGE_ALREADY_REPORTED, et confirmer un refus répond409 DECISION_NOT_GRANTED.