Les consultants demandent des congés ; un responsable les approuve ou les rejette. Une demande couvre une plage de dates, appartient à un type (congés payés, arrêt maladie, etc., définis dans les paramètres du compte), et passe par pending, approved, rejected ou cancelled.
Qui fait quoi
| Action | Rôle |
|---|---|
| Demander ses propres congés | Tout utilisateur relié à un profil de consultant |
| Demander pour le compte de quelqu’un | Administrateur |
| Approuver ou rejeter | Administrateur (ou le responsable d’équipe du consultant) |
| Annuler | Le demandeur ou un administrateur |
1. Créer une demande
Un consultant fait une demande pour lui-même ; un administrateur transmet consultant_id pour demander pour quelqu’un d’autre.
POST /time-off HTTP/1.1
Authorization: Bearer <access_token>
Content-Type: application/json
{
"kind": "paid_leave",
"start_date": "2026-02-16",
"end_date": "2026-02-20",
"reason": "Family trip"
}
Renvoie 201 Created avec une TimeOffResponse :
{
"id": "0190a1c2-...",
"account_id": "0190a1c2-...",
"consultant_id": "0190a1c2-...",
"consultant_full_name": "Ada Lovelace",
"requested_by": "0190a1c2-...",
"kind": "paid_leave",
"start_date": "2026-02-16",
"end_date": "2026-02-20",
"half": null,
"reason": "Family trip",
"day_count": "5",
"status": "pending",
"decided_at": null,
"decided_by": null,
"rejection_reason": null,
"created_at": "2026-01-20T10:00:00Z"
}
Le kind doit être l’une des clés configurées pour le compte. Le day_count est calculé à partir de la plage.
Demi-journées
Lorsque start_date est égal à end_date, vous pouvez ne demander qu’une partie de la journée en définissant half sur first (matin) ou second (après-midi). Omettez half pour une journée complète. half n’est valide que pour une demande d’une seule journée.
{ "kind": "paid_leave", "start_date": "2026-02-16", "end_date": "2026-02-16", "half": "first" }
2. Approuver ou rejeter
POST /time-off/{id}/approve HTTP/1.1
Authorization: Bearer <access_token>
POST /time-off/{id}/reject HTTP/1.1
Authorization: Bearer <access_token>
Content-Type: application/json
{ "reason": "Clashes with the release week" }
Les deux renvoient 200 OK. Approuver définit status sur approved et enregistre qui a décidé et quand. Rejeter définit rejected et conserve le motif.
3. Annuler
Le demandeur (ou un administrateur) peut retirer une demande qui n’a pas encore été traitée :
POST /time-off/{id}/cancel HTTP/1.1
Authorization: Bearer <access_token>
Renvoie 200 OK avec status valant désormais cancelled.
Lire les demandes
GET /time-off les liste (paginé), et GET /time-off/{id} en renvoie une. Le filtrage et le scope se comportent comme ailleurs (voir Conventions).
Points d’entrée en un coup d’œil
| Action | Méthode | Chemin | Succès |
|---|---|---|---|
| Lister | GET | /time-off | 200 |
| Obtenir | GET | /time-off/{id} | 200 |
| Créer | POST | /time-off | 201 |
| Approuver | POST | /time-off/{id}/approve | 200 |
| Rejeter | POST | /time-off/{id}/reject | 200 |
| Annuler | POST | /time-off/{id}/cancel | 200 |