> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wethehivers.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vue d'ensemble

> 172 endpoints groupés par module — index complet de l'API THE HIVE

# API Reference

L'API THE HIVE expose **172 endpoints** regroupés par module métier. Toutes les URLs sont préfixées par `/v1/api`.

## Base URL

| Environnement  | URL                                          |
| -------------- | -------------------------------------------- |
| **Production** | `https://api.wethehivers.com/v1/api`         |
| **Staging**    | `https://staging-api.wethehivers.com/v1/api` |
| **Dev local**  | `http://localhost:3091/v1/api`               |

## Vue macro

```mermaid theme={null}
flowchart TB
    CLI[Client HTTP] --> AUTH[Auth - 13 endpoints]
    CLI --> CAND[Candidats - 34 endpoints]
    CLI --> REC[Recruteurs - 28 endpoints]
    CLI --> OFF[Offres / Candidatures - 27 endpoints]
    CLI --> VIV[Vivier - 11 endpoints]
    CLI --> FILE[Fichiers - 9 endpoints]
    CLI --> PUB[Public / Blog / Entreprises - 6 endpoints]
    CLI --> REF[Référence géo - 11 endpoints]
    CLI --> ADM[Admin - 33 endpoints]
```

## Décomposition par module

### Authentification (13)

Inscription, login, logout, refresh, email validation, reset password — tous publics sauf `logout`.

```mermaid theme={null}
flowchart LR
    REG[register] --> VAL[validate-email]
    VAL --> LOG[login]
    LOG --> REF[refresh-token]
    LOG --> LGO[logout]
    LOG -.oubli.-> FP[forgot-password]
    FP --> RP[reset-password]
```

Voir : [Auth endpoints](/api-reference/auth/login).

***

### Candidats (34)

Profil, CV multiples, photo, compétences, préférences de recherche, favoris, alertes, dashboard.

```mermaid theme={null}
flowchart TB
    CAND[Candidat /me] --> PROF[Profil + mdp]
    CAND --> CV[CVs + visibilité + default]
    CAND --> PHOTO[Photo profil]
    CAND --> SKILL[Compétences]
    CAND --> PREF[Préférences recherche]
    CAND --> FAV[Favoris offres]
    CAND --> ALR[Alertes]
    CAND --> DASH[Dashboard stats]
    CAND --> CERT[Certifications]
    CAND --> SIT[Situation actuelle]
```

Sous-modules :

* **Profil** — 15 endpoints
* **Favoris** — 7 endpoints
* **Alertes** — 8 endpoints
* **Dashboard** — 1 endpoint
* **Auth candidat** — 1 endpoint (register spécifique)
* **Candidatures (vue candidat)** — 2 endpoints

***

### Recruteurs (28)

Profil, entreprise associée, dashboard, offres publiées, candidatures reçues.

```mermaid theme={null}
flowchart TB
    REC[Recruteur /me] --> PROF[Profil + mdp]
    REC --> ENT[Mon entreprise]
    REC --> DASH[Dashboard]
    REC --> OFF[Mes offres]
    REC --> CAN[Candidatures reçues]
    REC --> VIV[Vivier]
```

Sous-modules :

* **Auth recruteur** — 6 endpoints
* **Dashboard** — 1 endpoint
* **Offres (vue recruteur)** — 14 endpoints
* **Candidatures (vue recruteur)** — 7 endpoints

***

### Offres & candidatures (27)

```mermaid theme={null}
stateDiagram-v2
    [*] --> DRAFT
    DRAFT --> PUBLISHED: publish
    PUBLISHED --> CLOSED: close / deadline
    CLOSED --> ARCHIVED: archive (J+30)
    PUBLISHED --> ARCHIVED
    ARCHIVED --> [*]
```

* **Offres** — 14 endpoints (CRUD + search + autocomplete + stats)
* **Candidatures** — 12 endpoints (postuler, suivre, notes, rejet, status change)
* **Entreprises publiques** — 3 endpoints

***

### Vivier (11)

Gestion d'une **base de candidats** par recruteur (inscrits + externes + favoris).

```mermaid theme={null}
flowchart LR
    VIV[Vivier] --> ADD1[+ candidat inscrit]
    VIV --> ADD2[+ candidat externe]
    VIV --> SRCH[Recherche]
    VIV --> INV[Inviter à postuler]
    VIV --> STAT[Change statut pipeline]
    VIV --> FAV[Toggle favori]
```

***

### Fichiers (9)

Upload R2 derrière le backend (scan AV + validation).

```mermaid theme={null}
flowchart LR
    UP[Upload] --> VAL[Validation MIME + taille]
    VAL --> AV[ClamAV]
    AV --> IMG[Traitement image ou PDF]
    IMG --> R2[PUT Cloudflare R2]
```

Types : CV, logo, bannière, photo profil, photo staff, cover article blog, image article générique.

***

### Public (6)

Endpoints **sans authentification** :

* Blog : liste articles, détail par slug, catégories — 3 endpoints
* Entreprises : annuaire public, détail, count offres — 3 endpoints

***

### Données de référence géo (11)

Pays, régions, villes, secteurs, types de contrat, niveaux d'expérience. Cache 24 h recommandé.

Voir : [Données géo](/reference/donnees-geo).

***

### Admin (33)

```mermaid theme={null}
flowchart TB
    ADM[Admin] --> DASH[Dashboard + charts + tops]
    ADM --> CAN[Candidats: liste, suspend, reactivate, delete]
    ADM --> REC[Recruteurs: validate, reject, suspend, reactivate]
    ADM --> ENT[Entreprises: liste, suspend, reactivate]
    ADM --> OFF[Offres: liste, remove]
    ADM --> APP[Candidatures: liste, count, détail]
    ADM --> BLOG[Blog: CRUD + publish/unpublish]
    ADM --> REF[Référence: CRUD pays/villes/régions/secteurs]
    ADM --> ACC[Compte admin: profil + mdp]
```

Sous-modules :

* **Dashboard** — 4 endpoints
* **Compte** — 3 endpoints
* **Candidats** — 7 endpoints
* **Recruteurs** — 10 endpoints
* **Entreprises** — 5 endpoints
* **Offres** — 4 endpoints
* **Candidatures** — 3 endpoints
* **Blog** — 7 endpoints
* **Référence (CRUD)** — 20 endpoints

***

## Index cartographique

| Module                                                                          |       # | Base path                                        | Rôles                |
| ------------------------------------------------------------------------------- | ------: | ------------------------------------------------ | -------------------- |
| [Auth](/api-reference/auth/login)                                               |       7 | `/auth/*`                                        | Public               |
| [Auth candidat](/api-reference/auth-candidat/register-1)                        |       1 | `/auth/candidats/register`                       | Public               |
| [Auth recruteur](/api-reference/auth-recruteur/register)                        |       6 | `/auth/recruiters/*`                             | Public + RECRUTEUR   |
| [Candidats — Profil](/api-reference/candidats-profil/getprofile-1)              |      15 | `/candidats/me/*`                                | CANDIDAT             |
| [Candidats — Dashboard](/api-reference/candidats-dashboard/getdashboardstats-1) |       1 | `/candidats/me/dashboard`                        | CANDIDAT             |
| [Candidats — Alertes](/api-reference/candidats-alertes/getalerts)               |       8 | `/candidats/me/alertes/*`                        | CANDIDAT             |
| [Candidats — Favoris](/api-reference/candidats-favoris/getsavedjobs)            |       7 | `/candidats/me/favoris/*`                        | CANDIDAT             |
| [Offres](/api-reference/offres/getpublishedoffres)                              |      14 | `/offres/*`, `/recruiters/me/offres/*`           | Mixte                |
| [Candidatures](/api-reference/candidatures/createcandidature)                   |      12 | `/candidatures/*`                                | CANDIDAT + RECRUTEUR |
| [Recruteur — Dashboard](/api-reference/recruteur-dashboard/getdashboardstats)   |       1 | `/recruiters/me/dashboard`                       | RECRUTEUR            |
| [Vivier](/api-reference/vivier/getcandidatsvivier)                              |      11 | `/recruiters/me/viviers/*`                       | RECRUTEUR            |
| [Fichiers](/api-reference/fichiers/uploadcv)                                    |       9 | `/files/*`                                       | Selon type           |
| [Référence géo](/api-reference/reference/getallpays)                            |      11 | `/pays`, `/regions`, `/villes`, `/secteurs`, ... | Public               |
| [Blog public](/api-reference/public-blog/getpublishedarticles)                  |       3 | `/blog/*`                                        | Public               |
| [Entreprises publiques](/api-reference/public-entreprises/getentreprises)       |       3 | `/entreprises/*`                                 | Public               |
| [Admin — Dashboard](/api-reference/admin-dashboard/getdashboardstats-2)         |       4 | `/admin/dashboard/*`                             | ADMIN                |
| [Admin — Compte](/api-reference/admin-account/getprofile)                       |       3 | `/admin/me/*`                                    | ADMIN                |
| [Admin — Candidats](/api-reference/admin-candidats/getallcandidates)            |       7 | `/admin/candidats/*`                             | ADMIN                |
| [Admin — Recruteurs](/api-reference/admin-recruteurs/getallrecruiters)          |      10 | `/admin/recruiters/*`                            | ADMIN                |
| [Admin — Entreprises](/api-reference/admin-entreprises/getallcompanies)         |       5 | `/admin/entreprises/*`                           | ADMIN                |
| [Admin — Offres](/api-reference/admin-offres/getalljoboffers)                   |       4 | `/admin/offres/*`                                | ADMIN                |
| [Admin — Candidatures](/api-reference/admin-candidatures/getallcandidatures)    |       3 | `/admin/candidatures/*`                          | ADMIN                |
| [Admin — Blog](/api-reference/admin-blog/getallarticles)                        |       7 | `/admin/blog/*`                                  | ADMIN                |
| [Admin — Référence](/api-reference/admin-reference/getallcountries)             |      20 | `/admin/reference/*`                             | ADMIN                |
| **Total**                                                                       | **172** |                                                  |                      |

## Conventions communes

```mermaid theme={null}
flowchart LR
    REQ[Request] --> H1[Authorization: Bearer ...]
    REQ --> H2[Content-Type: application/json]
    REQ --> H3[Accept-Language: fr-FR]
    REQ --> BODY[Body JSON camelCase]
    API --> RESP[Response camelCase]
    RESP --> T1[200 / 201 / 204 succès]
    RESP --> T2[400/401/403/404/422/429 erreurs]
    RESP --> RID[X-Request-Id pour trace]
```

Voir aussi :

* [Conventions](/conventions)
* [Pagination](/pagination)
* [Rate limiting](/rate-limiting)
* [Rôles & permissions](/roles-permissions)
* [Énumérations](/enumerations)

## Recherche interactive

<CardGroup cols={2}>
  <Card title="Collections Postman/Insomnia/Bruno" icon="box" href="/dx/collections">
    172 requêtes pré-configurées à importer en un clic.
  </Card>

  <Card title="OpenAPI 3.0" icon="code" href="/api-reference/openapi.json">
    Spec complète téléchargeable pour générer clients typés.
  </Card>

  <Card title="Snippets JS / Java / Python" icon="terminal" href="/dx/snippets-js">
    Exemples prêts à copier pour les stacks courantes.
  </Card>

  <Card title="FAQ développeur" icon="circle-question" href="/dx/faq">
    Debug rapide des erreurs fréquentes (401, 403, 429, 422...).
  </Card>
</CardGroup>
