API REST
API REST
Base, token personal, límites, errores, enlaces y el formato de los textos.
Para CI, scripts e importación desde otras herramientas. JSON en los dos sentidos.
- Base: https://tracker.aquarela.app/api/v1
- Autenticación: token personal en el encabezado
Authorization: Bearer <token>. La persona crea el token en https://tracker.aquarela.app/account/tokens, elige la validez (30, 90, 180, 365 días) y si puede crear issues; el token vale para la organización en la que se creó, aparece una sola vez y se puede revocar en la misma pantalla (hasta 20 activos por persona). Los tokens OAuth del MCP no valen en la API. - Las mismas reglas de la interfaz: el token ve solo los proyectos de la persona y crea issues solo donde su perfil lo permite. Una persona desactivada o quitada de la organización apaga el token al instante.
- Enlaces: el
urlde una issue es el enlace canónico por el código,https://tracker.aquarela.app/issues/MOB-0012?org=<slug de la empresa>, que se lee, se escribe y sigue valiendo después de mover la issue de proyecto (el código anterior también la abre). El prefijo es único solo dentro de la empresa, así queorgdice de cuál: la app cambia a ella cuando la persona participa. Sinorg,/issues/MOB-0012busca primero en la empresa seleccionada y después en las demás de la persona (si el código existe en más de una, pregunta en cuál abrir);/issues/<id>también funciona, en cualquier empresa de la persona. - Límite: 120 llamadas por minuto por token (429 con Retry-After).
- Errores:
{"error": "<código>", "message": "<texto>"}, con 400 (datos inválidos, ydetailspor campo), 401 (sin token o token inválido), 403 (perfil o token sin permiso), 404 (también para un proyecto en la papelera y sus issues: eliminar y restaurar proyectos queda en la app, solo admin), 409 (ya existe), 413, 415, 422 (rechazado por las reglas del proyecto), 429. Elmessageviene en el idioma de la persona del token (ellocaledeGET /me; en Automático, elAccept-Languagedel pedido); elerrorno cambia. GET /version(público, sin token): la versión de tracker en producción,{"version": "0.2.0", "commit": "5f83c7b"}(commites el deploy,nullfuera de él). La tagv<version>en GitHub marca cada versión.GET /mey whoami traen lo mismo enserver.
Markdown: todo texto largo es markdown. En la issue, description y los demás textos largos (preconditions, steps_to_reproduce, actual_result, expected_result, impact, suggested_solution, root_cause, fix_notes) y el texto de los comentarios; fuera de ella, las notas de la release, la precondición, los datos, los pasos y el resultado esperado de los casos de prueba, el comentario de cada resultado de prueba, la descripción y las respuestas de las ideas, las actualizaciones de incidente de la página de estado, el comentario de las horas y el de la decisión de aprobación. Vale **negrita**, *cursiva*, ~~tachado~~, listas con - o 1. (sublista con dos espacios de sangría), código entre comillas invertidas (una para un fragmento, tres para un bloque), [link](https://...), > cita y títulos con ##. La API devuelve el texto como se escribió (markdown crudo); las pantallas de tracker (web y app) y los correos lo muestran con formato. El HTML no se interpreta.