API
Projetos
Gerenciar projetos vinculados a squads via API.
Projetos
Projetos representam trabalhos contínuos da sua agência. Um projeto pertence a um time, opcionalmente vinculado a um squad e a um cliente.
GET /v1/projects
Lista projetos do time.
Query Parameters
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
page | number | 1 | Página atual |
limit | number | 20 | Itens por página (máx: 100) |
squad_id | uuid | — | Filtrar por squad |
client_id | uuid | — | Filtrar por cliente |
status | string | — | backlog, active, paused, completed, cancelled |
priority | string | — | low, medium, high, urgent |
search | string | — | Buscar em nome e descrição |
sort | string | -created_at | name, status, priority, start_date, due_date, created_at, updated_at |
Request
curl -X GET "https://app.sonarbr.io/api/v1/projects?status=active&squad_id=SQUAD_UUID" \
-H "Authorization: Bearer ea_live_sua_chave_aqui"Response
{
"success": true,
"data": [
{
"id": "660e8400-e29b-41d4-a716-446655440002",
"name": "Lançamento TechStore",
"slug": "lancamento-techstore-l9m0n",
"description": "Campanha de lançamento da nova loja",
"status": "active",
"priority": "high",
"color": "#25D366",
"start_date": "2026-05-01",
"due_date": "2026-08-31",
"completed_at": null,
"briefing": "Foco em performance no Meta Ads e Google",
"squad_id": "440e8400-e29b-41d4-a716-446655440006",
"squad": {
"id": "440e8400-e29b-41d4-a716-446655440006",
"name": "Squad Performance"
},
"client_id": "550e8400-e29b-41d4-a716-446655440000",
"client": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "TechStore Brasil Ltda"
},
"created_by": "880e8400-e29b-41d4-a716-446655440004",
"created_at": "2026-05-01T09:00:00Z",
"updated_at": "2026-05-10T14:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"pages": 1
}
}POST /v1/projects
Cria um novo projeto.
Request Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do projeto |
slug | string | Não | Gerado automaticamente a partir do nome se omitido |
description | string | Não | Descrição curta |
status | string | Não | Default: backlog |
priority | string | Não | Default: medium |
color | string | Não | Cor em hex (#25D366) |
start_date | date | Não | YYYY-MM-DD |
due_date | date | Não | YYYY-MM-DD |
briefing | string | Não | Briefing detalhado |
squad_id | uuid | Não | Squad responsável |
client_id | uuid | Não | Cliente final |
Request
curl -X POST https://app.sonarbr.io/api/v1/projects \
-H "Authorization: Bearer ea_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"name": "Rebranding TechStore",
"status": "active",
"priority": "high",
"squad_id": "440e8400-e29b-41d4-a716-446655440006",
"client_id": "550e8400-e29b-41d4-a716-446655440000",
"start_date": "2026-06-01",
"due_date": "2026-08-31",
"briefing": "Atualizar identidade visual e site institucional"
}'O slug precisa ser único dentro do time. Se você enviar um slug já em uso o endpoint retorna 422 DUPLICATE_ENTRY.
GET /v1/projects/:id
Busca um projeto específico.
curl -X GET https://app.sonarbr.io/api/v1/projects/PROJECT_UUID \
-H "Authorization: Bearer ea_live_sua_chave_aqui"PUT /v1/projects/:id
Atualiza um projeto. Aceita os mesmos campos do POST.
curl -X PUT https://app.sonarbr.io/api/v1/projects/PROJECT_UUID \
-H "Authorization: Bearer ea_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"status": "completed",
"completed_at": "2026-08-25T17:00:00Z"
}'DELETE /v1/projects/:id
Arquiva o projeto (define status = "cancelled"). Não remove o registro do banco.
curl -X DELETE https://app.sonarbr.io/api/v1/projects/PROJECT_UUID \
-H "Authorization: Bearer ea_live_sua_chave_aqui"Response
{
"success": true,
"data": {
"id": "660e8400-e29b-41d4-a716-446655440002",
"status": "cancelled",
"archived_at": "2026-05-20T16:00:00Z"
}
}Erros Comuns
| Código | Erro | Causa |
|---|---|---|
404 | NOT_FOUND | Projeto não encontrado / pertence a outro time |
422 | DUPLICATE_ENTRY | Slug já em uso |
400 | VALIDATION_ERROR | name ausente, ou status/priority com valor fora do enum |