Skip to main content

Conventions

Dates et heures

Toutes les dates utilisent ISO 8601 en UTC.
TypeFormatExemple
DateYYYY-MM-DD2026-04-18
Date+heureYYYY-MM-DDTHH:mm:ssZ2026-04-18T14:00:00Z
Date+heure msYYYY-MM-DDTHH:mm:ss.SSSZ2026-04-18T14:00:00.123Z
DuréeISO 8601 durationPT30M (30 min), P7D (7 jours)
L’heure locale Cameroun (WAT) est UTC+1. Ne jamais envoyer de date sans suffixe de fuseau.

Devises

CodeNomUsage
XAFFranc CFA BEACPar défaut
EUREuroOffres internationales
USDDollar USRare
Les montants sont toujours en entier dans l’unité principale (pas de centimes). Ex. 500000 = 500 000 XAF.

Téléphones

Format E.164 avec code pays obligatoire.
✅ +237690123456
✅ +33612345678
❌ 690123456
❌ 0690123456

Emails

Validation stricte RFC 5322. Longueur max 254 caractères.

Noms de champs

  • API (JSON) : camelCasefirstName, dateExpiration, niveauExperience
  • SQL (colonnes) : snake_casefirst_name, date_expiration
  • SQL (tables) : snake_case pluriel — candidats, offres_emploi
  • Enums : UPPER_SNAKE_CASECDI, PENDING_APPROVAL, NEW

IDs

  • Type : long (64 bits)
  • Format dans JSON : nombre entier
  • Exposés tels quels (pas d’obfuscation ni de slug)
{ "id": 42, "titre": "..." }

Pagination

Spring Data standard. Voir Pagination.
?page=0&size=20&sort=createdAt,desc
  • page base 0
  • size max 100 (clampé silencieusement)
  • sort accepte plusieurs entrées

Tri

ChampDirection défaut
createdAtdesc
updatedAtdesc
titreasc
nomasc
relevancedesc (recherche plein-texte)

Langues

Les messages d’erreur et enumérations sont renvoyés selon Accept-Language (fr/en). Le français est le défaut.
Accept-Language: fr-FR,fr;q=0.9,en;q=0.8

Encodage

  • Body : UTF-8
  • URL : percent-encoding standard
  • Multipart : boundary généré par le client

Codes pays

ISO 3166-1 alpha-2. Cameroun = CM.

Géolocalisation

Format POINT(lon lat) pour les coordonnées PostGIS (interne). Exposé en API sous forme :
{
  "latitude": 4.0511,
  "longitude": 9.7679
}

Enumérations

Toujours documentées par endpoint. Liste complète : Énumérations.

Nullabilité

Champs absents omis du JSON (pas null). Exception : champs explicitement documentés comme nullable.
{
  "id": 1,
  "titre": "Offre",
  "description": "..."
  // "dateExpiration" omis si non défini
}

Casse des réponses

  • Clés JSON : camelCase strict
  • Valeurs enum : UPPER_SNAKE_CASE
  • Chaînes libres : telles qu’enregistrées

Headers standards

HeaderRôle
Content-Type: application/jsonRequête JSON
Content-Type: multipart/form-dataUpload
Authorization: Bearer <jwt>Auth
Accept-Language: frLangue
X-Request-IDTrace (optionnel, généré si absent)
If-None-Match, ETagCache HTTP (réponses longues)