View Categories

Mise à jour des heures d’un relevé d’heures PATCH /api/v1/timesheets/{id}

Attention Cette opération n’est accessible que côté EU.

Cette opération permet de répondre à 3 scénarios différents :

  1. génération automatique d’un relevé “à saisir” (à partir de son pointage type théorique sur la semaine)
  2. saisie des créneaux horaires d’un relevé
    1. avec modification du pointage type associé à certaines journées

Pour utiliser cette opération, il est nécessaire de récupérer l’UUID du relevé à mettre à jour via l’opération GET timesheets.

Paramètres :

  • id (identifiant du relevé d’heures)

Payload par scénario :

Scénario 1 : génération automatique d’un relevé “à saisir”

Ce scénario permet d’enregistrer un relevé sans le saisir : à partir du pointage type théorique associé au relevé, ses heures et ses rubriques générées automatiquement.

ChampTypeObligatoireDescriptionNotes
autogenerateForPeriodsarrayListe des périodes à générer automatiquement pour le relevéExemple : [“2025-08”,”2025-07”]

Scénario 2 : saisie des créneaux horaires d’un relevé

Chaque créneau horaire travaillé présente un timeslot. Il peut ainsi exister plusieurs timeslots pour un jour donné, dans la limite d’un par couple analytique/sous-analytique par jour.

Pour modifier un timeslot existant, on renseignera dans la payload l’id du timeslot à modifier. Pour en un créer un nouveau, l’id ne doit pas être renseigné.

A la modification, les informations suivantes peuvent être modifiées :

  • analyticId
  • subAnalyticId
  • absenceTypeId
  • arrivalHour
  • hours
  • departureHour
ChampTypeObligatoireDescriptionNotes
timeslots[]arrayCréneaux horairesPlusieurs créneaux possibles par jour, dans la limite d’un seul créneau par analytique par jour
└ idstringIdentifiant créneauUUIDA renseigner pour modifier un timeslot existant.
Vide pour créer un nouveau timeslot.
└ missionIdstringIdentifiant missionIdentifiant numérique
Valeur non modifiable
└ daystringJour concernéFormat ISO 8601 (AAAA-MM-JJ)
Valeur non modifiable
└ analyticIdstringIdentifiant analytiqueID numérique
Si couple introuvable : analytique/sous-analytique de la mission
└ subAnalyticIdstringIdentifiant sous-analytique
└ absenceTypeIdstringIdentifiant type d’absence1┃2┃3┃...(présent, non travaillé, absence non justifiée, etc. selon paramétrage)
Déduit si champ vide : 1 si hours > 02 si hours = 0
└ arrivalHourstringHeure d’arrivéeFormat ISO 8601 HH:MM
└ hoursnumberHeures travailléesQuantité d’heures
Exemple : 7.33
Obligatoire si departureHour non renseigné
└ departureHourstringHeure de départFormat ISO 8601 HH:MM
Ignoré si hours renseigné

Scénario 2.a : saisie des créneaux horaires d’un relevé avec modification du pointage type associé à certaines journées

Ce scénario est utilisé comme le scénario 2, mais on ajoute la possibilité de modifier le pointage type (clockingTemplate) sur des jours donnés.

NB : pour que la modification de pointage type soit effective pour un day et un missionId donné, au moins un timeslot pour ce day et ce missionId doit être renseigné.

ChampTypeObligatoireDescriptionNotes
timeslots[]arrayCréneaux horairesCf scénario 2 pour les champs à renseigner
days[]arrayJournées du relevé 
└ daystringJour concerné par la modificationFormat ISO 8601 (AAAA-MM-JJ)
└ missionIdstringIdentifiant missionIdentifiant numérique
└ clockingTemplateIdstringIdentifiant pointage type à associer à la journéeID numérique

Exemple :

curl -X PATCH "https://api.dev.peopulse.com/api/v1/timesheets/f0bdf1ab-fc22-4e73-a7ff-49a3be9728ba" \
-H 'accept: application/json'\
-H 'authorization: Bearer XXX'\
-H 'content-type: application/json' \
-d '{"timeslots":[{"id":"60521d44-3faf-4b92-b47e-3d5903778b29","day":"2025-08-18","hours":8,"arrivalHour":"09:00"},{"id":"719cedee-5104-4724-b912-e901f8eb8215","day":"2025-08-19","hours":8.5,"arrivalHour":"09:00","analyticId":"2","subAnalyticId":"5"},{"id":"6a347482-1359-4796-a305-9531135d23e6","day":"2025-08-20","hours":0,"arrivalHour":"09:00","analyticId":"2","subAnalyticId":"5","absenceTypeId":"3"},{"day":"2025-08-21","hours":6,"arrivalHour":"05:00","analyticId":"2","subAnalyticId":"","missionId":"5857","absenceTypeId":"1","period":"2025-08"},{"day":"2025-08-22","hours":6,"arrivalHour":"05:00","analyticId":"2","subAnalyticId":"","missionId":"5857","absenceTypeId":"1","period":"2025-08"},{"day":"2025-08-23","hours":0,"arrivalHour":"09:00","analyticId":"2","subAnalyticId":"","missionId":"5857","absenceTypeId":"2","period":"2025-08"},{"day":"2025-08-24","hours":0,"arrivalHour":"09:00","analyticId":"2","subAnalyticId":"","missionId":"5857","absenceTypeId":"2","period":"2025-08"}], "days":[{"clockingTemplateId":"1","day":"2025-08-21","missionId":"5857"},{"clockingTemplateId":"1","day":"2025-08-22","missionId":"5857"}]}'
{
"timeslots": [
{
"id": "60521d44-3faf-4b92-b47e-3d5903778b29",
"day": "2025-08-18",
"hours": 8,
"arrivalHour": "09:00"
},
{
"id": "719cedee-5104-4724-b912-e901f8eb8215",
"day": "2025-08-19",
"hours": 8.5,
"arrivalHour": "09:00",
"analyticId": "2",
"subAnalyticId": "5",
},
{
"id": "6a347482-1359-4796-a305-9531135d23e6",
"day": "2025-08-20",
"hours": 0,
"arrivalHour": "09:00",
"analyticId": "2",
"subAnalyticId": "5",
"absenceTypeId": "3"
},
{
"day": "2025-08-21",
"hours": 6,
"arrivalHour": "05:00",
"analyticId": "2",
"subAnalyticId": "",
"missionId": "5857",
"absenceTypeId": "1",
"period": "2025-08"
},
{
"day": "2025-08-22",
"hours": 6,
"arrivalHour": "05:00",
"analyticId": "2",
"subAnalyticId": "",
"missionId": "5857",
"absenceTypeId": "1",
"period": "2025-08"
},
{
"day": "2025-08-23",
"hours": 0,
"arrivalHour": "09:00",
"analyticId": "2",
"subAnalyticId": "",
"missionId": "5857",
"absenceTypeId": "2",
"period": "2025-08"
},
{
"day": "2025-08-24",
"hours": 0,
"arrivalHour": "09:00",
"analyticId": "2",
"subAnalyticId": "",
"missionId": "5857",
"absenceTypeId": "2",
"period": "2025-08"
}
],
"days": [
{
"clockingTemplateId": "1",
"day": "2025-08-21",
"missionId": "5857"
},
{
"clockingTemplateId": "1",
"day": "2025-08-22",
"missionId": "5857"
}
]
}

Champs de la réponse :

Cf réponse du GET timesheets/{id} (réponse identique).