Enregistrer une tentative d'accès ou un refus
Enregistre une tentative d'accès ou un refus déjà décidé par votre système. Le contrôleur de porte/portail n'est pas contacté et la porte ne se déverrouille pas.
Utilisez cet endpoint lorsque votre système refuse l'entrée, ou lorsqu'une tentative doit apparaître dans les Journaux d'accès de Door & Gate Access sans déverrouillage. Performance Hub n'évalue pas le statut d'adhésion, les heures d'accès ni les autres règles d'accès.
Un événement refusé apparaît dans les Journaux d'accès de Door & Gate Access avec le résultat Denied, le nom de votre entreprise partenaire, la porte, l'identifiant du membre lorsque vous en envoyez un, et le code de motif sous une forme lisible. Par exemple, membership_expired s'affiche sous la forme « Membership Expired ». reason_display_text et user_email sont stockés avec l'événement.
Paramètres
-
door_id
stringobligatoireID du contrôleur de porte/portail renvoyé par l'endpoint de liste.
-
facility_id
stringl'un ou l'autreIndiquez le type d'identifiant d'installation configuré pour votre intégration : utilisez facility_id pour les intégrations à liaison directe, ou linking_identifier pour les intégrations à identifiant de liaison. N'envoyez pas les deux ; l'API utilise le type d'identifiant configuré pour votre compte partenaire et ignore l'autre. En savoir plusID d'installation Performance Hub. Obligatoire pour les intégrations à liaison directe.
-
linking_identifier
stringl'un ou l'autreIndiquez le type d'identifiant d'installation configuré pour votre intégration : utilisez facility_id pour les intégrations à liaison directe, ou linking_identifier pour les intégrations à identifiant de liaison. N'envoyez pas les deux ; l'API utilise le type d'identifiant configuré pour votre compte partenaire et ignore l'autre. En savoir plusIdentifiant d'installation du partenaire. Obligatoire pour les intégrations à identifiant de liaison.
-
outcome
stringobligatoiredeniedouattempted. -
reason
stringfacultatifCode de motif en snake_case minuscule, 64 caractères maximum. Obligatoire lorsque
outcomevautdenied. Exemple :membership_expired. -
reason_display_text
stringfacultatifMotif lisible, 256 caractères maximum. Exemple :
Membership expired on 2026-04-01. -
member_id
stringfacultatifID du membre chez le partenaire. Omettez-le lorsque l'identifiant d'accès ne correspond à aucun membre, par exemple une carte inconnue.
-
user_email
stringfacultatifAdresse e-mail de la personne qui a tenté d'accéder.
-
timestamp
stringfacultatifMoment de la tentative, au format ISO 8601 avec fuseau horaire. Exemple :
2026-05-18T10:15:30Z. Par défaut, l'heure de réception de la requête. Ne doit pas être située plus de 5 minutes dans le futur ni dater de plus de 30 jours. -
idempotency_key
stringfacultatifClé de protection contre la relecture, 128 caractères maximum. Réutiliser la même clé pour le même partenaire, la même installation et la même porte renvoie le résultat d'origine.
Valeur renvoyée
Renvoie 201 lorsque l'événement est enregistré. Rejouer la même idempotency_key renvoie 200 avec idempotent défini sur true et ne crée pas de nouvel événement.
Une clé dry-run renvoie 200 avec dry_run défini sur true. Rien n'est enregistré.
Échecs courants :
400- le corps est invalide, un refus n'a pas dereason, l'horodatage est hors plage, oufacility_id/linking_identifierne correspond à aucune installation liée.403- la clé est en lecture seule.403 integration_not_enabled- votre intégration n'est pas activée pour l'installation.messageen indique la raison.404- le contrôleur de porte/portail est introuvable pour l'installation liée.
Requête
curl -X POST https://partner-api.performancehub.co/partner/v1/access-control/doors/00000000000000000000000000000007/access-events \
-u sk_live_YOUR_PARTNER_SECRET_KEY: \
-H "Content-Type: application/json" \
-d '{
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"outcome": "denied",
"reason": "membership_expired",
"reason_display_text": "Membership expired on 2026-04-01",
"member_id": "mem_12345",
"user_email": "member@example.com",
"timestamp": "2026-05-18T10:15:30Z",
"idempotency_key": "evt_abc12345"
}'
Réponse
{
"status": "recorded",
"event_id": "00000000-0000-0000-0000-000000000045",
"outcome": "denied",
"door_id": "00000000000000000000000000000007",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-05-18T10:15:30.000Z"
}
Relecture idempotente
{
"status": "recorded",
"event_id": "00000000-0000-0000-0000-000000000045",
"outcome": "denied",
"door_id": "00000000000000000000000000000007",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-05-18T10:15:30.000Z",
"idempotent": true
}