Skip to content

API — Issues

Endpoints para criar, listar, atualizar e gerenciar issues.

Base path: /api/v1/workspaces/:workspace_slug/projects/:project_id

Todos os endpoints requerem Authorization: Bearer {token}.


POST /workspaces/:slug/projects/:project_id/issues

Cria uma nova issue.

Body

json
{
  "title": "Corrigir bug no login com Google",
  "description": "## Contexto\n\nUsuários com iOS 17 reportam falha no callback OAuth.\n\n## Passos para reproduzir\n\n1. Abrir app no iPhone\n2. Tentar login com Google\n3. Observar erro 401",
  "type": "bug",
  "priority": "alta",
  "status_id": "01J8X...",
  "assignee_id": "01J8X...",
  "label_ids": ["01J8X...", "01J8X..."],
  "parent_id": null,
  "start_date": "2026-04-20",
  "due_date": "2026-04-25",
  "estimate": 3
}

Somente title é obrigatório. Se status_id não for informado, usa o primeiro status da categoria todo.

Tipos válidos: task, bug, story, epic, subtask

Prioridades válidas: urgent, high, medium, low, none

Response 201

json
{
  "id": "01J8X...",
  "key": "FE-7",
  "title": "Corrigir bug no login com Google",
  "description": "...",
  "type": "bug",
  "priority": "high",
  "status": {
    "id": "01J8X...",
    "name": "A fazer",
    "color": "#3b82f6",
    "category": "todo"
  },
  "assignee": {
    "id": "01J8X...",
    "name": "Gabriel Mowses",
    "avatar_url": null
  },
  "labels": [
    { "id": "01J8X...", "name": "frontend", "color": "#3b82f6" }
  ],
  "parent_id": null,
  "children_count": 0,
  "start_date": "2026-04-20",
  "due_date": "2026-04-25",
  "estimate": 3,
  "created_by": { "id": "01J8X...", "name": "Gabriel Mowses" },
  "created_at": "2026-04-18T12:00:00Z",
  "updated_at": "2026-04-18T12:00:00Z"
}

Exemplo

bash
curl -X POST https://tasks.cloudface.tech/api/v1/workspaces/produto/projects/01J8X.../issues \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"title": "Corrigir bug no login com Google", "type": "bug", "priority": "high"}'

GET /workspaces/:slug/projects/:project_id/issues

Lista issues do projeto com suporte a filtros e paginação.

Query params

ParamTipoDescrição
status_idstringFiltrar por status (pode repetir)
prioritystringurgent, high, medium, low, none
typestringtask, bug, story, epic, subtask
assignee_idstringUUID do responsável
label_idstringUUID da etiqueta (pode repetir)
parent_idstringFiltrar sub-issues de uma parent
qstringBusca por texto no título
order_bystringcreated_at, updated_at, priority, due_date
orderstringasc, desc (padrão: desc)
pageintegerPágina (padrão: 1)
per_pageintegerItens por página (padrão: 50, máx: 100)

Response 200

json
{
  "issues": [ /* array de issues */ ],
  "total": 42,
  "page": 1,
  "per_page": 50
}

Exemplo com filtros

bash
curl "https://tasks.cloudface.tech/api/v1/workspaces/produto/projects/01J8X.../issues?priority=urgent&priority=high&order_by=due_date&order=asc" \
  -H "Authorization: Bearer {token}"

GET /workspaces/:slug/projects/:project_id/issues/:key

Retorna uma issue pelo key (ex: FE-7).

Response 200 — issue completa com relações e sub-issues

json
{
  "id": "01J8X...",
  "key": "FE-7",
  /* todos os campos */
  "relations": [
    {
      "type": "blocks",
      "issue": { "id": "01J8X...", "key": "FE-8", "title": "Implementar refresh token" }
    }
  ],
  "children": [
    { "id": "01J8X...", "key": "FE-9", "title": "Configurar OAuth app no Google Cloud" }
  ]
}

PATCH /workspaces/:slug/projects/:project_id/issues/:key

Atualiza campos de uma issue.

Body — qualquer subconjunto dos campos editáveis

json
{
  "title": "Corrigir OAuth callback no iOS 17+",
  "status_id": "01J8X...",
  "priority": "urgent",
  "assignee_id": "01J8X...",
  "due_date": "2026-04-22"
}

Response 200 — issue atualizada


DELETE /workspaces/:slug/projects/:project_id/issues/:key

Deleta a issue e todas as sub-issues filhas.

Response 204 — sem body


POST /workspaces/:slug/projects/:project_id/issues/:key/relations

Cria uma relação entre duas issues.

Body

json
{
  "type": "blocks",
  "related_issue_id": "01J8X..."
}

Tipos válidos: blocks, is_blocked_by, relates_to, duplicates

Response 201 — relação criada (a relação inversa é criada automaticamente)


DELETE /workspaces/:slug/projects/:project_id/issues/:key/relations/:relation_id

Remove uma relação.

Response 204 — sem body

Feito por CloudFace