API pública v1.7
API de Projetos
Superfície estável em /api/v1/projects/
para integrações e LLMs (projetos, modelos, cards, membros, labels, checklists, sprints e documentos). Separada das rotas internas de sessão do Kanban.
Use esta API com uma IA
Dê à sua IA um prompt com a documentação, o OpenAPI e o endereço deste ambiente. Ela consulta os links no momento do uso, então o prompt continua válido quando a API evoluir.
https://taskfy.tec.br
Ver prompt
Você vai trabalhar com a API pública de Projetos do Taskfy.
Este prompt foi gerado pelo próprio ambiente que deve ser utilizado. Não troque o domínio por produção, homologação ou qualquer outro ambiente.
AMBIENTE ATUAL
Ambiente: Produção
Base URL: https://taskfy.tec.br
Documentação: https://taskfy.tec.br/docs/api/projects
OpenAPI: https://taskfy.tec.br/api/v1/projects/openapi.json
Contexto para agentes: https://taskfy.tec.br/docs/api/projects/agent-context.md
API base: https://taskfy.tec.br/api/v1/projects/
AUTENTICAÇÃO
A API utiliza: Authorization: Bearer $TASKFY_PROJECTS_API_KEY
A chave possui prefixo: erp_proj_
Nunca imprima, registre em log, salve em código ou faça commit da chave.
ANTES DE UTILIZAR A API
1. Acesse e leia completamente a documentação: https://taskfy.tec.br/docs/api/projects
2. Acesse e analise a especificação OpenAPI: https://taskfy.tec.br/api/v1/projects/openapi.json
3. Leia as instruções específicas para agentes: https://taskfy.tec.br/docs/api/projects/agent-context.md
Considere esses documentos como a fonte oficial sobre a API.
Não utilize conhecimento anterior sobre endpoints do Taskfy quando ele entrar em conflito com essa documentação.
Se houver divergência entre exemplos e a especificação OpenAPI, prefira a especificação OpenAPI.
REGRAS IMPORTANTES
- Use somente o domínio informado em Base URL.
- Não invente IDs de projeto, card, coluna, sprint, usuário, label ou qualquer outro recurso. Consulte os recursos necessários antes de executar alterações.
- Para descobrir clientes (ids para workspace_id): GET /api/v1/projects/workspaces/
- Para descobrir projetos disponíveis, utilize: GET /api/v1/projects/
- Modelos de formulário: /api/v1/projects/form-templates/ (vincular com POST /{project_id}/forms/; respostas em .../forms/{iid}/responses/). Não confundir com /templates/ (modelos de tipo de projeto/Kanban).
- Para entender completamente um projeto: GET /api/v1/projects/{project_id}/board-state/
- Para consultar todas as colunas, inclusive vazias: GET /api/v1/projects/{project_id}/columns/
- Para criar, renomear, reordenar ou remover colunas de um projeto existente: POST/PATCH/DELETE /api/v1/projects/{project_id}/columns/ (veja o OpenAPI; modelos de projeto só afetam projetos novos).
- Para responsáveis: GET /api/v1/projects/{project_id}/members/
- Para etiquetas: GET /api/v1/projects/{project_id}/labels/
- Para operações em lote, valide primeiro com dry_run quando o endpoint oferecer essa possibilidade.
- Não utilize as rotas internas da interface localizadas em /projetos/. Utilize somente a API pública /api/v1/projects/.
- Se algum dos documentos acima não puder ser acessado, informe exatamente qual URL não pôde ser lida antes de assumir como a API funciona.
Depois de ler a documentação, use a API para executar a tarefa que eu solicitar.
Uma solicitação explícita minha de criação ou alteração autoriza o POST/PATCH correspondente. Peça confirmação adicional somente para exclusões (DELETE), restaurações (restore), operações destrutivas ou situações ambíguas.
Opções avançadas
Visão geral
- Autenticação por chave de API ligada ao utilizador (ACL/RBAC dinâmicos).
- Escopos read e write.
- Criar projetos (opcionalmente a partir de um modelo) e editar modelos de projeto: colunas, automações, sprints e cards padrão.
- GET único de andamento: sprint ativa + backlog + demandas + cards/comentários.
- Membros do projeto e etiquetas para atribuir responsáveis e labels nos cards.
- Checklists em cards (criar lista + itens, marcar concluído).
- Ciclo de sprints (criar/ativar/encerrar), planejamento (Gantt/estimativa), automações Kanban e documentos (sync GED).
- CRUD de cards e conversão de demandas; lotes com
dry_run. - Escritas de cards geram snapshot (5 dias); preferir
cards/bulkpara várias mudanças.
Autenticação
Crie a chave em Projetos → API (requer login). Envie:
Authorization: Bearer erp_proj_…
Nunca cole a chave no prompt da LLM nem nos ficheiros da skill. Use variáveis de ambiente.
Fluxo recomendado
- Listar projetos com
GET /api/v1/projects/. - Escolher o projeto e chamar
board-state. - Antes de atribuir cards:
GET …/members/eGET …/labels/. - Checklists:
POST …/cards/{id}/checklists/(comitemsopcional). - Um pedido explícito do utilizador autoriza o POST/PATCH correspondente; confirmar antes de DELETE, restore ou alterações destrutivas/ambíguas.
- Se necessário, listar snapshots e restaurar dentro de 5 dias.
Endpoints
| Método | Path | Escopo |
|---|---|---|
| GET | /api/v1/projects/ | read |
| POST | /api/v1/projects/ | write+projects.manage |
| GET | /api/v1/projects/templates/ | read |
| GET/PATCH | /api/v1/projects/templates/{tid}/ | read / write+admin |
| POST | /api/v1/projects/templates/{tid}/columns/ | write+admin |
| PATCH/DELETE | /api/v1/projects/templates/{tid}/columns/{cid}/ | write+admin |
| POST | /api/v1/projects/templates/{tid}/columns/reorder/ | write+admin |
| PUT | /api/v1/projects/templates/{tid}/columns/{cid}/automations/ | write+admin |
| POST | /api/v1/projects/templates/{tid}/sprints/ | write+admin |
| PATCH/DELETE | /api/v1/projects/templates/{tid}/sprints/{sid}/ | write+admin |
| POST | /api/v1/projects/templates/{tid}/sprints/reorder/ | write+admin |
| POST | /api/v1/projects/templates/{tid}/cards/ | write+admin |
| PATCH/DELETE | /api/v1/projects/templates/{tid}/cards/{card_id}/ | write+admin |
| GET | /api/v1/projects/{id}/board-state/ | read |
| GET | /api/v1/projects/{id}/columns/ | read |
| POST | /api/v1/projects/{id}/columns/ | write+kanban admin |
| PATCH/DELETE | /api/v1/projects/{id}/columns/{cid}/ | write+kanban admin |
| POST | /api/v1/projects/{id}/columns/reorder/ | write+kanban admin |
| GET | /api/v1/projects/{id}/members/ | read |
| GET | /api/v1/projects/{id}/labels/ | read |
| GET/POST | /api/v1/projects/{id}/sprints/ | read/write |
| POST | /api/v1/projects/{id}/sprints/{sid}/activate/ | write |
| POST | /api/v1/projects/{id}/sprints/{sid}/close/ | write |
| GET | /api/v1/projects/{id}/planning/ | read |
| GET/POST | /api/v1/projects/{id}/automations/ | read / write+admin |
| PATCH/DELETE | /api/v1/projects/{id}/automations/{rule_id}/ | write+admin |
| GET/POST | /api/v1/projects/{id}/documents/ | read / write+docs |
| GET/PATCH/DELETE | /api/v1/projects/{id}/documents/{doc_id}/ | read / write+docs |
| GET/PATCH | /api/v1/projects/{id}/demands/{demand_id}/ | read/write |
| POST | /api/v1/projects/{id}/demands/{demand_id}/convert/ | write |
| GET | /api/v1/projects/{id}/cards/{card_id}/ | read |
| POST | /api/v1/projects/{id}/cards/ | write |
| POST | /api/v1/projects/{id}/cards/bulk/ | write |
| PATCH | /api/v1/projects/{id}/cards/{card_id}/ | write |
| POST | /api/v1/projects/{id}/cards/{card_id}/move-sprint/ | write |
| DELETE | /api/v1/projects/{id}/cards/{card_id}/ | write |
| GET/POST | /api/v1/projects/{id}/cards/{card_id}/comments/ | read/write |
| PATCH/DELETE | /api/v1/projects/{id}/cards/{card_id}/comments/{cid}/ | write |
| GET/POST | /api/v1/projects/{id}/cards/{card_id}/checklists/ | read/write |
| PATCH/DELETE | /api/v1/projects/{id}/cards/{card_id}/checklists/{clid}/ | write |
| GET/POST | …/checklists/{clid}/items/ | read/write |
| PATCH/DELETE | …/checklists/{clid}/items/{iid}/ | write |
| GET | /api/v1/projects/{id}/snapshots/ | read |
| GET | /api/v1/projects/{id}/snapshots/{sid}/ | read |
| GET | /api/v1/projects/{id}/snapshots/{sid}/diff/ | read |
| POST | /api/v1/projects/{id}/snapshots/{sid}/restore/ | write |
Especificação máquina: https://taskfy.tec.br/api/v1/projects/openapi.json (OpenAPI 1.7.0)
Criar projeto
POST /api/v1/projects/ com name (obrigatório) e opcionalmente workspace_id (cliente), template_id, gestor_id, project_manager_id, description, status, start_date e end_date.
Sem cliente o projeto fica interno. Gestor e PM assumem o dono da chave quando omitidos. Com modelo, o quadro recebe colunas, automações, sprints e cards padrão.
Exige escopo write, permissão projects.manage e respeita módulo e limite de projetos do plano.
{
"name": "Site institucional",
"workspace_id": "uuid-do-cliente",
"template_id": "uuid-de-GET-templates"
}
Modelos de projeto
GET …/templates/ lista os modelos ativos disponíveis para criar projeto (filtre por cliente com ?workspace_id=); ?editable=1 lista os editáveis, inclusive inativos. Cada item traz can_edit.
GET …/templates/{tid}/ devolve colunas (com automações), sprints e cards padrão.
Edição: PATCH dos dados do modelo (escopo e workspace só pela tela), CRUD de colunas, sprints e cards padrão, reordenação por lista completa de ids e PUT …/columns/{cid}/automations/ substituindo as automações da coluna.
Escrita exige escopo write e papel owner/admin de workspace admin, a mesma regra de Configurações → Modelos. Alterações valem para projetos criados depois; projetos existentes não mudam.
board-state, colunas e demandas
board-state devolve projeto, sprint ativa, backlog e demandas. Use GET …/columns/ para listar todas as colunas (incluindo vazias).
Em projetos existentes também dá para gerir colunas: POST …/columns/ (name, color opcional; entra no fim), PATCH …/columns/{cid}/ (nome e/ou cor), POST …/columns/reorder/ (column_ids com todas as colunas) e DELETE …/columns/{cid}/ (cards vão para a primeira coluna restante, com snapshot; o quadro mantém ao menos uma coluna).
Exige escopo write, admin do projeto e role kanban.manage. Para mudar projetos futuros, edite o modelo. Converta demandas com POST …/demands/{id}/convert/ (idempotente).
Membros e etiquetas
GET …/members/ lista membros: use user.id em assignee_ids no PATCH do card.
GET …/labels/ lista etiquetas: use id em label_ids.
Lista vazia remove todos os responsáveis ou etiquetas.
Checklists
POST …/cards/{id}/checklists/ com title e opcionalmente items.
Itens: …/checklists/{clid}/items/; marcar feito com {"is_done": true}.
O GET do card inclui checklists.
Sprints e planejamento
POST …/sprints/ cria sprint (name, start_date, duração opcional).
activate / close seguem a política do projeto (one_at_a_time, planned_sequence, automatic_sequence).
GET …/planning/ devolve Gantt e estimativa de sprints: não atribui cards automaticamente.
Automações
Listar regras e presets com GET …/automations/.
Criar com column_id + preset_slug (+ params).
Escrita exige admin do projeto e role kanban.manage.
Documentos
CRUD de documentação Markdown do projeto. O detalhe inclui content_markdown.
Escrita sincroniza o GED e exige projects.documentation. DELETE envia para a lixeira.
PATCH e lote
PATCH aceita subset de: title, description, priority, due_date, start_date, is_archived, is_blocked, card_type, sprint_id, column_id, order, assignee_ids, label_ids. Coluna “Concluído/Done” preenche completed_at; sair de “Bloqueio” limpa is_blocked.
{
"dry_run": true,
"operations": [
{"action": "move_card", "card_id": "uuid", "column_id": "uuid"}
]
}
Com dry_run: false, valida tudo e aplica com um snapshot.
Snapshots
Escritas de cards (e lotes aplicados) gravam o estado anterior (sprint ativa + backlog). TTL 5 dias. Há também GET …/snapshots/{id}/ e …/diff/.
Códigos de erro
401: chave ausente ou inválida403: pagamento pendente, escopo write em falta ou sem ACL no projeto404: recurso inexistente429: rate limit / bloqueio temporário
LLM e Agent Skills
Uma LLM precisa de ferramenta HTTP ou terminal. Oferecemos dois pacotes (sem chave embutida):
Portátil + CLI
SKILL.md, reference.md e CLI Python (stdlib). Ideal para qualquer agente com Python.
Baixar skill.zipInstalar em .cursor/skills/taskfy-projects-api/ ou pasta equivalente.
Cursor (só instruções)
Mesmas instruções sem CLI: o agente usa as ferramentas HTTP/terminal do Cursor.
Baixar cursor-skill.zipTASKFY_BASE_URL e TASKFY_PROJECTS_API_KEY.
Para LLMs sem skill, use o prompt para IA ou o agent-context.md.
Exemplos
export TASKFY_BASE_URL="https://taskfy.tec.br"
export TASKFY_PROJECTS_API_KEY="erp_proj_…"
curl -s -H "Authorization: Bearer $TASKFY_PROJECTS_API_KEY" \
"$TASKFY_BASE_URL/api/v1/projects/"
python scripts/taskfy_projects_api.py projects
python scripts/taskfy_projects_api.py board-state <project_id>
python scripts/taskfy_projects_api.py sprints <project_id>
python scripts/taskfy_projects_api.py planning <project_id>
python scripts/taskfy_projects_api.py documents <project_id>