Skip to content

Pointage du personnel

Cette API permet à un logiciel externe d'envoyer les heures réelles d'arrivée et de départ du personnel dans ABCreche.

Le principe recommandé est le suivant :

  1. Récupérer la liste du personnel via l'endpoint de liste.
  2. Faire la correspondance dans votre système entre votre employé et le couple staff.uuid + creche.uuid retourné par ABCreche.
  3. Lorsqu'une personne pointe son arrivée ou son départ, envoyer start_at et/ou left_at sur la fiche personnel ABCreche correspondante.
  4. Conserver l'attendance.uuid retourné si vous voulez ensuite mettre à jour précisément cette même présence.

Les URIs ci-dessous sont relatives au préfixe API. Si vous appelez directement l'API ABCreche, le chemin complet commence généralement par /api/v1.

Authentification

Toutes les requêtes doivent être envoyées avec un token API fourni par ABCreche.

Headers

HeaderValeur
AuthorizationBearer {token}
Acceptapplication/json
Content-Typeapplication/json

Attention

Le token doit appartenir à un utilisateur lié à l'organisation. Il n'est pas nécessaire que cet utilisateur ait accès aux structures d'accueil une par une.

Liste du personnel

Cet endpoint permet de récupérer les fiches personnel disponibles pour le pointage.

Request

  • HTTP Method: GET
  • Content Type: application/json
  • URI: /organization/{organizationUuid}/staff-time-clock/staff

Parameters

PropertyTypeRequiredDescription
searchStringfalseFiltre par prénom, nom ou email.
activeIntegerfalseRetourne uniquement le personnel dont le contrat n'est pas terminé.
creche_uuids[]Array of UUIDsfalseLimite les résultats à certaines structures de l'organisation.

Exemple

http
GET /organization/5f963d99-0a8f-47e1-a04d-6c0d5b7b7d43/staff-time-clock/staff

Response

json
{
  "data": [
    {
      "uuid": "10971807-b54a-495e-8as3-0e5cc7516f62",
      "first_name": "PRENOM",
      "last_name": "NOM",
      "name": "PRENOM NOM",
      "email": "[email protected]",
      "function": null,
      "status": null,
      "contract_start_at": null,
      "contract_end_at": null,
      "creche": {
        "uuid": "9928c211-abd9-4902-8db3-d3e8d2b89b0a",
        "name": "Creche A"
      }
    },
    {
      "uuid": "10971807-b54b-495e-8as3-0e5cc7516f62",
      "first_name": "PRENOM 2",
      "last_name": "NOM 2",
      "name": "PRENOM 2 NOM 2",
      "email": "[email protected]",
      "function": null,
      "status": null,
      "contract_start_at": null,
      "contract_end_at": null,
      "creche": {
        "uuid": "9928c212-abd9-4902-8db3-d3e8d2b89b0a",
        "name": "Creche B"
      }
    }
  ]
}

Attention

Une même personne peut avoir accès à plusieurs structures d'accueil, vous pouvez donc observer des doublons dans la liste des résultats. C'est normal car les accès aux différents milieux d'accueil sont indépendants et sont listés séparément. Il y a donc une fiche personnel pour chaque accès. Si Madame Y a accès à la Creche A et à la Creche B, il apparaîtra donc deux fois dans la liste. Afin de pointer les heures sur la bonne fiche, il faudra cibler le bon résultat sur base de l'uuid de la structure d'accueil (creche).

Liste des présences d'un membre du personnel

Cet endpoint permet de consulter les présences existantes pour une fiche personnel.

Il est utile si vous voulez :

  • vérifier si une présence existe déjà pour une date ;
  • récupérer l'attendance.uuid avant de faire une mise à jour ;
  • gérer le cas où plusieurs présences existent pour la même date.

Request

  • HTTP Method: GET
  • Content Type: application/json
  • URI: /organization/{organizationUuid}/staff-time-clock/staff/{staffUuid}/attendances

Parameters

PropertyTypeRequiredDescription
fromDate YYYY-MM-DDfalseDate de début de la période.
toDate YYYY-MM-DDfalseDate de fin de la période.

Exemple

http
GET /organization/5f963d99-0a8f-47e1-a04d-6c0d5b7b7d43/staff-time-clock/staff/10971807-b54a-495e-8as3-0e5cc7516f62/attendances?from=2026-05-01&to=2026-05-31

Response

json
{
  "data": [
    {
      "uuid": "7f3d9d87-2ec7-4fc7-b199-8a760da683c0",
      "staff_uuid": "10971807-b54a-495e-8as3-0e5cc7516f62",
      "creche_uuid": "9928c211-abd9-4902-8db3-d3e8d2b89b0a",
      "date": "2026-05-04",
      "start_at": "2026-05-04 08:03:00",
      "left_at": "2026-05-04 17:58:00",
      "should_start_at": "2026-05-04 08:00:00",
      "should_left_at": "2026-05-04 18:00:00",
      "type": 2,
      "type_label": "Journée complète"
    }
  ]
}

Créer ou mettre à jour un pointage par date

Cet endpoint est le plus simple à utiliser pour une intégration de pointage.

Il permet d'envoyer une arrivée, un départ ou les deux pour une date donnée.

  • Si une présence existe déjà pour ce personnel et cette date, elle est mise à jour.
  • Si aucune présence n'existe, une nouvelle présence est créée.
  • Si plusieurs présences existent pour cette date, il faut préciser attendance_uuid.

Request

  • HTTP Method: POST
  • Content Type: application/json
  • URI: /organization/{organizationUuid}/staff-time-clock/staff/{staffUuid}/attendances

Body

PropertyTypeRequiredDescription
dateDate YYYY-MM-DDtrueDate de la présence.
start_atDateTime YYYY-MM-DD HH:MM:SSfalseHeure réelle d'arrivée. Obligatoire si left_at n'est pas envoyé.
left_atDateTime YYYY-MM-DD HH:MM:SSfalseHeure réelle de départ. Obligatoire si start_at n'est pas envoyé.
typeIntegerfalseType de présence. Obligatoire uniquement si une nouvelle présence doit être créée.
attendance_uuidUUIDfalsePrésence exacte à mettre à jour lorsqu'il y a plusieurs présences le même jour.

Types de présence

ValeurDescription
1Demi-journée
2Journée complète
3Demi-journée de congé
4Journée de congé
5Demi-journée d'absence justifiée
6Absence justifiée
7Demi-journée d'absence
8Absence

Recommandation

Dans la plupart des cas, ABCreche aura déjà créé les présences prévues. Vous pouvez donc envoyer uniquement date + start_at et/ou left_at.

Si l'API répond que type est obligatoire, cela signifie qu'aucune présence n'existe pour cette date. Dans ce cas, envoyez le type correspondant à la présence à créer, par exemple 2 pour une journée complète.

Exemple - envoyer une arrivée

http
POST /organization/5f963d99-0a8f-47e1-a04d-6c0d5b7b7d43/staff-time-clock/staff/10971807-b54a-495e-8as3-0e5cc7516f62/attendances
json
{
  "date": "2026-05-04",
  "start_at": "2026-05-04 08:03:00"
}

Exemple - envoyer un départ

json
{
  "date": "2026-05-04",
  "left_at": "2026-05-04 17:58:00"
}

Exemple - créer une présence si elle n'existe pas encore

json
{
  "date": "2026-05-04",
  "type": 2,
  "start_at": "2026-05-04 08:03:00",
  "left_at": "2026-05-04 17:58:00"
}

Response

json
{
  "data": {
    "uuid": "7f3d9d87-2ec7-4fc7-b199-8a760da683c0",
    "staff_uuid": "10971807-b54a-495e-8as3-0e5cc7516f62",
    "creche_uuid": "9928c211-abd9-4902-8db3-d3e8d2b89b0a",
    "date": "2026-05-04",
    "start_at": "2026-05-04 08:03:00",
    "left_at": "2026-05-04 17:58:00",
    "should_start_at": "2026-05-04 08:00:00",
    "should_left_at": "2026-05-04 18:00:00",
    "type": 2,
    "type_label": "Journée complète"
  }
}

Mettre à jour une présence précise

Cet endpoint permet de mettre à jour une présence lorsque vous connaissez déjà son attendance.uuid.

Il est recommandé après avoir récupéré les présences via l'endpoint de liste ou après avoir conservé l'uuid retourné par une création/mise à jour précédente.

Request

  • HTTP Method: PATCH
  • Content Type: application/json
  • URI: /organization/{organizationUuid}/staff-time-clock/staff/{staffUuid}/attendances/{attendanceUuid}

Body

PropertyTypeRequiredDescription
start_atDateTime YYYY-MM-DD HH:MM:SSfalseHeure réelle d'arrivée. Obligatoire si left_at n'est pas envoyé.
left_atDateTime YYYY-MM-DD HH:MM:SSfalseHeure réelle de départ. Obligatoire si start_at n'est pas envoyé.

Exemple

http
PATCH /organization/5f963d99-0a8f-47e1-a04d-6c0d5b7b7d43/staff-time-clock/staff/10971807-b54a-495e-8as3-0e5cc7516f62/attendances/7f3d9d87-2ec7-4fc7-b199-8a760da683c0
json
{
  "left_at": "2026-05-04 17:58:00"
}

Règles importantes

Format des dates

Les dates et heures doivent être envoyées au format :

txt
YYYY-MM-DD HH:MM:SS

Exemple :

txt
2026-05-04 08:03:00

N'envoyez pas de format ISO avec timezone comme 2026-05-04T08:03:00Z.

Ordre arrivée / départ

Si start_at et left_at sont connus, left_at doit être supérieur ou égal à start_at.

Données modifiables

Cette API modifie uniquement :

  • start_at
  • left_at

Elle ne permet pas de modifier les horaires prévus, les informations administratives du personnel, les données enfants, les données parents ou les accès aux structures.

Gestion des erreurs

CodeSignificationAction recommandée
401Token absent ou invalide.Vérifier le header Authorization.
403L'utilisateur n'a pas accès à cette organisation.Vérifier que le token est lié à l'organisation.
404Personnel ou présence introuvable pour cette organisation.Vérifier les UUIDs utilisés.
422Données invalides.Corriger le payload selon les erreurs retournées.

Erreur fréquente : plusieurs présences le même jour

Si plusieurs présences existent pour un même membre du personnel et une même date, l'API ne peut pas choisir automatiquement laquelle mettre à jour.

Dans ce cas :

  1. Appelez l'endpoint de liste des présences pour la date concernée.
  2. Choisissez la bonne présence.
  3. Renvoyez le pointage avec attendance_uuid ou utilisez l'endpoint PATCH.

Exemple de réponse :

json
{
  "message": "The given data was invalid.",
  "errors": {
    "attendance_uuid": [
      "Plusieurs présences existent pour cette date. Précisez attendance_uuid."
    ]
  }
}

Implémentation recommandée côté logiciel de pointage

Synchronisation initiale

Au démarrage de l'intégration, appelez :

http
GET /organization/{organizationUuid}/staff-time-clock/staff?active=1

Enregistrez dans votre système :

  • l'identifiant interne de votre employé ;
  • le staff.uuid ABCreche ;
  • le creche.uuid ABCreche ;
  • éventuellement le nom de la crèche pour aider l'utilisateur à choisir la bonne fiche.

Envoi d'une arrivée

Lorsqu'un employé pointe son arrivée :

json
{
  "date": "2026-05-04",
  "start_at": "2026-05-04 08:03:00"
}

Envoi d'un départ

Lorsqu'un employé pointe son départ :

json
{
  "date": "2026-05-04",
  "left_at": "2026-05-04 17:58:00"
}

Stratégie de retry

Si une requête échoue temporairement, vous pouvez la réessayer plus tard avec les mêmes données.

Pour éviter les ambiguïtés, conservez l'attendance.uuid retourné par ABCreche dès que possible et utilisez ensuite l'endpoint PATCH pour les mises à jour précises.