Aller au contenu

Conventions et erreurs

Tous les endpoints se trouvent sous https://app.todomino.eu/api. Les requêtes et les réponses sont au format JSON (Content-Type: application/json), sauf mention contraire. Authentifie-toi avec un jeton d’accès personnel.

  • Les IDs sont des UUID, générés par le serveur.
  • Les horodatages sont des instants ISO-8601 en UTC, p. ex. 2026-07-18T09:30:00Z.
  • Les dates d’échéance sont aussi des instants ; le client web les enregistre comme minuit UTC du jour choisi (2026-08-01T00:00:00Z).
Champ Valeurs
status d’une tâche/sous-tâche PENDING, DONE
priority d’une tâche LOW, NORMAL, HIGH, CRITICAL, ou null
role d’un membre OWNER, ADMIN, MEMBER

Les tâches portent un numéro de version. Les mises à jour complètes (PUT) doivent renvoyer la version que tu as lue en dernier ; si quelqu’un d’autre a modifié la tâche entre-temps, l’API répond 409 Conflict — relis la tâche et réapplique ta modification.

Les endpoints de mutation des tâches, sous-tâches et listes acceptent un en-tête optionnel X-Op-Id portant un UUID généré côté client. Un même op id est exécuté exactement une fois : les rejeux (p. ex. une nouvelle tentative après une réponse perdue) sont acquittés avec le même statut sans être réexécutés, si bien que les clients hors ligne peuvent pousser leurs opérations en file d’attente en toute sécurité. Les créations envoyées avec un op id doivent aussi porter un id généré côté client dans le corps — le client connaît ainsi déjà chaque id dont un rejeu aurait besoin. Les suppressions sont idempotentes par nature et n’ont pas besoin d’op id.

Statut Signification
400 Requête mal formée (champ manquant, valeur invalide)
401 Jeton manquant ou invalide / non connecté
403 Authentifié, mais ton rôle ne permet pas cette action
404 Introuvable — renvoyé aussi pour les espaces de travail dont tu n’es pas membre
409 Conflit : nom en double, version obsolète ou pièce jointe en double
413 Limite de stockage de l’espace de travail atteinte

Les réponses d’erreur sont des « problem details » Spring ; le statut HTTP constitue le contrat, le texte du corps est informatif et peut changer.