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âmetroTipoPadrãoDescrição
pagenumber1Página atual
limitnumber20Itens por página (máx: 100)
squad_iduuidFiltrar por squad
client_iduuidFiltrar por cliente
statusstringbacklog, active, paused, completed, cancelled
prioritystringlow, medium, high, urgent
searchstringBuscar em nome e descrição
sortstring-created_atname, 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

CampoTipoObrigatórioDescrição
namestringSimNome do projeto
slugstringNãoGerado automaticamente a partir do nome se omitido
descriptionstringNãoDescrição curta
statusstringNãoDefault: backlog
prioritystringNãoDefault: medium
colorstringNãoCor em hex (#25D366)
start_datedateNãoYYYY-MM-DD
due_datedateNãoYYYY-MM-DD
briefingstringNãoBriefing detalhado
squad_iduuidNãoSquad responsável
client_iduuidNãoCliente 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ódigoErroCausa
404NOT_FOUNDProjeto não encontrado / pertence a outro time
422DUPLICATE_ENTRYSlug já em uso
400VALIDATION_ERRORname ausente, ou status/priority com valor fora do enum