Skip to content
ver .md original

Crie tarefas a partir de uma lista em uma chamada

Importe até 100 tarefas do Dailybot por requisição com o endpoint em lote: Idempotency-Key, uma simulação antes, resultados por item e chaves de tarefa contíguas.

Beta

Plan está em beta. Tudo o que está em /plan no aplicativo web, os comandos da CLI e da agent skill para projetos, metas, quadros e tarefas, e a API pública /v1/plan/ podem mudar antes da disponibilidade geral. Quer testar com sua equipe? Escreva para [email protected].

A importação de uma lista (uma planilha, um checklist, o resultado de uma sessão de planejamento) não deveria exigir uma requisição por linha, e uma nova tentativa não deveria criar tudo duas vezes. POST /v1/plan/tasks/bulk/ cria até 100 tarefas por chamada, exige um Idempotency-Key e informa o resultado de cada item separadamente.

1. Visualize antes com uma simulação

?dry_run=true executa a chamada inteira e desfaz tudo no final, então você vê o que aconteceria sem gravar nada (não precisa de chave de idempotência):

curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/bulk/?dry_run=true" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "create",
    "board": "00000000-0000-4000-8000-000000000002",
    "items": [
      { "title": "Write the migration guide", "external_id": "row-1" },
      { "title": "Record the demo", "external_id": "row-2", "priority": 2 }
    ]
  }'

A simulação responde com consequence (uma frase para mostrar a uma pessoa), items com as mudanças que cada item faria e refused com os itens que falhariam e o motivo.

2. Crie de verdade

Envie o mesmo corpo sem dry_run, com um Idempotency-Key:

curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/bulk/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: import-2026-09-25-batch-1" \
  -d '{
    "operation": "create",
    "board": "00000000-0000-4000-8000-000000000002",
    "items": [
      { "title": "Write the migration guide", "external_id": "row-1" },
      { "title": "Record the demo", "external_id": "row-2", "priority": 2 }
    ]
  }'
{
  "succeeded": 2,
  "failed": 0,
  "results": [
    { "task": "00000000-0000-4000-8000-000000000105", "key": "ENG-150", "external_id": "row-1", "status": "ok", "version": 1 },
    { "task": "00000000-0000-4000-8000-000000000106", "key": "ENG-151", "external_id": "row-2", "status": "ok", "version": 1 }
  ]
}
  • Os itens recebem um title (até 512 caracteres) e, opcionalmente, description, state, owner, priority, estimate, start_date, due_date e external_id.
  • O external_id volta em cada resultado, para que você associe os resultados às suas linhas e concilie os dados depois de uma nova tentativa.
  • As chaves são alocadas em um bloco contíguo, na ordem em que você enviou os itens, então a importação fica em ordem depois (ENG-150, ENG-151, …).
  • Por padrão, as novas tarefas ficam no fim de cada coluna. Adicione "position": "start" ao lado de operation para colocá-las no topo, na ordem dos seus itens.

Pela CLI:

dailybot plan task bulk --operation create --board 00000000-0000-4000-8000-000000000002 -f tasks.json --dry-run
dailybot plan task bulk --operation create --board 00000000-0000-4000-8000-000000000002 -f tasks.json

3. Leia os resultados por item

A chamada responde 200 mesmo quando alguns itens falham: o status HTTP indica que o lote foi aceito, não que todos os itens deram certo. Verifique failed e o status de cada resultado; um item com falha traz code, detail e, às vezes, extra:

{ "task": "ENG-9", "status": "error", "code": "version_conflict", "detail": "This task changed since you loaded it.", "extra": { "current_version": 4 } }

4. Tente de novo com segurança

Se a conexão cair, envie o mesmo corpo com o mesmo Idempotency-Key. Você recebe a primeira resposta de volta (com Idempotency-Replayed: true) e nada é criado duas vezes. As chaves ficam registradas por 24 horas. Um corpo diferente com a mesma chave retorna 409 idempotency_key_payload_mismatch; use uma chave nova para um lote novo.

Mais de 100 linhas

Divida a lista em lotes de até 100 itens, com uma chave por lote (por exemplo, import-2026-09-25-batch-1, -batch-2, …). Mais de 100 itens em uma chamada retorna 400 too_many_items. As chamadas em lote contam para um limite de 30 por minuto por ator.

Outras operações em lote

O mesmo endpoint aplica uma operação a até 100 tarefas existentes, identificadas por uuid ou chave: move, update, archive, restore e set_labels (que substitui o conjunto inteiro de etiquetas). set_owner, set_priority, set_due_date e set_parent são aliases de update, e delete é alias de archive. Um payload que cita uma tarefa de outra organização é recusado por inteiro, antes que qualquer coisa seja gravada.

Referência