Okouro doc

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

ActionRôle
Demander ses propres congésTout utilisateur relié à un profil de consultant
Demander pour le compte de quelqu’unAdministrateur
Approuver ou rejeterAdministrateur (ou le responsable d’équipe du consultant)
AnnulerLe 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

ActionMéthodeCheminSuccès
ListerGET/time-off200
ObtenirGET/time-off/{id}200
CréerPOST/time-off201
ApprouverPOST/time-off/{id}/approve200
RejeterPOST/time-off/{id}/reject200
AnnulerPOST/time-off/{id}/cancel200