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
draft→published⇄paused→closed. - 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éthode | Route | Rôle |
|---|---|---|
| GET | /api/careers/jobs | Lister |
| GET | /api/careers/jobs/{id} | Détail |
| POST | /api/careers/jobs | Créer |
| PATCH | /api/careers/jobs/{id} | Modifier |
| DELETE | /api/careers/jobs/{id} | Supprimer |
| POST | /api/careers/jobs/{id}/publish | Publier |
| POST | /api/careers/jobs/{id}/pause | Mettre en pause |
| POST | /api/careers/jobs/{id}/close | Clôturer |
Candidatures¶
Base : /api/careers/applications
| Méthode | Route | Rôle |
|---|---|---|
| GET | /api/careers/applications | Lister |
| GET | /api/careers/applications/{id} | Détail |
| POST | /api/careers/applications | Créer |
| PATCH | /api/careers/applications/{id}/stage | Changer 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-mailcareers-rejected.- Candidature publique reçue → e-mail
careers-application-received.
Candidats & portail¶
| Méthode | Route |
|---|---|
| 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éthode | Route | Rôle |
|---|---|---|
| GET | /api/careers/public/{slug} | Le portail (marque, présentation) |
| GET | /api/careers/public/{slug}/jobs | Offres publiées |
| GET | /api/careers/public/{slug}/jobs/{jobId} | Une offre |
| POST | /api/careers/public/{slug}/jobs/{jobId}/apply | Postuler |
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).