ApiBorne
Sommaire du guide

appointmentStatusChanged

Le battement de cœur du Cockpit : chaque changement d'état de RDV chez vous — arrivée, prise en charge, fin, annulation, retour en arrière — est poussé vers ApiBorne, qui met à jour ses tickets et notifie les écrans en temps réel.

POST/api/kioskTicket/appointmentStatusChanged
Auth : Authorization = clé d'autorisation compte (brute)

Pourquoi ce service existe

Le Cockpit affiche l'état des patients du jour, mais l'état réel vit chez vous. Sans ce push, une prise en charge faite dans votre agenda resterait invisible du personnel d'accueil et des écrans qui s'appuient sur le Cockpit. Un POST fire-and-forget à chaque transition — y compris les retours en arrière — suffit à garder les deux mondes synchrones en ~1–2 secondes.

Authentification : AUTH_KEY et licenceUuid

AUTH_KEY est la « Clé d'autorisation compte » : le secret partagé de l'intégration, affiché dans l'admin ApiBorne → page Connectivité (champ copiable) et remis à votre système à l'installation. C'est la même clé que celle que vous validez en X-Kiosk-Auth-Key sur les appels entrants — ici elle s'envoie dans le header Authorization, brute (sans préfixe Bearer).

Le licenceUuid vient de la même page Connectivité : c'est l'identifiant (pas un secret) qui désigne la licence cible dans le corps de chaque appel.

Provisioning : l'admin ApiBorne (page Connectivité) fournit la clé d'autorisation compte et l'UUID de licence, stockés dans la configuration de l'éditeur.Admin ApiBornepage Connectivité« Clé d'autorisation compte » 🔑« UUID de la licence »copiées UNE FOIS, à l'installationConfiguration de votre systèmeclé → header Authorization (brute)et validation de X-Kiosk-Auth-Keyuuid → corps des appels sortantsLa clé est un SECRET (authentifie) · l'UUID est un identifiant (désigne la licence)
Deux valeurs copiées une fois, à l'installation — la clé authentifie tous les flux, l'UUID désigne la licence dans les appels sortants.

Quand l'appeler

  • À chaque changement d'état d'un RDV du jour, avec le statut du référentiel contrat : scheduled, checkedIn, inCare, done, cancelled ;
  • ApiBorne met à jour l'externalStatus des tickets du jour du RDV, invalide son cache Cockpit et émet l'événement temps réel ;
  • RDV sans ticket ce jour-là → { "updated": 0 } : inoffensif, continuez à pousser.

Requête et réponse

bash
# AUTH_KEY = la clé d'autorisation compte (la même que X-Kiosk-Auth-Key), envoyée BRUTE
curl -sS "$APIBORNE/api/kioskTicket/appointmentStatusChanged" \
  -H "Authorization: $AUTH_KEY" -H 'Content-Type: application/json' -d '{
  "licenceUuid": "ecdb8b76-…",
  "contractAppointmentId": "1001~8f3a…",
  "status": "inCare"
}'
# → 200 { "updated": 1 }
Fire-and-forget : timeout court, pas d'attente dans votre transaction métier. C'est ce push qui fait refléter votre agenda au Cockpit en ~1–2 s.

Implémentation de référence

typescript
// src/server/apiborne/client.ts (démo) — fire-and-forget, jamais await par l'appelant
export function notifyAppointmentStatusChanged(appointment, status) {
  const payload = basePayload();
  if (!payload || !pushEnabled()) return;
  void post("/api/kioskTicket/appointmentStatusChanged", {
    ...payload,
    contractAppointmentId: encodeAppointmentId(appointment),
    status,
  });
}

Voir le fichier complet sur GitHub →