Ir al contenido

Convenciones y errores

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.

  • 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

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.

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.

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.