Développeurs

API — Careers

Référence API — Careers

Careers est un ATS (suivi des candidatures) : offres d'emploi, portail candidat public, pipeline de recrutement.

  • Base URL — prod : https://careers.api.puwapi.com · dev : http://localhost:6500
  • Auth : JWT + gating careers (Business+). Portail candidat = anonyme.

Modèle

  • Job (offre) — statuts draftpublishedpausedclosed.
  • Candidate (candidat)global à la plateforme (e-mail unique global, pas de tenant) : une organisation ne voit un candidat que via une candidature chez elle.
  • Application (candidature) — unique par (job, candidate), 9 étapes (stages), avec journal d'événements.
  • Portal — un portail public par organisation, slug unique global.

Offres

Base : /api/careers/jobs

MéthodeRouteRôle
GET/api/careers/jobsLister
GET/api/careers/jobs/{id}Détail
POST/api/careers/jobsCréer
PATCH/api/careers/jobs/{id}Modifier
DELETE/api/careers/jobs/{id}Supprimer
POST/api/careers/jobs/{id}/publishPublier
POST/api/careers/jobs/{id}/pauseMettre en pause
POST/api/careers/jobs/{id}/closeClôturer

Candidatures

Base : /api/careers/applications

MéthodeRouteRôle
GET/api/careers/applicationsLister
GET/api/careers/applications/{id}Détail
POST/api/careers/applicationsCréer
PATCH/api/careers/applications/{id}/stageChanger d'étape (idempotent)
PATCH/api/careers/applications/{id}Modifier
DELETE/api/careers/applications/{id}Supprimer

Effets de bord d'étape (best-effort, jamais bloquants) :

  • hired → pont vers RH (POST /api/rh/internal/employees) qui provisionne l'employé.
  • rejected → e-mail careers-rejected.
  • Candidature publique reçue → e-mail careers-application-received.

Candidats & portail

MéthodeRoute
GET/api/careers/candidates, /api/careers/candidates/{id}
GET/PUT/api/careers/portal (configuration du portail)

Portail candidat (anonyme, par slug)

Base : /api/careers/public

MéthodeRouteRôle
GET/api/careers/public/{slug}Le portail (marque, présentation)
GET/api/careers/public/{slug}/jobsOffres publiées
GET/api/careers/public/{slug}/jobs/{jobId}Une offre
POST/api/careers/public/{slug}/jobs/{jobId}/applyPostuler

Front public : careers.puwapi.com/{org}/{portail} ({org} = slug d'organisation — voir Environnements, domaines et ports).

Temps réel

Notif Convex /careers/notify : application_received, stage_changed, job_published.

Le Kanban de recrutement n'a pas de position intra-colonne : il trie par date de dernier changement d'étape (limite MVP assumée).

#api #careers