API REST

Quadros de ideias

Os quadros onde os clientes votam, e as ideias deles.

  • GET /ideas/boards (tracker:read, admin ou dono da empresa): quadros de ideias, onde os clientes votam no que querem ver. Cada um com url (o endereço público, que o cliente abre sem conta), published, ideas e pending_suggestions (sugestões de clientes esperando a equipe).
  • GET /ideas/boards/{id} (tracker:read), POST /ideas/boards e PATCH/DELETE /ideas/boards/{id} (tracker:write): {"title": "Ideias para o app", "intro": "...", "projects": ["MOB"], "published": true, "access": "link|restricted", "allow_list": ["@cliente.com.br", "[email protected]"], "allow_suggestions": true}. No PATCH, só o que vier muda; projects e allow_list trocam a lista toda. link: qualquer um com o link vê, e votar pede o e-mail confirmado por código; restricted: só quem confirmar um e-mail da lista vê as ideias. O GET traz ideas (publicadas, mais votadas primeiro, com status que o cliente vê, issue, votes e comments) e pending_suggestions (com suggested_by, o e-mail do cliente). Ideia de projeto que saiu do quadro some só da página pública.
  • POST /ideas/boards/{id}/ideas (tracker:write): cria uma ideia publicada, {"title": "Exportar em PDF", "description": "...", "project": "MOB", "issue": "MOB-0012", "status": "under_review|planned|in_progress|released|closed"}. Com issue (de um projeto do quadro; sem title, usa o da issue), o status segue o da issue; sem ela, vale status. Quando o status muda para planned, in_progress, released ou closed, quem votou recebe um e-mail.
  • GET /ideas/{id} (tracker:read; a ideia com os votos e os comentários, com o e-mail de quem escreveu), PATCH /ideas/{id} (os campos da criação, só o que vier muda; "issue": null desliga a issue; {"published": true} publica a sugestão de um cliente) e DELETE /ideas/{id} (exclui; é como se recusa uma sugestão) (tracker:write). POST /ideas/{id}/comments com {"body": "..."} responde como a equipe (o cliente vê "Equipe <empresa>"); DELETE /ideas/comments/{id} apaga um comentário.