Cette opération n’est accessible que côté EU.
Cette opération permet de répondre à 3 scénarios différents :
- génération automatique d’un relevé “à saisir” (à partir de son pointage type théorique sur la semaine)
- saisie des créneaux horaires d’un relevé
- 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.
| Champ | Type | Obligatoire | Description | Notes |
|---|---|---|---|---|
| autogenerateForPeriods | array | ✅ | Liste 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
| Champ | Type | Obligatoire | Description | Notes |
|---|---|---|---|---|
| timeslots[] | array | ✅ | Créneaux horaires | Plusieurs créneaux possibles par jour, dans la limite d’un seul créneau par analytique par jour |
| └ id | string | ❌ | Identifiant créneau | UUIDA renseigner pour modifier un timeslot existant. Vide pour créer un nouveau timeslot. |
| └ missionId | string | ✅ | Identifiant mission | Identifiant numérique Valeur non modifiable |
| └ day | string | ✅ | Jour concerné | Format ISO 8601 (AAAA-MM-JJ) Valeur non modifiable |
| └ analyticId | string | ❌ | Identifiant analytique | ID numérique Si couple introuvable : analytique/sous-analytique de la mission |
| └ subAnalyticId | string | ❌ | Identifiant sous-analytique | |
| └ absenceTypeId | string | ❌ | Identifiant type d’absence | 1┃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 |
| └ arrivalHour | string | ✅ | Heure d’arrivée | Format ISO 8601 HH:MM |
| └ hours | number | ❌ | Heures travaillées | Quantité d’heures Exemple : 7.33 Obligatoire si departureHour non renseigné |
| └ departureHour | string | ❌ | Heure de départ | Format 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é.
| Champ | Type | Obligatoire | Description | Notes |
|---|---|---|---|---|
| timeslots[] | array | ✅ | Créneaux horaires | Cf scénario 2 pour les champs à renseigner |
| days[] | array | ✅ | Journées du relevé | |
| └ day | string | ✅ | Jour concerné par la modification | Format ISO 8601 (AAAA-MM-JJ) |
| └ missionId | string | ✅ | Identifiant mission | Identifiant numérique |
| └ clockingTemplateId | string | ✅ | Identifiant pointage type à associer à la journée | ID 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).