Skip to Content
Guides par cas d'usageContrôle d'accès

Contrôle d’accès

Objectif : permettre à votre système de contrôle d’accès (tourniquets, lecteurs de badge, bornes) d’enregistrer des pointages dans Kinmu en temps réel.

Scopes requis : org:fichajes:write (enregistrer) et org:fichajes:read (consulter).

Enregistrer un pointage

POST /v1/check-ins enregistre un événement au nom d’un salarié. Il est persisté avec source=api, audité, et respecte les validations de temps de travail (aucun contournement des règles).

curl -s -X POST "$KINMU_BASE_URL/check-ins" \ -H "Authorization: Bearer $KINMU_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "employee_id": "a1b2c3d4-…", "type": "in", "timestamp": "2026-07-08T08:00:00Z", "location_id": "loc-uuid", "note": "Acceso puerta principal" }'

Champs du body :

ChampObligatoireNotes
employee_idOuiUUID public du salarié.
typeOuiin, out, break_start ou break_end.
timestampOuiISO 8601 en UTC.
location_idNonSite où a lieu le pointage.
noteNonTexte libre (p. ex. identifiant du lecteur).

Réponse 201 :

{ "id": "ci-uuid", "employee_id": "a1b2c3d4-…", "type": "in", "timestamp": "2026-07-08T08:00:00Z", "location": { "id": "loc-uuid", "name": "Sede Madrid" }, "source": "api", "validated": true, "created_at": "2026-07-08T08:00:01Z", "updated_at": "2026-07-08T08:00:01Z" }

Utilisez Idempotency-Key sur chaque pointage. Les tourniquets réessaient en cas de coupure réseau ; avec une clé idempotente, vous évitez d’enregistrer deux fois le même accès. Renvoyer la même clé retourne le pointage d’origine ; la réutiliser avec un autre body renvoie un 409.

Mapper vos salariés

Votre système d’accès identifie les personnes par badge ou PIN ; Kinmu par employee_id (UUID). Construisez le mapping une fois, puis rafraîchissez-le périodiquement :

Téléchargez les salariés et leur structure

curl -s "$KINMU_BASE_URL/employees?status=active&limit=100" \ -H "Authorization: Bearer $KINMU_API_KEY" curl -s "$KINMU_BASE_URL/locations" -H "Authorization: Bearer $KINMU_API_KEY"

Stockez le mapping carte → employee_id et zone → location_id

Utilisez email ou un champ de votre référentiel pour faire correspondre les personnes ; stockez les UUID de Kinmu.

Rafraîchissez avec updated_since

Ne relisez que ce qui a changé : GET /v1/employees?updated_since=<dernière sync>.

Consulter les pointages

Pour la réconciliation, lisez les événements avec une plage obligatoire de ≤ 92 jours :

curl -s "$KINMU_BASE_URL/check-ins?employee_id=a1b2…&from=2026-07-01&to=2026-07-08" \ -H "Authorization: Bearer $KINMU_API_KEY"

Vous voulez réagir en temps réel à chaque pointage (par exemple pour un tableau de présence) ? Abonnez-vous à l’événement checkin.created avec les webhooks plutôt que de faire du polling.

Erreurs fréquentes

SituationRéponse
Scope org:fichajes:write manquant403 invalid_scope
timestamp hors plage ou type invalide422 validation_failed (avec errors)
Nouvelle tentative avec la même Idempotency-Key et un body différent409 idempotency_conflict
Salarié d’une autre entreprise404 not_found
Last updated on