Diamond Careers
API

Codes d'erreur et structure des réponses d'erreur

Comprendre les erreurs de l'API Diamond Careers, leur format et les actions à prendre.

L'API retourne des erreurs HTTP standard accompagnées d'un corps JSON structuré.

Format standard

{
  "code": "rest_invalid_param",
  "message": "Le champ 'email' est invalide.",
  "data": {
    "status": 400,
    "params": {
      "email": "L'adresse email fournie n'est pas au bon format."
    }
  }
}
  • code — identifiant court et stable de l'erreur. C'est ce sur quoi vous devez piloter votre logique.
  • message — texte en français destiné à l'affichage. Peut être reformulé entre versions.
  • data — objet complémentaire. data.status reflète le code HTTP. Selon le cas, d'autres champs (params, existing_application_id, etc.) précisent l'erreur.

Codes HTTP

2xx — Succès

CodeSens
200 OKRequête réussie, corps avec la réponse
201 CreatedRessource créée
204 No ContentSuccès sans corps (souvent après DELETE)

4xx — Erreurs client

CodeSensAction recommandée
400 Bad RequestRequête mal formée (JSON invalide, paramètre manquant)Vérifiez la structure
401 UnauthorizedAuthentification absente ou invalideVérifiez votre jeton, régénérez-le
403 ForbiddenAuthentifié mais hors de votre périmètre ou rôle insuffisantVérifiez la maison ciblée et votre rôle
404 Not FoundRessource introuvableVérifiez l'identifiant
409 ConflictConflit métier (ex. doublon)Vérifiez l'état actuel avant de réessayer
422 Unprocessable EntityDonnées valides syntaxiquement mais invalides métierLisez data pour le détail
429 Too Many RequestsLimite de débit dépasséeVoir Rate limits

5xx — Erreurs serveur

CodeSensAction recommandée
500 Internal Server ErrorErreur inattendueRéessayez une fois ; si persistant, support
502 Bad GatewayPasserelle injoignableBackoff exponentiel
503 Service UnavailableMaintenancePatientez, vérifiez status.diamondcareers.fr
504 Gateway TimeoutDélai de réponse dépasséBackoff exponentiel

Codes d'erreur métier fréquents

Authentification

CodeSens
invalid_credentialsIdentifiants incorrects au login
jwt_invalid_tokenJeton invalide ou mal formé
jwt_expired_tokenJeton expiré
jwt_no_auth_headerEn-tête Authorization absent
forbiddenAuthentifié mais sans permission sur cette ressource

Validation des paramètres

CodeSens
invalid_paramUn ou plusieurs paramètres ne respectent pas le format. data.params détaille
missing_paramParamètre obligatoire absent
invalid_fieldChamp envoyé non reconnu pour cette ressource

Ressources et conflits

CodeSens
not_foundIdentifiant invalide ou hors de votre périmètre
already_appliedUne candidature existe déjà pour cette offre et ce candidat
invalid_status_transitionTransition de statut non autorisée (ex. repasser une candidature acceptée à pending)
last_ownerAction bloquée car vous êtes le dernier owner de l'établissement

Limites et abus

CodeSens
too_many_requestsLimite de débit dépassée
upload_too_largeFichier au-delà de la taille maximale
upload_unknown_errorErreur inattendue lors du téléversement

Exemples

Validation de paramètre

{
  "code": "invalid_param",
  "message": "Le champ 'maison_id' est requis.",
  "data": {
    "status": 400,
    "params": {
      "maison_id": "Champ obligatoire manquant."
    }
  }
}

Candidature en doublon

{
  "code": "already_applied",
  "message": "Une candidature existe déjà pour cette offre.",
  "data": {
    "status": 409,
    "existing_application_id": 18472
  }
}

Jeton expiré

{
  "code": "jwt_expired_token",
  "message": "Le jeton est expiré. Régénérez-en un nouveau.",
  "data": {
    "status": 401
  }
}

Bonnes pratiques côté intégration

Pilotez votre logique sur code, pas sur message. Les codes sont stables, les messages peuvent évoluer.

Backoff exponentiel sur 5xx. 1 s, puis 2, 4, 8… plafonné à 30 secondes.

Distinguez récupérable et définitif. 4xx (sauf 429) : généralement définitif. 5xx : presque toujours récupérable. 429 : respectez Retry-After.

Loguez avec contexte. En cas de souci, notre support a besoin du code, du message, du timestamp UTC, du chemin appelé et du payload envoyé. Conservez ces traces quelques jours.

Affichez les messages aux utilisateurs avec discernement. Le champ message est rédigé pour l'affichage ; vous pouvez le passer tel quel à un utilisateur final, ou le traduire dans votre propre formulation.

On this page