Développeurs

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"
}
ChampObligatoireSens
requestIdouiUUID unique de la présentation, choisi par vous
uidouiUID lu, 4 à 10 octets en hexadécimal ; :, - et espaces acceptés, casse ignorée
readouirésultat de votre authentification et blocs lus ; jamais de clé
read.blocksouiblocs du secteur authentifié seulement, jamais le bloc 7 ; liste vide si non authentifié
zonenonzone configurée sur le portique, un code de sessions.zones ; sans zone, tous les pass entrent
readAtnonheure de la lecture ; une lecture arrivée plus de 30 secondes après est refusée (READ_TOO_OLD)
scannerLabelnonnom du portique, pour le journal, 80 caractères au plus
siteIdselon le cassi 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 afficher message.
  • 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_DAY quand 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.

reasonmessageCas
UNKNOWNBracelet inconnubracelet lié à aucun billet, ou remplacé : la personne passe au retrait
NOT_AUTHENTICBracelet non authentiquebracelet lié, mais secteur 1 non authentifié : une copie probable
INVALID_BLOCKSBracelet non conformeblocs 4 et 5 différents de ceux attendus
BLOCKEDBracelet bloquébracelet, billet ou droit bloqué ou annulé
WRONG_DAYPas de pass pour aujourd'huile billet n'a aucun droit d'entrée
WRONG_ENTRANCEMauvaise entréele pass n'ouvre pas la zone envoyée par le portique
ALREADY_USEDDéjà entré aujourd'huientrée unique déjà utilisée ce jour
ALREADY_INSIDEDéjà sur le sitepass 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épond 409 DECISION_NOT_GRANTED.

Sur cette page