Aller au contenu
signatik

Émargement

Sessions de formation, créneaux, feuille scellée. Référence générée depuis les schémas de validation de l’API : ce que vous lisez est ce que le serveur vérifie.

Base : https://preprod-app.signatik.com/api/v1 · authentification Authorization: Bearer sk_… · erreurs { "error": { "code", "message" } }.

post/api/v1/attendance-sessions

Créer une session d’émargement

Aucun PDF en entrée : la feuille est générée par la plateforme. Réponse : sign_url par stagiaire, trainer.url pour le formateur. Scope attendance:write.

POST /attendance-sessions
curl -X POST https://preprod-app.signatik.com/api/v1/attendance-sessions \
  -H "Authorization: Bearer sk_test_…" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Contrat de mission n°1234",
  "reference": "SESS-2026-0912",
  "modality": "onsite",
  "location": "Lyon, salle 3",
  "trainer": {
    "name": "Contrat de mission n°1234"
  },
  "slots": [
    {
      "label": "Jour 1 — matin",
      "starts_at": "2026-09-15T09:00:00+02:00",
      "ends_at": "2026-09-15T12:30:00+02:00"
    }
  ],
  "attendees": [
    {
      "name": "Contrat de mission n°1234"
    }
  ],
  "retention_days": 1095,
  "notify": true
}'
201 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "name": "Contrat de mission n°1234",
  "reference": "SESS-2026-0912",
  "modality": "onsite",
  "location": "Lyon, salle 3",
  "status": "open",
  "trainer": {
    "name": "Contrat de mission n°1234",
    "email": "jean.dupont@exemple.fr",
    "url": "https://votre-app.fr/webhooks/esign"
  },
  "retention_days": 1,
  "created_at": "…",
  "closed_at": "2026-09-02T14:33:07Z",
  "sealed_at": "2026-09-02T14:33:07Z",
  "sheet_sha256": "…",
  "sheet_download_url": "…",
  "evidence_download_url": "…",
  "slots": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "label": "Jour 1 — matin",
      "starts_at": "2026-09-15T09:00:00+02:00",
      "ends_at": "2026-09-15T12:30:00+02:00",
      "module": "…",
      "status": "scheduled",
      "opened_at": "2026-09-02T14:33:07Z",
      "closed_at": "2026-09-02T14:33:07Z",
      "trainer_signed_at": "2026-09-02T14:33:07Z",
      "present": 1,
      "expected": 1,
      "rate": 1
    }
  ],
  "attendees": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "external_ref": "STG-8891",
      "sign_url": "…",
      "marks": [
        {
          "slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
          "status": "…",
          "method": "…",
          "signed_at": "…",
          "out_of_window": true
        }
      ]
    }
  ],
  "marks_count": 1
}
Corps de la requête
ChampTypeDescription
namerequisstring≤ 200 car.
referencestring≤ 100 car.
modality"onsite" | "remote" | "hybrid"défaut : "onsite"
locationstring≤ 200 car.
trainerrequisobject
namerequisstring≤ 200 car.
emailstring
slotsrequisobject[]1–200 éléments
labelrequisstring≤ 100 car.
starts_atrequisdate-time
ends_atrequisdate-time
modulestring≤ 200 car.
attendeesrequisobject[]1–500 éléments
namerequisstring≤ 200 car.
emailstring
external_refstring≤ 100 car.
retention_daysintegerdéfaut : 1095 · 30–3650
notifybooleandéfaut : true
Réponses
201OK
400Corps invalide
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 201
ChampTypeDescription
idrequisuuid
namerequisstring
referencerequisstring | null
modalityrequis"onsite" | "remote" | "hybrid"
locationrequisstring | null
statusrequis"open" | "closed" | "sealed"
trainerrequisobject
namerequisstring
emailrequisstring | null
urlrequisstringEspace formateur (ouverture et fermeture des créneaux, QR code)
retention_daysrequisinteger
created_atrequisstring
closed_atrequisdate-time | null
sealed_atrequisdate-time | null
sheet_sha256requisstring | null
sheet_download_urlrequisstring | null
evidence_download_urlrequisstring | null
slotsrequisobject[]
idrequisuuid
labelrequisstring
starts_atrequisstring
ends_atrequisstring
modulerequisstring | null
statusrequis"scheduled" | "open" | "closed"
opened_atrequisdate-time | null
closed_atrequisdate-time | null
trainer_signed_atrequisdate-time | null
presentrequisinteger
expectedrequisinteger
raterequisintegerTaux de présence, en %
attendeesrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring | null
external_refrequisstring | null
sign_urlrequisstringLien personnel d’émargement, valable toute la session
marksrequisobject[]
slot_idrequisuuid
statusrequisstring
methodrequisstring
signed_atrequisstring
out_of_windowrequisboolean
marks_countrequisinteger
get/api/v1/attendance-sessions

Lister les sessions

GET /attendance-sessions
curl -X GET https://preprod-app.signatik.com/api/v1/attendance-sessions \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "data": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "reference": "SESS-2026-0912",
      "status": "…",
      "created_at": "…"
    }
  ],
  "limit": 1,
  "offset": 1
}
Paramètres de requête
limitinteger
offsetinteger | null
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
datarequisobject[]
idrequisuuid
namerequisstring
referencerequisstring | null
statusrequisstring
created_atrequisstring
limitrequisnumber
offsetrequisnumber
get/api/v1/attendance-sessions/{id}

Lire une session (présences en temps réel)

GET /attendance-sessions/{id}
curl -X GET https://preprod-app.signatik.com/api/v1/attendance-sessions/env_8f2c… \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "name": "Contrat de mission n°1234",
  "reference": "SESS-2026-0912",
  "modality": "onsite",
  "location": "Lyon, salle 3",
  "status": "open",
  "trainer": {
    "name": "Contrat de mission n°1234",
    "email": "jean.dupont@exemple.fr",
    "url": "https://votre-app.fr/webhooks/esign"
  },
  "retention_days": 1,
  "created_at": "…",
  "closed_at": "2026-09-02T14:33:07Z",
  "sealed_at": "2026-09-02T14:33:07Z",
  "sheet_sha256": "…",
  "sheet_download_url": "…",
  "evidence_download_url": "…",
  "slots": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "label": "Jour 1 — matin",
      "starts_at": "2026-09-15T09:00:00+02:00",
      "ends_at": "2026-09-15T12:30:00+02:00",
      "module": "…",
      "status": "scheduled",
      "opened_at": "2026-09-02T14:33:07Z",
      "closed_at": "2026-09-02T14:33:07Z",
      "trainer_signed_at": "2026-09-02T14:33:07Z",
      "present": 1,
      "expected": 1,
      "rate": 1
    }
  ],
  "attendees": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "external_ref": "STG-8891",
      "sign_url": "…",
      "marks": [
        {
          "slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
          "status": "…",
          "method": "…",
          "signed_at": "…",
          "out_of_window": true
        }
      ]
    }
  ],
  "marks_count": 1
}
Paramètres de chemin
iduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
namerequisstring
referencerequisstring | null
modalityrequis"onsite" | "remote" | "hybrid"
locationrequisstring | null
statusrequis"open" | "closed" | "sealed"
trainerrequisobject
namerequisstring
emailrequisstring | null
urlrequisstringEspace formateur (ouverture et fermeture des créneaux, QR code)
retention_daysrequisinteger
created_atrequisstring
closed_atrequisdate-time | null
sealed_atrequisdate-time | null
sheet_sha256requisstring | null
sheet_download_urlrequisstring | null
evidence_download_urlrequisstring | null
slotsrequisobject[]
idrequisuuid
labelrequisstring
starts_atrequisstring
ends_atrequisstring
modulerequisstring | null
statusrequis"scheduled" | "open" | "closed"
opened_atrequisdate-time | null
closed_atrequisdate-time | null
trainer_signed_atrequisdate-time | null
presentrequisinteger
expectedrequisinteger
raterequisintegerTaux de présence, en %
attendeesrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring | null
external_refrequisstring | null
sign_urlrequisstringLien personnel d’émargement, valable toute la session
marksrequisobject[]
slot_idrequisuuid
statusrequisstring
methodrequisstring
signed_atrequisstring
out_of_windowrequisboolean
marks_countrequisinteger
post/api/v1/attendance-sessions/{id}/attendees

Ajouter un inscrit en cours de session

POST /attendance-sessions/{id}/attendees
curl -X POST https://preprod-app.signatik.com/api/v1/attendance-sessions/env_8f2c…/attendees \
  -H "Authorization: Bearer sk_test_…" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Contrat de mission n°1234",
  "email": "jean.dupont@exemple.fr",
  "external_ref": "STG-8891"
}'
201 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "name": "Contrat de mission n°1234",
  "reference": "SESS-2026-0912",
  "modality": "onsite",
  "location": "Lyon, salle 3",
  "status": "open",
  "trainer": {
    "name": "Contrat de mission n°1234",
    "email": "jean.dupont@exemple.fr",
    "url": "https://votre-app.fr/webhooks/esign"
  },
  "retention_days": 1,
  "created_at": "…",
  "closed_at": "2026-09-02T14:33:07Z",
  "sealed_at": "2026-09-02T14:33:07Z",
  "sheet_sha256": "…",
  "sheet_download_url": "…",
  "evidence_download_url": "…",
  "slots": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "label": "Jour 1 — matin",
      "starts_at": "2026-09-15T09:00:00+02:00",
      "ends_at": "2026-09-15T12:30:00+02:00",
      "module": "…",
      "status": "scheduled",
      "opened_at": "2026-09-02T14:33:07Z",
      "closed_at": "2026-09-02T14:33:07Z",
      "trainer_signed_at": "2026-09-02T14:33:07Z",
      "present": 1,
      "expected": 1,
      "rate": 1
    }
  ],
  "attendees": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "external_ref": "STG-8891",
      "sign_url": "…",
      "marks": [
        {
          "slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
          "status": "…",
          "method": "…",
          "signed_at": "…",
          "out_of_window": true
        }
      ]
    }
  ],
  "marks_count": 1
}
Paramètres de chemin
iduuid
Corps de la requête
ChampTypeDescription
namerequisstring≤ 200 car.
emailstring
external_refstring≤ 100 car.
Réponses
201OK
400name requis
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
409Session close
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 201
ChampTypeDescription
idrequisuuid
namerequisstring
referencerequisstring | null
modalityrequis"onsite" | "remote" | "hybrid"
locationrequisstring | null
statusrequis"open" | "closed" | "sealed"
trainerrequisobject
namerequisstring
emailrequisstring | null
urlrequisstringEspace formateur (ouverture et fermeture des créneaux, QR code)
retention_daysrequisinteger
created_atrequisstring
closed_atrequisdate-time | null
sealed_atrequisdate-time | null
sheet_sha256requisstring | null
sheet_download_urlrequisstring | null
evidence_download_urlrequisstring | null
slotsrequisobject[]
idrequisuuid
labelrequisstring
starts_atrequisstring
ends_atrequisstring
modulerequisstring | null
statusrequis"scheduled" | "open" | "closed"
opened_atrequisdate-time | null
closed_atrequisdate-time | null
trainer_signed_atrequisdate-time | null
presentrequisinteger
expectedrequisinteger
raterequisintegerTaux de présence, en %
attendeesrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring | null
external_refrequisstring | null
sign_urlrequisstringLien personnel d’émargement, valable toute la session
marksrequisobject[]
slot_idrequisuuid
statusrequisstring
methodrequisstring
signed_atrequisstring
out_of_windowrequisboolean
marks_countrequisinteger
post/api/v1/attendance-sessions/{id}/slots/{slotId}/open

Ouvrir un créneau

Le QR code n’existe qu’entre l’ouverture et la fermeture.

POST /attendance-sessions/{id}/slots/{slotId}/open
curl -X POST https://preprod-app.signatik.com/api/v1/attendance-sessions/env_8f2c…/slots/slt_…/open \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "name": "Contrat de mission n°1234",
  "reference": "SESS-2026-0912",
  "modality": "onsite",
  "location": "Lyon, salle 3",
  "status": "open",
  "trainer": {
    "name": "Contrat de mission n°1234",
    "email": "jean.dupont@exemple.fr",
    "url": "https://votre-app.fr/webhooks/esign"
  },
  "retention_days": 1,
  "created_at": "…",
  "closed_at": "2026-09-02T14:33:07Z",
  "sealed_at": "2026-09-02T14:33:07Z",
  "sheet_sha256": "…",
  "sheet_download_url": "…",
  "evidence_download_url": "…",
  "slots": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "label": "Jour 1 — matin",
      "starts_at": "2026-09-15T09:00:00+02:00",
      "ends_at": "2026-09-15T12:30:00+02:00",
      "module": "…",
      "status": "scheduled",
      "opened_at": "2026-09-02T14:33:07Z",
      "closed_at": "2026-09-02T14:33:07Z",
      "trainer_signed_at": "2026-09-02T14:33:07Z",
      "present": 1,
      "expected": 1,
      "rate": 1
    }
  ],
  "attendees": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "external_ref": "STG-8891",
      "sign_url": "…",
      "marks": [
        {
          "slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
          "status": "…",
          "method": "…",
          "signed_at": "…",
          "out_of_window": true
        }
      ]
    }
  ],
  "marks_count": 1
}
Paramètres de chemin
iduuid
slotIduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
409slot_closed
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
namerequisstring
referencerequisstring | null
modalityrequis"onsite" | "remote" | "hybrid"
locationrequisstring | null
statusrequis"open" | "closed" | "sealed"
trainerrequisobject
namerequisstring
emailrequisstring | null
urlrequisstringEspace formateur (ouverture et fermeture des créneaux, QR code)
retention_daysrequisinteger
created_atrequisstring
closed_atrequisdate-time | null
sealed_atrequisdate-time | null
sheet_sha256requisstring | null
sheet_download_urlrequisstring | null
evidence_download_urlrequisstring | null
slotsrequisobject[]
idrequisuuid
labelrequisstring
starts_atrequisstring
ends_atrequisstring
modulerequisstring | null
statusrequis"scheduled" | "open" | "closed"
opened_atrequisdate-time | null
closed_atrequisdate-time | null
trainer_signed_atrequisdate-time | null
presentrequisinteger
expectedrequisinteger
raterequisintegerTaux de présence, en %
attendeesrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring | null
external_refrequisstring | null
sign_urlrequisstringLien personnel d’émargement, valable toute la session
marksrequisobject[]
slot_idrequisuuid
statusrequisstring
methodrequisstring
signed_atrequisstring
out_of_windowrequisboolean
marks_countrequisinteger
post/api/v1/attendance-sessions/{id}/slots/{slotId}/close

Fermer un créneau

Un créneau clos ne peut plus être rempli, jamais.

POST /attendance-sessions/{id}/slots/{slotId}/close
curl -X POST https://preprod-app.signatik.com/api/v1/attendance-sessions/env_8f2c…/slots/slt_…/close \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "name": "Contrat de mission n°1234",
  "reference": "SESS-2026-0912",
  "modality": "onsite",
  "location": "Lyon, salle 3",
  "status": "open",
  "trainer": {
    "name": "Contrat de mission n°1234",
    "email": "jean.dupont@exemple.fr",
    "url": "https://votre-app.fr/webhooks/esign"
  },
  "retention_days": 1,
  "created_at": "…",
  "closed_at": "2026-09-02T14:33:07Z",
  "sealed_at": "2026-09-02T14:33:07Z",
  "sheet_sha256": "…",
  "sheet_download_url": "…",
  "evidence_download_url": "…",
  "slots": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "label": "Jour 1 — matin",
      "starts_at": "2026-09-15T09:00:00+02:00",
      "ends_at": "2026-09-15T12:30:00+02:00",
      "module": "…",
      "status": "scheduled",
      "opened_at": "2026-09-02T14:33:07Z",
      "closed_at": "2026-09-02T14:33:07Z",
      "trainer_signed_at": "2026-09-02T14:33:07Z",
      "present": 1,
      "expected": 1,
      "rate": 1
    }
  ],
  "attendees": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "external_ref": "STG-8891",
      "sign_url": "…",
      "marks": [
        {
          "slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
          "status": "…",
          "method": "…",
          "signed_at": "…",
          "out_of_window": true
        }
      ]
    }
  ],
  "marks_count": 1
}
Paramètres de chemin
iduuid
slotIduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
409invalid_status
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
namerequisstring
referencerequisstring | null
modalityrequis"onsite" | "remote" | "hybrid"
locationrequisstring | null
statusrequis"open" | "closed" | "sealed"
trainerrequisobject
namerequisstring
emailrequisstring | null
urlrequisstringEspace formateur (ouverture et fermeture des créneaux, QR code)
retention_daysrequisinteger
created_atrequisstring
closed_atrequisdate-time | null
sealed_atrequisdate-time | null
sheet_sha256requisstring | null
sheet_download_urlrequisstring | null
evidence_download_urlrequisstring | null
slotsrequisobject[]
idrequisuuid
labelrequisstring
starts_atrequisstring
ends_atrequisstring
modulerequisstring | null
statusrequis"scheduled" | "open" | "closed"
opened_atrequisdate-time | null
closed_atrequisdate-time | null
trainer_signed_atrequisdate-time | null
presentrequisinteger
expectedrequisinteger
raterequisintegerTaux de présence, en %
attendeesrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring | null
external_refrequisstring | null
sign_urlrequisstringLien personnel d’émargement, valable toute la session
marksrequisobject[]
slot_idrequisuuid
statusrequisstring
methodrequisstring
signed_atrequisstring
out_of_windowrequisboolean
marks_countrequisinteger
post/api/v1/attendance-sessions/{id}/close

Clôturer la session

Feuille générée, un seul scellement, un seul dossier de preuve, webhook attendance.session_closed. Irréversible.

POST /attendance-sessions/{id}/close
curl -X POST https://preprod-app.signatik.com/api/v1/attendance-sessions/env_8f2c…/close \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "name": "Contrat de mission n°1234",
  "reference": "SESS-2026-0912",
  "modality": "onsite",
  "location": "Lyon, salle 3",
  "status": "open",
  "trainer": {
    "name": "Contrat de mission n°1234",
    "email": "jean.dupont@exemple.fr",
    "url": "https://votre-app.fr/webhooks/esign"
  },
  "retention_days": 1,
  "created_at": "…",
  "closed_at": "2026-09-02T14:33:07Z",
  "sealed_at": "2026-09-02T14:33:07Z",
  "sheet_sha256": "…",
  "sheet_download_url": "…",
  "evidence_download_url": "…",
  "slots": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "label": "Jour 1 — matin",
      "starts_at": "2026-09-15T09:00:00+02:00",
      "ends_at": "2026-09-15T12:30:00+02:00",
      "module": "…",
      "status": "scheduled",
      "opened_at": "2026-09-02T14:33:07Z",
      "closed_at": "2026-09-02T14:33:07Z",
      "trainer_signed_at": "2026-09-02T14:33:07Z",
      "present": 1,
      "expected": 1,
      "rate": 1
    }
  ],
  "attendees": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "external_ref": "STG-8891",
      "sign_url": "…",
      "marks": [
        {
          "slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
          "status": "…",
          "method": "…",
          "signed_at": "…",
          "out_of_window": true
        }
      ]
    }
  ],
  "marks_count": 1
}
Paramètres de chemin
iduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
409invalid_status
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
namerequisstring
referencerequisstring | null
modalityrequis"onsite" | "remote" | "hybrid"
locationrequisstring | null
statusrequis"open" | "closed" | "sealed"
trainerrequisobject
namerequisstring
emailrequisstring | null
urlrequisstringEspace formateur (ouverture et fermeture des créneaux, QR code)
retention_daysrequisinteger
created_atrequisstring
closed_atrequisdate-time | null
sealed_atrequisdate-time | null
sheet_sha256requisstring | null
sheet_download_urlrequisstring | null
evidence_download_urlrequisstring | null
slotsrequisobject[]
idrequisuuid
labelrequisstring
starts_atrequisstring
ends_atrequisstring
modulerequisstring | null
statusrequis"scheduled" | "open" | "closed"
opened_atrequisdate-time | null
closed_atrequisdate-time | null
trainer_signed_atrequisdate-time | null
presentrequisinteger
expectedrequisinteger
raterequisintegerTaux de présence, en %
attendeesrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring | null
external_refrequisstring | null
sign_urlrequisstringLien personnel d’émargement, valable toute la session
marksrequisobject[]
slot_idrequisuuid
statusrequisstring
methodrequisstring
signed_atrequisstring
out_of_windowrequisboolean
marks_countrequisinteger
get/api/v1/attendance-sessions/{id}/sheet

Feuille scellée (lien 1 h)

GET /attendance-sessions/{id}/sheet
curl -X GET https://preprod-app.signatik.com/api/v1/attendance-sessions/env_8f2c…/sheet \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "sheet_sha256": "…",
  "sheet_download_url": "…",
  "evidence_download_url": "…"
}
Paramètres de chemin
iduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
409Pas encore scellée
410Feuille purgée (fin de rétention)
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
sheet_sha256requisstring | null
sheet_download_urlrequisstring
evidence_download_urlrequisstring | null
get/api/v1/attendance-sessions/{id}/export

Export CSV pour le contrôle de service fait

GET /attendance-sessions/{id}/export
curl -X GET https://preprod-app.signatik.com/api/v1/attendance-sessions/env_8f2c…/export \
  -H "Authorization: Bearer sk_test_…"
Paramètres de chemin
iduuid
Paramètres de requête
format"csv"
Réponses
200CSV (séparateur ;)
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
429Limitation de débit (rate_limited, en-tête Retry-After)