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.
/api/kioskTicket/appointmentStatusChangedPourquoi 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.
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'
externalStatusdes 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
# 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 }Implémentation de référence
// 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,
});
}