Convenciones y errores
URL base y formato
Sección titulada «URL base y formato»Todos los endpoints viven bajo https://app.todomino.eu/api. Las peticiones y
respuestas son JSON (Content-Type: application/json) salvo que se indique
lo contrario. Autentícate con un token de acceso personal.
Identificadores y marcas de tiempo
Sección titulada «Identificadores y marcas de tiempo»- Los IDs son UUIDs, generados por el servidor.
- Las marcas de tiempo son instantes ISO-8601 en UTC, p. ej.
2026-07-18T09:30:00Z. - Las fechas límite también son instantes; el cliente web las guarda como
la medianoche UTC del día elegido (
2026-08-01T00:00:00Z).
| Campo | Valores |
|---|---|
status de tarea/subtarea |
PENDING, DONE |
priority de tarea |
LOW, NORMAL, HIGH, CRITICAL, o null |
role de miembro |
OWNER, ADMIN, MEMBER |
Bloqueo optimista
Sección titulada «Bloqueo optimista»Las tareas llevan un número de version. Las actualizaciones completas (PUT)
deben devolver la versión que leíste por última vez; si alguien más cambió la
tarea entre tanto, la API responde 409 Conflict — vuelve a leer la tarea y
reaplica tu cambio.
Operaciones sin conexión
Sección titulada «Operaciones sin conexión»Los endpoints de mutación de tareas, subtareas y listas aceptan una
cabecera opcional X-Op-Id con un UUID generado por el cliente. El mismo
op id se ejecuta exactamente una vez: las repeticiones (p. ej. un reintento
tras una respuesta perdida) se confirman con el mismo código de estado sin
volver a ejecutarse, de modo que los clientes sin conexión pueden enviar
sus operaciones en cola con seguridad. Las creaciones enviadas con un op id
deben llevar además un id generado por el cliente en el cuerpo — así el
cliente ya conoce cada id que una repetición necesitaría. Las eliminaciones
son idempotentes por naturaleza y no necesitan op id.
Errores
Sección titulada «Errores»| Código | Significado |
|---|---|
400 |
Petición mal formada (campo ausente, valor no válido) |
401 |
Token ausente o no válido / sesión no iniciada |
403 |
Autenticado, pero tu rol no permite esta acción |
404 |
No encontrado — también se devuelve para espacios de trabajo de los que no eres miembro |
409 |
Conflicto: nombre duplicado, versión desactualizada o archivo adjunto duplicado |
413 |
Límite de almacenamiento del espacio de trabajo alcanzado |
Las respuestas de error son problem details de Spring; el código HTTP es el contrato, el texto del cuerpo es informativo y puede cambiar.
