Projetos
Camada opcional entre equipe e canais/boards.
| Método | Path | Resumo | Acesso |
|---|---|---|---|
| GET | /teams/{teamId}/projects | GET /projects — devolve projetos visíveis ao caller (aplicando ABAC). | Membro da equipe |
| POST | /teams/{teamId}/projects | POST /projects — cria projeto novo, gera slug único, aplica defaults. | Membro da equipe |
| GET | /teams/{teamId}/projects/{projectId} | Devolve um projeto específico ao caller autorizado. | Membro da equipe |
| PUT | /teams/{teamId}/projects/{projectId} | PUT /projects/:id — atualiza campos livres do projeto (parcial). | Membro da equipe |
| DELETE | /teams/{teamId}/projects/{projectId} | DELETE /projects/:id — soft-delete (deleted_at). | Membro da equipe |
| GET | /teams/{teamId}/projects/{projectId}/dashboard | GET /projects/:id/dashboard — devolve todos os agregados dos widgets padrão em um único round-trip. | Membro da equipe |
| GET | /teams/{teamId}/projects/{projectId}/dashboard/layout | GET /projects/:id/dashboard/layout — devolve layout per-user. | Membro da equipe |
| PUT | /teams/{teamId}/projects/{projectId}/dashboard/layout | PUT /projects/:id/dashboard/layout — grava layout per-user. | Membro da equipe |
| GET | /teams/{teamId}/projects/{projectId}/members | GET /projects/:id/members — devolve as linhas de project_members. | Membro da equipe |
| POST | /teams/{teamId}/projects/{projectId}/members | POST /projects/:id/members — upsert de membership com role+scope. | Membro da equipe |
| DELETE | /teams/{teamId}/projects/{projectId}/members/{userId} | DELETE /projects/:id/members/:userId — remove linha de acesso. | Membro da equipe |