API REST

API REST

Base, token pessoal, limites, erros, links e o formato dos textos.

Para CI, scripts e importação de outras ferramentas. JSON nos dois sentidos.

  • Base: https://tracker.aquarela.app/api/v1
  • Autenticação: token pessoal no cabeçalho Authorization: Bearer <token>. A pessoa cria o token em https://tracker.aquarela.app/account/tokens, escolhe a validade (30, 90, 180, 365 dias) e se ele pode criar issues; o token vale para a organização em que foi criado, aparece uma vez só e pode ser revogado na mesma tela (até 20 ativos por pessoa). Os tokens OAuth do MCP não valem na API.
  • Mesmas regras da interface: o token vê só os projetos da pessoa e cria issues só onde o perfil dela permite. Pessoa desativada ou removida da organização desliga o token na hora.
  • Links: o url de uma issue é o link canônico pelo código, https://tracker.aquarela.app/issues/MOB-0012?org=<slug da empresa>, que se lê, se digita e continua valendo depois de mover a issue de projeto (o código antigo também abre). O prefixo é único só dentro da empresa, então org diz de qual: o app troca para ela quando a pessoa participa. Sem org, /issues/MOB-0012 procura primeiro na empresa selecionada e depois nas outras da pessoa (se o código existir em mais de uma, pergunta em qual abrir); /issues/<id> também funciona, em qualquer empresa da pessoa.
  • Limite: 120 chamadas por minuto por token (429 com Retry-After).
  • Erros: {"error": "<código>", "message": "<texto>"}, com 400 (dados inválidos, e details por campo), 401 (sem token ou token inválido), 403 (perfil ou token sem permissão), 404 (também para projeto na lixeira e as issues dele: excluir e restaurar projeto fica no app, só admin), 409 (já existe), 413, 415, 422 (recusado pelas regras do projeto), 429.
  • GET /version (público, sem token): a versão do tracker no ar, {"version": "0.2.0", "commit": "5f83c7b"} (commit é o deploy, null fora dele). A tag v<version> no GitHub marca cada versão. GET /me e whoami trazem o mesmo em server.

Markdown: todo texto longo é markdown. Na issue, description e os outros textos longos (preconditions, steps_to_reproduce, actual_result, expected_result, impact, suggested_solution, root_cause, fix_notes) e o texto dos comentários; fora dela, as notas da release, a pré-condição, os dados, os passos e o resultado esperado dos casos de teste, o comentário de cada resultado de teste, a descrição e as respostas das ideias, as atualizações de incidente da página de status, o comentário das horas e o da decisão de aprovação. Vale **negrito**, *itálico*, ~~riscado~~, listas com - ou 1. (sublista com dois espaços de recuo), código entre crases (uma para trecho, três para bloco), [link](https://...), > citação e títulos com ##. A API devolve o texto como foi escrito (markdown cru); as telas do tracker (web e app) e os e-mails mostram formatado. HTML não é interpretado.