Plan · Projetos
Projetos agrupam quadros e reúnem saúde, notas de status, marcos, membros e visualizações salvas. Parte da API do Dailybot Plan (Beta).
Nesta página
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].
Listar projetos
Os projetos que você pode ver, em uma página. Busque com search, filtre por datas com start_date / end_date e traga os projetos arquivados com include_archived. include adiciona blocos opcionais a cada linha.
Parâmetros de consulta
Ordenação e expansão
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| include | string | Opcional | Resumos agregados a incorporar, separados por vírgula. progress é o único token. Ausente por padrão porque é um agregado; quando solicitado, é calculado sobre a página retornada. Um token desconhecido é 400 invalid_filter_value; um valor vazio não tem efeito. |
Paginação
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
| limit | integer | Opcional | Alias de page_size, traduzido no servidor. |
| offset | integer | Opcional | Alias traduzido para page no servidor. |
Filtros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| search | string | Opcional | Corresponde ao título e à chave. Mais de 256 caracteres é 400 search_query_too_long, sem truncamento. q é um alias. |
Linhas arquivadas
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| is_archived | boolean | Opcional | true retorna apenas linhas arquivadas; false (o padrão), apenas as ativas. Arquivar é a exclusão, então as linhas arquivadas continuam legíveis. |
| include_archived | boolean | Opcional | Incluir linhas arquivadas junto com as ativas. Diferente de is_archived, que seleciona um conjunto ou o outro: include_archived=true é a união. As listas retornam linhas ativas, a menos que você opte pelo contrário. |
Datas
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| start_date | string | Opcional | Início da janela de data de criação. O que --since da CLI produz. |
| end_date | string | Opcional | Fim da janela de data de criação. O que --until da CLI produz. |
Objeto Project
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | uuid | Obrigatório | Identificador público estável. |
| name | string | Obrigatório | Nome de exibição. Máx. 120 caracteres. |
| slug | string | Opcional | Nome amigável para URL. Máx. 48 caracteres. |
| description | string | null | Opcional | Descrição livre. |
| lead | UserRef | null | Opcional | O líder do projeto. Veja UserRef. |
| goals | array | Opcional | Metas para as quais este projeto aponta. Um projeto pode atender várias metas. Sempre presentes: uuid. Itens: {uuid, name}. |
| goal | object | Opcional | A meta, quando há exatamente uma. Formato: {uuid, name}|null. |
| board_count | integer | Opcional | Número de quadros ativos no projeto. |
| health | enum | Opcional | Saúde declarada. Um de not_set, on_track, at_risk, off_track. |
| start_date | date | null | Opcional | Data de início planejada. |
| target_date | date | null | Opcional | Data de término planejada. |
| progress | ProjectProgress | null | Opcional | Resumo agregado do progresso sobre as tarefas que você pode ver. Veja ProjectProgress. |
| is_archived | boolean | Obrigatório | Se a linha está arquivada. Arquivar é a exclusão: linhas arquivadas continuam legíveis e restauráveis. |
| archived_at | date-time | null | Opcional | Quando a linha foi arquivada. |
| created_at | date-time | Opcional | Quando a linha foi criada. |
| updated_at | date-time | Opcional | Quando a linha mudou pela última vez. |
| viewer | object | Opcional | O que você pode fazer com esta linha. Formato: {can_see_content: boolean, can_manage: boolean} (both required). |
Objeto UserRef
Objeto ProjectProgress
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| total | integer | Obrigatório | Todas as tarefas contadas. |
| completed | integer | Obrigatório | Tarefas em um estado done ou canceled. |
| open | integer | Opcional | Tarefas em um estado backlog, todo ou in_progress. |
| blocked | integer | Opcional | Tarefas com um bloqueio ativo. |
| overdue | integer | Opcional | Tarefas abertas com a data de vencimento ultrapassada. |
| percent_complete | integer | Obrigatório | completed como porcentagem de total. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<Project> | Obrigatório | As linhas desta página. Veja Project. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 429 | Limite de requisições atingido. Aguarde os segundos indicados em `Retry-After`. |
curl -sS "https://api.dailybot.com/v1/plan/projects/?include=progress" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project list --include progress --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000001",
"name": "Platform",
"slug": "platform",
"description": null,
"lead": {
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"goals": [],
"goal": {},
"board_count": 1,
"health": "on_track",
"start_date": "2026-09-28",
"target_date": "2026-10-15",
"progress": {
"total": 10,
"completed": 4,
"percent_complete": 40
},
"is_archived": false,
"archived_at": null,
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z",
"viewer": {}
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Criar um projeto
Cria um projeto, o contêiner que agrupa quadros. Todo membro não convidado pode chamá-lo (com uma sessão iniciada ou uma API key pessoal); uma key de agente ou da organização não pode. Envie um Idempotency-Key para repetir com segurança; o limite de projetos do plano responde 402 task_projects_limit_reached.
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Uma chave que você gera para esta intenção. Uma repetição com a mesma chave e o mesmo corpo retorna a primeira resposta sem um segundo efeito colateral e traz Idempotency-Replayed: true. As chaves são mantidas por 24 horas. A mesma chave com um corpo diferente é 409 idempotency_key_payload_mismatch; uma repetição enquanto a primeira chamada ainda está em execução recebe 409 idempotency_in_progress por até 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| visibility | enum | Opcional | org (todos na organização — espaço compartilhado) ou members (somente grants explícitos; convide com POST …/members/). Criar como members concede o grant a você. Um de org, members. Padrão org. |
| name | string | Obrigatório | Nome de exibição. Máx. 120 caracteres. |
| description | string | null | Opcional | Descrição livre. Máx. 2000 caracteres. |
| lead | uuid | null | Opcional | O líder do projeto. |
| health | enum | Opcional | Saúde declarada. Um de not_set, on_track, at_risk, off_track. |
| start_date | date | null | Opcional | Data de início planejada. |
| target_date | date | null | Opcional | Data de término planejada. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | Project | Obrigatório | Um objeto Project. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Tasks ainda não está habilitado para a sua organização (`plan_upgrade_required`), ou o teto de projetos do plano foi atingido (`task_projects_limit_reached`). |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 409 | Conflito. O `code` da resposta indica qual (por exemplo, `version_conflict`). |
| 429 | Limite de requisições atingido. Aguarde os segundos indicados em `Retry-After`. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Q4 Roadmap",
"visibility": "org",
"health": "on_track",
"target_date": "2026-12-18"
}'dailybot plan project create -n "Q4 Roadmap" --target-date 2026-12-18Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Obter um projeto
Um projeto pelo uuid. Um projeto que você não pode ver responde 404, igual a um que não existe.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | Project | Obrigatório | Um objeto Project. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project get 00000000-0000-4000-8000-000000000001 --include progressTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Atualizar um projeto
Altera os campos de um projeto. Envie só os campos que mudam. Todo membro não convidado pode chamá-lo (com uma sessão iniciada ou uma API key pessoal); uma key de agente ou da organização não pode. Definir visibility como members privatiza o projeto e concede automaticamente o ator que privatiza.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Uma chave que você gera para esta intenção. Uma repetição com a mesma chave e o mesmo corpo retorna a primeira resposta sem um segundo efeito colateral e traz Idempotency-Replayed: true. As chaves são mantidas por 24 horas. A mesma chave com um corpo diferente é 409 idempotency_key_payload_mismatch; uma repetição enquanto a primeira chamada ainda está em execução recebe 409 idempotency_in_progress por até 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| visibility | enum | Opcional | org (todos na organização) ou members (apenas membros explícitos). Mudar de org para members concede automaticamente o ator que privatiza. Um de org, members. |
| name | string | Opcional | Nome de exibição. Máx. 120 caracteres. |
| description | string | null | Opcional | Descrição livre. Máx. 2000 caracteres. |
| lead | uuid | null | Opcional | O líder do projeto. |
| health | enum | Opcional | Saúde declarada. Um de not_set, on_track, at_risk, off_track. |
| start_date | date | null | Opcional | Data de início planejada. |
| target_date | date | null | Opcional | Data de término planejada. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | Project | Obrigatório | Um objeto Project. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"health": "at_risk"
}'dailybot plan project update 00000000-0000-4000-8000-000000000001 --health at_riskTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
As atualizações mais recentes de todos os projetos que quem chama pode ver
A forma em lote da lista de atualizações por projeto, para uma tela inicial que, de outro modo, a chamaria uma vez por projeto.
Retorna as per_project atualizações mais recentes de cada projeto visível como uma única lista plana e paginada; cada linha traz seu project, então agrupe por esse campo. Ordenada pelo nome do projeto e depois da mais recente para a mais antiga. É uma prévia, não um histórico: para uma thread completa ou um projeto arquivado, use GET /v1/plan/projects/{project_id}/updates/.
projects restringe aos projetos indicados. Um projeto que você não pode ver é omitido silenciosamente em vez de recusado, e projetos arquivados são excluídos mesmo quando indicados. body_html é renderizado e sanitizado no servidor.
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
| projects | array | Opcional | Uuids de projetos para restringir. Repetível; os valores são combinados com OR. Um projeto que quem chama não pode ver, ou que está arquivado, não contribui com nada em vez de gerar erro. Mais do que o máximo publicado é 400 too_many_filter_values. |
| per_project | integer | Opcional | Quantas atualizações cada projeto contribui. Limitado ao máximo publicado em vez de recusado - este é um tamanho de prévia, não um identificador, e uma tela inicial que pede demais deve receber uma página completa em vez de um erro. |
Objeto ProjectUpdate
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | uuid | Obrigatório | Identificador público estável. |
| project | uuid | null | Obrigatório | O projeto. |
| body | string | Obrigatório | Markdown como digitado. Mencione alguém com <@DB@{uuid}>, usando um uuid da lista de mencionáveis. |
| body_html | string | Obrigatório | body renderizado e sanitizado pelo servidor. HTML do cliente nunca é aceito. |
| mentions | array<ActorRef> | Opcional | As pessoas mencionadas. Leia-as daqui, nunca analisando body. Veja ActorRef. |
| health | enum | null | Opcional | Saúde declarada. Um de not_set, on_track, at_risk, off_track. |
| created_by | ActorRef | null | Opcional | Quem criou a linha. Veja ActorRef. |
| created_at | date-time | Obrigatório | Quando a linha foi criada. |
| updated_at | date-time | Opcional | Quando a linha mudou pela última vez. |
| executed_by_agent | object | null | Opcional | O agente que executou a publicação desta pessoa, ao lado de created_by, ou null se for uma publicação humana comum: {uuid, name, username, avatar}. |
| provenance | enum | Opcional | Como o texto chegou: typed, agent_authored ou retrieved. Uma nota publicada com uma API key, ou marcada com um agente, é agent_authored. |
| edited_at | date-time | null | Opcional | Nulo até a primeira edição. |
| attachments | array<TaskAttachment> | Opcional | Anexos prontos, ordenados por posição, incluídos. Envie-os com POST …/updates/{update_id}/attachments/. |
Objeto ActorRef
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<ProjectUpdate> | Obrigatório | As linhas desta página. Veja ProjectUpdate. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
curl -sS "https://api.dailybot.com/v1/plan/projects/updates/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project updates --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-00000000000e",
"project": "00000000-0000-4000-8000-000000000001",
"body": "Staging is green; rolling out Friday.",
"body_html": "<p>Staging is green; rolling out Friday.</p>",
"mentions": [],
"health": "on_track",
"created_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z"
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Notas de status de um projeto, das mais recentes para as mais antigas
A metade narrativa de um roadmap: por que a saúde está como está, com um nome e uma data. body é o Markdown como foi digitado; body_html é renderizado no servidor pelo mesmo sanitizador que os comentários usam, então nenhum HTML enviado pelo cliente é confiável.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<ProjectUpdate> | Obrigatório | As linhas desta página. Veja ProjectUpdate. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project updates 00000000-0000-4000-8000-000000000001 --jsonTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Publicar uma nota de status
Envie body em markdown. Um body_html NÃO é aceito — o servidor o renderiza e sanitiza, então a allow-list é nossa e existe apenas uma. health registra o que o autor declarou naquele dia e não altera Project.health.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| body | string | Obrigatório | Markdown. Mencione alguém com <@DB@{uuid}>, usando um uuid da lista de mencionáveis. |
| health | enum | null | Opcional | Saúde declarada. Um de not_set, on_track, at_risk, off_track. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectUpdate | Obrigatório | Um objeto ProjectUpdate. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"body": "Staging is green; rolling out Friday. <@DB@00000000-0000-4000-8000-00000000000c> owns the release.",
"health": "on_track"
}'dailybot plan project update-post 00000000-0000-4000-8000-000000000001 "Staging is green; rolling out Friday." --health on_trackTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Compromissos com data dentro de um projeto, em ordem de data
Cada linha traz task_count, anotado na mesma consulta: um roadmap desenha todos os marcadores de uma vez, então uma contagem por marcador seria uma consulta por linha.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
| include_archived | boolean | Opcional | Incluir linhas arquivadas junto com as ativas. Diferente de is_archived, que seleciona um conjunto ou o outro: include_archived=true é a união. As listas retornam linhas ativas, a menos que você opte pelo contrário. |
Objeto ProjectMilestone
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | uuid | Obrigatório | Identificador público estável. |
| name | string | Obrigatório | Nome de exibição. |
| description | string | null | Opcional | Descrição livre. |
| date | date | Obrigatório | A data do marco. |
| task_count | integer | Opcional | Número de tarefas ativas. |
| attachment_count | integer | Opcional | Anexos prontos deste marco. Referencie-os na description com marcadores attachment:{uuid} e liste-os em …/milestones/{milestone_id}/attachments/. |
| is_archived | boolean | Opcional | Se a linha está arquivada. Arquivar é a exclusão: linhas arquivadas continuam legíveis e restauráveis. |
| completed_at | date-time | null | Opcional | Quando foi concluído, ou null. |
| created_at | date-time | Opcional | Quando a linha foi criada. |
| updated_at | date-time | Opcional | Quando a linha mudou pela última vez. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<ProjectMilestone> | Obrigatório | As linhas desta página. Veja ProjectMilestone. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestones 00000000-0000-4000-8000-000000000001{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000007",
"name": "Beta launch",
"description": null,
"date": "2026-09-28",
"task_count": 12,
"is_archived": false,
"completed_at": null,
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z"
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Comprometer-se com um momento datado
Adiciona um marco a um projeto: um name, uma date e uma description opcional. Conclua-o depois com o endpoint de conclusão.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Obrigatório | Nome de exibição. |
| date | date | Obrigatório | A data do marco. |
| description | string | null | Opcional | Descrição livre. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectMilestone | Obrigatório | Um objeto ProjectMilestone. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Beta launch",
"date": "2026-10-15"
}'dailybot plan project milestone-create 00000000-0000-4000-8000-000000000001 -n "Beta launch" --date 2026-10-15Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Mover ou renomear um marco
Renomeia um marco, muda a data ou edita a descrição. Envie só os campos que mudam.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Opcional | Nome de exibição. |
| date | date | Opcional | A data do marco. |
| description | string | null | Opcional | Descrição livre. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectMilestone | Obrigatório | Um objeto ProjectMilestone. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-10-22"
}'dailybot plan project milestone-update 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007 --date 2026-10-22Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Aposentar um marco (arquiva; as tarefas continuam apontando para ele)
Arquiva em vez de excluir definitivamente, então as tarefas continuam apontando para o marco e a associação nunca se perde. A mudança é registrada no feed de atividade como project.milestone_deleted — leia como "aposentado". Não é um evento de webhook.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestone-delete 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007 --yesTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Marcar um marco como concluído
Concluir com tarefas abertas é permitido. Essas tarefas continuam abertas; a resposta informa open_task_count. Reversível via …/reopen/.
?dry_run=true retorna a consequência sem gravar.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| dry_run | boolean | Opcional | Mostra a consequência sem executá-la. A resposta tem o mesmo formato, {operation, dry_run, reversible, restore_path, consequence, affects}, mas nada é gravado e nenhum evento é emitido. Mostre consequence a uma pessoa antes de agir. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Uma chave que você gera para esta intenção. Uma repetição com a mesma chave e o mesmo corpo retorna a primeira resposta sem um segundo efeito colateral e traz Idempotency-Replayed: true. As chaves são mantidas por 24 horas. A mesma chave com um corpo diferente é 409 idempotency_key_payload_mismatch; uma repetição enquanto a primeira chamada ainda está em execução recebe 409 idempotency_in_progress por até 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Objeto DryRunPreview
O que a chamada responde com ?dry_run=true: a consequência, sem executá-la. Nada é gravado e nenhum evento é emitido.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| operation | string | Obrigatório | A operação que seria executada. |
| dry_run | boolean | Obrigatório | Sempre true. |
| reversible | boolean | Obrigatório | Se a operação pode ser desfeita. |
| restore_path | string | null | Obrigatório | O caminho que a desfaria, ou null quando não há nenhum. |
| consequence | string | Obrigatório | Uma frase para mostrar a uma pessoa antes de agir. Descreve o efeito em cascata em vez de resumi-lo. |
| affects | object | Obrigatório | O que a operação afetaria, como contagens (inteiros) por tipo. |
| would_refuse | boolean | Opcional | Somente ao arquivar um estado do fluxo de trabalho: true quando a chamada real seria recusada. |
| refusal_code | string | Opcional | Somente ao arquivar um estado do fluxo de trabalho: o código de erro com que a chamada real responderia. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectMilestone | DryRunPreview | Obrigatório | Um objeto ProjectMilestone. Com ?dry_run=true, um objeto DryRunPreview no lugar. |
| open_task_count | integer | Opcional | Tarefas ainda abertas no marco. Concluir com tarefas abertas é permitido. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/complete/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestone-complete 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007 --dry-run{
"uuid": "00000000-0000-4000-8000-000000000007",
"name": "Beta launch",
"description": null,
"date": "2026-09-28",
"task_count": 12,
"is_archived": false,
"completed_at": null,
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z",
"open_task_count": 2
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Desfazer a conclusão do marco
Limpa a conclusão de um marco, para que volte a contar como aberto.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Uma chave que você gera para esta intenção. Uma repetição com a mesma chave e o mesmo corpo retorna a primeira resposta sem um segundo efeito colateral e traz Idempotency-Replayed: true. As chaves são mantidas por 24 horas. A mesma chave com um corpo diferente é 409 idempotency_key_payload_mismatch; uma repetição enquanto a primeira chamada ainda está em execução recebe 409 idempotency_in_progress por até 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectMilestone | Obrigatório | Um objeto ProjectMilestone. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/reopen/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestone-reopen 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Arquivar um projeto, em cascata para os seus quadros e as tarefas deles
Arquivar é a exclusão. Nada nesta API exclui um projeto definitivamente; as linhas permanecem para que identificadores, links e eventos continuem resolvendo.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| dry_run | boolean | Opcional | Mostra a consequência sem executá-la. A resposta tem o mesmo formato, {operation, dry_run, reversible, restore_path, consequence, affects}, mas nada é gravado e nenhum evento é emitido. Mostre consequence a uma pessoa antes de agir. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Uma chave que você gera para esta intenção. Uma repetição com a mesma chave e o mesmo corpo retorna a primeira resposta sem um segundo efeito colateral e traz Idempotency-Replayed: true. As chaves são mantidas por 24 horas. A mesma chave com um corpo diferente é 409 idempotency_key_payload_mismatch; uma repetição enquanto a primeira chamada ainda está em execução recebe 409 idempotency_in_progress por até 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | Project | DryRunPreview | Obrigatório | Um objeto Project. Com ?dry_run=true, um objeto DryRunPreview no lugar. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/archive/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project archive 00000000-0000-4000-8000-000000000001 --dry-runTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Restaurar um projeto arquivado
O inverso de arquivar, e o motivo pelo qual arquivar um projeto não é mais o único ato no Plan que uma pessoa não pode desfazer. Quadros e tarefas arquivados em cascata continuam arquivados: a restauração sobe na hierarquia, nunca desce, porque "restaurar tudo o que foi arquivado naquele momento" não consegue distinguir a cascata de um quadro que alguém arquivou de propósito antes. Traga-os de volta com POST …/boards/{board_id}/restore/. Restaurar consome uma vaga do direito de criação de projetos (arquivar libera uma) e responde 402 quando o plano não tem nenhuma disponível.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Uma chave que você gera para esta intenção. Uma repetição com a mesma chave e o mesmo corpo retorna a primeira resposta sem um segundo efeito colateral e traz Idempotency-Replayed: true. As chaves são mantidas por 24 horas. A mesma chave com um corpo diferente é 409 idempotency_key_payload_mismatch; uma repetição enquanto a primeira chamada ainda está em execução recebe 409 idempotency_in_progress por até 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | Project | Obrigatório | Um objeto Project. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para a sua organização (`plan_upgrade_required`), ou não há vaga de projeto livre (`task_projects_limit_reached`). |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/restore/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project restore 00000000-0000-4000-8000-000000000001Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Todos os marcos que quem visualiza pode ver, entre projetos
Todos os marcos que você pode ver entre projetos, em uma única chamada, para os marcadores de um roadmap. A visibilidade segue os projetos que você pode abrir. project__in restringe esse conjunto e nunca o amplia: um uuid desconhecido e o uuid de outra organização retornam um resultado vazio. As linhas trazem project como referência.
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
| project__in | string | Opcional | Uuids de projetos separados por vírgula; no máximo 50. Restringe o conjunto visível, nunca o amplia. |
| include_archived | string | Opcional | Incluir marcos retirados junto com os ativos. |
Objeto OrganizationMilestone
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string | Obrigatório | Identificador público estável. |
| name | string | Obrigatório | Nome de exibição. |
| description | string | null | Opcional | Descrição livre. |
| date | string | Obrigatório | A data do marco. |
| task_count | integer | Opcional | Número de tarefas ativas. |
| attachment_count | integer | Opcional | Anexos prontos deste marco. Referencie-os na description com marcadores attachment:{uuid} e liste-os em …/milestones/{milestone_id}/attachments/. |
| is_archived | boolean | Opcional | Se a linha está arquivada. Arquivar é a exclusão: linhas arquivadas continuam legíveis e restauráveis. |
| project | object | Obrigatório | O projeto. Um objeto de referência. |
| created_at | string | Opcional | Quando a linha foi criada. |
| updated_at | string | Opcional | Quando a linha mudou pela última vez. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<OrganizationMilestone> | Obrigatório | As linhas desta página. Veja OrganizationMilestone. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
curl -sS "https://api.dailybot.com/v1/plan/milestones/?project__in=00000000-0000-4000-8000-000000000001" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestones{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000007",
"name": "Beta launch",
"description": null,
"date": "example",
"task_count": 12,
"is_archived": false,
"project": {},
"created_at": "example",
"updated_at": "example"
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
As visualizações salvas desta pessoa dentro de um projeto
Suas visualizações salvas dentro de um projeto: conjuntos de filtros nomeados que abrangem todos os quadros dele. As visualizações são pessoais e têm escopo por projeto, então o mesmo nome pode existir em dois projetos. Exige uma pessoa: keys de agente e da organização são recusadas; uma API key pessoal funciona.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Objeto SavedView
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Obrigatório | Nome de exibição. Máx. 64 caracteres. |
| view_mode | enum | Opcional | Como o conjunto filtrado é desenhado. As leituras sempre retornam board para o layout kanban. Um de list, board, timeline, calendar. |
| group_by | enum | Opcional | A dimensão de agrupamento. Um de state, owner, priority, category. |
| sort | string | Opcional | Uma chave de ordenação, com prefixo - para ordem decrescente. |
| filters | object | Obrigatório | Os filtros da visualização, na gramática compartilhada de filtros de tarefas. |
| schema_version | integer | Opcional | Versão do formato salvo da visualização. |
| visibility | enum | Opcional | personal (padrão) é só sua. shared e board_default (a visualização padrão desse quadro ou projeto) podem ser lidas por todos que veem o quadro ou o projeto. Defini-las exige quem administra o quadro nas visualizações de quadro, e supervisão do projeto (um administrador da organização ou quem gerencia todos os seus times) nas visualizações de projeto; caso contrário, 403 view_visibility_forbidden. Um de personal, shared, board_default. |
| collapsed | object | array | string | number | boolean | Opcional | Estado da interface do cliente salvo como está (quais grupos estão recolhidos). Só o tamanho e a profundidade são validados. |
| columns | object | array | string | number | boolean | Opcional | Estado da interface do cliente salvo como está (quais colunas são exibidas). Só o tamanho e a profundidade são validados. |
| uuid | uuid | Opcional | Identificador público estável. |
| scope | enum | Opcional | A qual contêiner a visualização pertence: board ou project. Somente leitura. Um de board, project. |
| board | uuid | null | Opcional | O uuid do quadro quando scope é board; null para uma visualização de projeto. Somente leitura. |
| owner | object | Opcional | Quem é dono da visualização. Formato: {uuid, name}. |
| created_at | date-time | Opcional | Quando a linha foi criada. |
| updated_at | date-time | Opcional | Quando a linha mudou pela última vez. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<SavedView> | Obrigatório | As linhas desta página. Veja SavedView. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
| 429 | Limite de requisições atingido. Aguarde os segundos indicados em `Retry-After`. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/views/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project views 00000000-0000-4000-8000-000000000001 --etag{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"name": "My open work",
"view_mode": "list",
"group_by": "state",
"sort": "-updated_at",
"filters": {},
"schema_version": 1,
"visibility": "personal",
"collapsed": {},
"columns": {}
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Substituir as visualizações salvas desta pessoa em um projeto
Substitui todo o seu array de visualizações salvas do projeto. If-Match é obrigatório, pelo mesmo motivo das visualizações de quadro.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| If-Match | string | Obrigatório | O ETag que você recebeu de GET .../views/, entre aspas. Obrigatório, porque este PUT substitui o array inteiro: sem uma precondição, dois salvamentos simultâneos descartam silenciosamente a visualização um do outro. Um validador desatualizado é 412 precondition_failed; um ausente é 428 precondition_required. |
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | array<SavedView> | Obrigatório | Um array JSON de objetos SavedView. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
| 412 | O validador `If-Match` está desatualizado (`precondition_failed`). Leia de novo e tente outra vez. |
| 428 | `If-Match` é obrigatório (`precondition_required`). |
| 429 | Limite de requisições atingido. Aguarde os segundos indicados em `Retry-After`. |
curl -sS -X PUT "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/views/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "If-Match: $VIEWS_ETAG" \
-H "Content-Type: application/json" \
-d '[
{
"name": "Overdue",
"view_mode": "list",
"filters": {
"due_before": "2026-09-25",
"state": [
"open"
]
}
}
]'dailybot plan project view save 00000000-0000-4000-8000-000000000001 -f views.json --fetch-etag[
{
"name": "My open work",
"view_mode": "list",
"group_by": "state",
"sort": "-updated_at",
"filters": {},
"schema_version": 1,
"visibility": "personal",
"collapsed": {},
"columns": {}
}
]Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Membros de um projeto
Visível para qualquer pessoa que possa ver o projeto. Em um projeto members, esta é a associação que dá acesso ao projeto e aos seus quadros.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
Objeto BoardMember
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| subject_type | enum | Obrigatório | Um de user, team. |
| user_uuid | uuid | null | Opcional | O uuid de usuário da pessoa. |
| uuid | uuid | null | Opcional | Identificador público estável. |
| full_name | string | Opcional | — |
| name | string | Opcional | Nome de exibição. |
| role | enum | null | Opcional | Papel do participante. Um de admin, member, guest. |
| team_uuid | uuid | null | Opcional | O uuid de um time, em vez de user_uuid. Cria uma única permissão de time viva: quem entrar no time depois fica dentro, e quem sair fica fora. |
| team_name | string | Opcional | — |
| added_at | date-time | Obrigatório | — |
| added_by_uuid | uuid | null | Opcional | — |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<BoardMember> | Obrigatório | As linhas desta página. Veja BoardMember. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project members 00000000-0000-4000-8000-000000000001{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"subject_type": "user",
"user_uuid": "00000000-0000-4000-8000-00000000000c",
"uuid": "00000000-0000-4000-8000-00000000000c",
"full_name": "Ada L.",
"name": "Ada L.",
"role": "admin",
"team_uuid": null,
"team_name": "example",
"added_at": "2026-09-25T10:14:02Z",
"added_by_uuid": null
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Convidar alguém, ou uma equipe inteira, para um projeto
Dá acesso ao projeto a uma pessoa (user_uuid) ou a um time (team_uuid): envie exatamente um dos dois; os dois ou nenhum é 400 invalid_filter_value. Uma permissão de time é viva: quem entrar no time depois fica dentro, e quem sair fica fora. Todo membro não convidado pode chamá-lo (com uma sessão iniciada ou uma API key pessoal); uma key de agente ou da organização recebe 403 insufficient_scope.
Grava um evento project.member_added com actor_is_self, para que os membros do projeto possam distinguir um convite de alguém que entrou por conta própria.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| user_uuid | uuid | Opcional | O uuid de usuário da pessoa. |
| team_uuid | uuid | Opcional | O uuid de um time, em vez de user_uuid. Cria uma única permissão de time viva: quem entrar no time depois fica dentro, e quem sair fica fora. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | BoardMember | Obrigatório | Um objeto BoardMember. |
Erros
| Status | Quando |
|---|---|
| 400 | Envie exatamente um de `user_uuid` e `team_uuid`; os dois ou nenhum é `invalid_filter_value`. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user_uuid": "00000000-0000-4000-8000-00000000000c"
}'dailybot plan project member add 00000000-0000-4000-8000-000000000001 --user 00000000-0000-4000-8000-00000000000cTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Remover alguém de um projeto
Remove a permissão explícita de uma pessoa no projeto. Todo membro não convidado pode chamá-lo (com uma sessão iniciada ou uma API key pessoal); uma key de agente ou da organização não pode.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| user_id | string | Obrigatório | O uuid de usuário do membro. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Autenticado, mas sem permissão: falta o scope (`insufficient_scope`, que é também o que uma key de agente ou da organização recebe em uma operação que exige uma pessoa, e o que uma key pessoal recebe quando seus scopes de Plan explícitos não cobrem o endpoint) ou é uma conta de convidado (`guest_not_allowed`). |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/00000000-0000-4000-8000-00000000000c/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project member remove 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-00000000000c --yesTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Inspecionar uma concessão de associação a um projeto (o papel é somente leitura)
A associação a projetos não tem coluna de papel: papéis da organização mais a visibilidade do projeto formam o modelo de acesso. Enviar role retorna 400. Um PATCH vazio retorna a linha de concessão atual.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| user_id | string | Obrigatório | O uuid de usuário do membro. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | BoardMember | Obrigatório | Um objeto BoardMember. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou, ou um valor de filtro, ordenação ou `include` não foi reconhecido. O `code` da resposta indica qual. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | Não encontrado ou não visível para você. Os dois casos retornam o mesmo corpo. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/00000000-0000-4000-8000-00000000000c/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
/v1/plan/projects/{project_id}/attachments/BetaChave de APICLI AuthPaginação por número de páginaListar os anexos de um projeto
Os anexos do projeto, ordenados por posição. Qualquer pessoa que possa ver o projeto pode listar os anexos; um projeto que você não pode ver é 404. Cada url é um link de download. Não o guarde: mantenha o uuid do anexo e leia de novo quando precisar do arquivo. Para mostrar uma imagem na descrição do projeto, referencie-a como attachment:{uuid} e resolva-a ao renderizar com o url recente desta lista.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
Objeto TaskAttachment
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | uuid | Obrigatório | Identificador público estável. |
| filename | string | Obrigatório | Nome do arquivo. |
| content_type | string | Obrigatório | Tipo MIME. |
| size | integer | Obrigatório | Tamanho em bytes. |
| url | string | Obrigatório | Onde baixar o arquivo. |
| thumbnail_url | uri | null | Opcional | Miniatura para imagens. |
| width | integer | null | Opcional | — |
| height | integer | null | Opcional | — |
| status | enum | Obrigatório | Status atual. Um de pending, ready, scanning, rejected. |
| uploaded_by | ActorRef | null | Opcional | Quem enviou o arquivo. Veja ActorRef. |
| executed_by_agent | object | null | Opcional | O agente que executou isto em nome da pessoa, ou null quando nenhum foi nomeado: um objeto com uuid, name, username e avatar. A pessoa do campo de autor continua sendo a autora; o agente é mostrado como quem executou. |
| created_at | date-time | Obrigatório | Quando a linha foi criada. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<TaskAttachment> | Obrigatório | As linhas desta página. Veja TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project attachments 00000000-0000-4000-8000-000000000001 --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "screenshot.png",
"content_type": "image/png",
"size": 1,
"url": "https://your.app/files/screenshot.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"created_at": "2026-09-25T10:14:02Z"
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Enviar um anexo para um projeto
Anexa um arquivo a um projeto. Envie multipart/form-data com o campo file e um caption opcional; aqui não há fluxo de pré-assinatura. O limite é de 5 MiB em todos os ambientes: um arquivo maior é 400 attachment_too_large, com extra.max_size_bytes. O tipo de arquivo é verificado pelo conteúdo contra a mesma lista dos anexos de tarefas (attachment_invalid_type). Um projeto aceita no máximo 50 anexos (attachment_limit_reached).
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| file | binary | Obrigatório | O arquivo a enviar (máximo de 5 MiB por esta via). |
| caption | string | Opcional | Legenda opcional. Máximo de 255 caracteres. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 400 | O arquivo está ausente, é grande demais (`attachment_too_large`, acima de 5 MiB), tem um tipo não aceito (`attachment_invalid_type`) ou o limite de 50 foi atingido (`attachment_limit_reached`). `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Você não age como membro não convidado com uma sessão iniciada ou uma API key pessoal (`insufficient_scope`); uma key de agente ou da organização sempre recebe isto. |
| 404 | O projeto ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-F "file=@./screenshot.png" \
-F "caption=Staging dashboard"dailybot plan project attach 00000000-0000-4000-8000-000000000001 ./plan.pdf --caption "Launch plan"Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Baixar os bytes de um anexo de um projeto
Transmite o arquivo com o tipo de conteúdo registrado no envio, X-Content-Type-Options: nosniff e Cache-Control: no-store. Nunca redireciona para o armazenamento. Qualquer pessoa que possa ver o projeto pode baixá-lo.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/00000000-0000-4000-8000-000000000009/content/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project attachment get 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000009 -o ./plan.pdfTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Remover um anexo de um projeto
Remove o anexo do projeto.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Você não age como membro não convidado com uma sessão iniciada ou uma API key pessoal (`insufficient_scope`); uma key de agente ou da organização sempre recebe isto. |
| 404 | O projeto ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project attachment delete 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000009 --yesTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
Restaurar um marco retirado
Traz de volta um marco retirado. É o inverso de retirar um marco com DELETE. Idempotente: um marco que não está retirado é devolvido sem alterações. Envie um Idempotency-Key para repetir com segurança.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectMilestone | Obrigatório | Um objeto ProjectMilestone. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | A credencial não pode escrever no Plan (`insufficient_scope`), ou quem chama é convidado (`guest_not_allowed`). |
| 404 | O projeto ou o marco não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/restore/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/BetaChave de APICLI AuthPaginação por número de páginaListar os anexos do marco
Os anexos prontos do marco, ordenados por posição. Qualquer pessoa que possa ver o projeto pode listá-los; um projeto que você não pode ver é 404. Cada url é um link de download. Não o guarde: mantenha o uuid do anexo e leia de novo quando precisar do arquivo. Referencie-o na description do marco com um marcador attachment:{uuid} e resolva-o com GET /v1/plan/attachments/resolve/ ao renderizar.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
Objeto TaskAttachment
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | uuid | Obrigatório | Identificador público estável. |
| filename | string | Obrigatório | Nome do arquivo. |
| content_type | string | Obrigatório | Tipo MIME. |
| size | integer | Obrigatório | Tamanho em bytes. |
| url | string | Obrigatório | Onde baixar o arquivo. |
| thumbnail_url | uri | null | Opcional | Miniatura para imagens. |
| width | integer | null | Opcional | — |
| height | integer | null | Opcional | — |
| status | enum | Obrigatório | Status atual. Um de pending, ready, scanning, rejected. |
| uploaded_by | ActorRef | null | Opcional | Quem enviou o arquivo. Veja ActorRef. |
| executed_by_agent | object | null | Opcional | O agente que executou isto em nome da pessoa, ou null quando nenhum foi nomeado: um objeto com uuid, name, username e avatar. A pessoa do campo de autor continua sendo a autora; o agente é mostrado como quem executou. |
| created_at | date-time | Obrigatório | Quando a linha foi criada. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<TaskAttachment> | Obrigatório | As linhas desta página. Veja TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou o marco não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Enviar um anexo do marco
Anexa um arquivo do marco. Envie multipart/form-data com o campo file e uma caption opcional; aqui não há fluxo de pré-assinatura. O limite é de 5 MiB: um arquivo maior é 400 attachment_too_large, com extra.max_size_bytes. O tipo de arquivo é verificado pelo conteúdo contra a mesma lista dos anexos de projetos (attachment_invalid_type). Anexar segue as regras de escrita do próprio marco. Referencie-o na description do marco com um marcador attachment:{uuid} e resolva-o com GET /v1/plan/attachments/resolve/ ao renderizar.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| file | binary | Obrigatório | O arquivo a enviar (máximo de 5 MiB por esta via). |
| caption | string | Opcional | Legenda opcional. Máximo de 255 caracteres. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 400 | O arquivo está ausente, é grande demais (`attachment_too_large`, acima de 5 MiB), tem um tipo não aceito (`attachment_invalid_type`) ou o limite de 50 foi atingido (`attachment_limit_reached`). `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | A credencial não pode escrever no Plan (`insufficient_scope`), ou quem chama é convidado (`guest_not_allowed`). |
| 404 | O projeto ou o marco não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-F "[email protected]"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/BetaChave de APICLI AuthObter um anexo do marco
Um anexo do marco. Qualquer pessoa que possa ver o projeto pode lê-lo.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto, o marco ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/BetaChave de APICLI AuthRenomear um anexo do marco
Muda o nome do arquivo do anexo; o conteúdo não muda. As regras são as do próprio marco.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| filename | string | Obrigatório | O novo nome do arquivo. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome está ausente ou não é válido. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | A credencial não pode escrever no Plan (`insufficient_scope`), ou quem chama é convidado (`guest_not_allowed`). |
| 404 | O projeto, o marco ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename": "roadmap-v2.png"}'{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap-v2.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap-v2.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/BetaChave de APICLI AuthRemover um anexo do marco
Remove o anexo. As regras são as do próprio marco.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | A credencial não pode escrever no Plan (`insufficient_scope`), ou quem chama é convidado (`guest_not_allowed`). |
| 404 | O projeto, o marco ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/content/BetaChave de APICLI AuthBaixar os bytes de um anexo do marco
Transmite o arquivo com o tipo de conteúdo registrado no envio, X-Content-Type-Options: nosniff e Cache-Control: no-store. Nunca redireciona para o armazenamento. Qualquer pessoa que possa ver o projeto pode baixá-lo.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| milestone_id | string | Obrigatório | O uuid do marco. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto, o marco ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
| 409 | O anexo ainda não está pronto (`attachment_not_ready`). |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/content/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" -o roadmap.pngTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Obter uma atualização de projeto
Uma nota de status, com seus attachments prontos incluídos, provenance, edited_at (nulo até a primeira edição) e executed_by_agent.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectUpdate | Obrigatório | Um objeto ProjectUpdate. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"uuid": "00000000-0000-4000-8000-00000000000a",
"project": "00000000-0000-4000-8000-000000000001",
"body": "Staging is green; rolling out Friday.",
"body_html": "<p>Staging is green; rolling out Friday.</p>",
"mentions": [],
"health": "on_track",
"created_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"provenance": "typed",
"edited_at": null,
"attachments": [],
"created_at": "2026-09-29T10:14:02Z",
"updated_at": "2026-09-29T10:14:02Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Editar uma atualização de projeto
Altera body e/ou health (null o limpa) e marca edited_at. Somente a pessoa autora pode editar (403 update_not_author). created_by e o executed_by_agent original nunca mudam; uma edição feita com uma API key, ou marcada com um agente, deixa provenance como agent_authored. Para colocar imagens no texto, envie-as aos anexos da atualização e adicione marcadores attachment:{uuid} ao body. Envie If-Match ou um version no corpo para não sobrescrever uma edição concorrente.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| body | string | Opcional | Markdown. Máx. 20000 caracteres. |
| health | enum | null | Opcional | Saúde declarada. Um de not_set, on_track, at_risk, off_track. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectUpdate | Obrigatório | Um objeto ProjectUpdate. |
Erros
| Status | Quando |
|---|---|
| 400 | O corpo está vazio ou é longo demais (`update_body_too_long`), ou `health` não é válido. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Somente a pessoa autora da atualização pode fazer isto (`update_not_author`). |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body": "Staging is green; rolling out Friday.", "health": "on_track"}'{
"uuid": "00000000-0000-4000-8000-00000000000a",
"project": "00000000-0000-4000-8000-000000000001",
"body": "Staging is green; rolling out Friday.",
"body_html": "<p>Staging is green; rolling out Friday.</p>",
"mentions": [],
"health": "on_track",
"created_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"provenance": "typed",
"edited_at": "2026-09-29T11:02:00Z",
"attachments": [],
"created_at": "2026-09-29T10:14:02Z",
"updated_at": "2026-09-29T11:02:00Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Excluir uma atualização de projeto
Exclui a atualização e seus anexos; um arquivo armazenado é apagado quando mais nada o referencia. A pessoa autora ou um administrador da organização pode excluí-la (403 update_not_author para qualquer outra pessoa).
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Somente a pessoa autora da atualização pode fazer isto (`update_not_author`). |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/BetaChave de APICLI AuthPaginação por número de páginaListar os anexos da atualização
Os anexos prontos da atualização, ordenados por posição. Qualquer pessoa que possa ver o projeto pode listá-los; um projeto que você não pode ver é 404. Cada url é um link de download. Não o guarde: mantenha o uuid do anexo e leia de novo quando precisar do arquivo. Referencie-o na body da atualização com um marcador attachment:{uuid} e resolva-o com GET /v1/plan/attachments/resolve/ ao renderizar.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
Objeto TaskAttachment
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | uuid | Obrigatório | Identificador público estável. |
| filename | string | Obrigatório | Nome do arquivo. |
| content_type | string | Obrigatório | Tipo MIME. |
| size | integer | Obrigatório | Tamanho em bytes. |
| url | string | Obrigatório | Onde baixar o arquivo. |
| thumbnail_url | uri | null | Opcional | Miniatura para imagens. |
| width | integer | null | Opcional | — |
| height | integer | null | Opcional | — |
| status | enum | Obrigatório | Status atual. Um de pending, ready, scanning, rejected. |
| uploaded_by | ActorRef | null | Opcional | Quem enviou o arquivo. Veja ActorRef. |
| executed_by_agent | object | null | Opcional | O agente que executou isto em nome da pessoa, ou null quando nenhum foi nomeado: um objeto com uuid, name, username e avatar. A pessoa do campo de autor continua sendo a autora; o agente é mostrado como quem executou. |
| created_at | date-time | Obrigatório | Quando a linha foi criada. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<TaskAttachment> | Obrigatório | As linhas desta página. Veja TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}
]
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Enviar um anexo da atualização
Anexa um arquivo da atualização. Envie multipart/form-data com o campo file e uma caption opcional; aqui não há fluxo de pré-assinatura. O limite é de 5 MiB: um arquivo maior é 400 attachment_too_large, com extra.max_size_bytes. O tipo de arquivo é verificado pelo conteúdo contra a mesma lista dos anexos de projetos (attachment_invalid_type). Somente a pessoa autora da atualização pode anexar (403 update_not_author). Envie primeiro e depois adicione o marcador ao body da atualização com um PATCH. Referencie-o na body da atualização com um marcador attachment:{uuid} e resolva-o com GET /v1/plan/attachments/resolve/ ao renderizar.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| file | binary | Obrigatório | O arquivo a enviar (máximo de 5 MiB por esta via). |
| caption | string | Opcional | Legenda opcional. Máximo de 255 caracteres. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 400 | O arquivo está ausente, é grande demais (`attachment_too_large`, acima de 5 MiB), tem um tipo não aceito (`attachment_invalid_type`) ou o limite de 50 foi atingido (`attachment_limit_reached`). `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Somente a pessoa autora da atualização pode fazer isto (`update_not_author`). |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-F "[email protected]"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/BetaChave de APICLI AuthObter um anexo da atualização
Um anexo da atualização. Qualquer pessoa que possa ver o projeto pode lê-lo.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto, a atualização ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/BetaChave de APICLI AuthRenomear um anexo da atualização
Muda o nome do arquivo do anexo; o conteúdo não muda. Somente a pessoa autora da atualização pode renomeá-lo (403 update_not_author).
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| filename | string | Obrigatório | O novo nome do arquivo. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome está ausente ou não é válido. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Somente a pessoa autora da atualização pode fazer isto (`update_not_author`). |
| 404 | O projeto, a atualização ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename": "roadmap-v2.png"}'{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap-v2.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap-v2.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/BetaChave de APICLI AuthRemover um anexo da atualização
Remove o anexo. A pessoa autora da atualização pode removê-lo, e também um administrador da organização (403 update_not_author para qualquer outra pessoa).
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Erros
| Status | Quando |
|---|---|
| 400 | O nome do agente não é válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Somente a pessoa autora da atualização pode fazer isto (`update_not_author`). |
| 404 | O projeto, a atualização ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/content/BetaChave de APICLI AuthBaixar os bytes de um anexo da atualização
Transmite o arquivo com o tipo de conteúdo registrado no envio, X-Content-Type-Options: nosniff e Cache-Control: no-store. Nunca redireciona para o armazenamento. Qualquer pessoa que possa ver o projeto pode baixá-lo.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
| attachment_id | string | Obrigatório | O uuid do anexo. |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto, a atualização ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
| 409 | O anexo ainda não está pronto (`attachment_not_ready`). |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/content/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" -o roadmap.pngTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Renomear um anexo do projeto
Muda o nome de exibição do arquivo; os bytes guardados não mudam. As regras são as do contêiner: somente administradores da organização.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| attachment_id | uuid | Obrigatório | O uuid do anexo. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| filename | string | Obrigatório | O novo nome do arquivo (1–255 caracteres). Os bytes guardados não mudam. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | TaskAttachment | Obrigatório | Um objeto TaskAttachment. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou; o `code` da resposta indica qual campo. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 403 | Você não é administrador da organização (`insufficient_scope`), ou é convidado (`guest_not_allowed`). Uma key de agente ou da organização também é recusada aqui. |
| 404 | O item pai ou o anexo não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filename": "spec-v2.pdf"
}'dailybot plan project attachments rename 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000009 spec-v2.pdfTestar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:admin` — escritas em contêineres. Um membro não convidado pode chamá-lo com uma sessão iniciada ou uma API key pessoal (uma key com scopes de Plan explícitos precisa de `tasks:write`, que o cobre); uma key de agente ou da organização recebe `403 insufficient_scope`.
- Limite de requisições: 60 escritas por minuto por ator.
- Exige uma pessoa: chame com uma sessão iniciada, um token de usuário da CLI ou uma API key pessoal. Uma key de agente ou da organização recebe `403 insufficient_scope`.
/v1/plan/projects/{project_id}/updates/{update_id}/reactions/BetaChave de APICLI AuthPaginação por número de páginaListar quem reagiu a uma atualização do projeto
Todos os que reagiram à atualização, do mais antigo ao mais recente, como uma página. emoji restringe a um único emoji. O mesmo formato da lista de reações de um comentário.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | Opcional | Número da página, começando em 1. |
| page_size | integer | Opcional | Linhas por página. Padrão 50, máximo 100. Valores fora do intervalo são ajustados, nunca rejeitados: pedir 500 retorna 100. |
| emoji | string | Opcional | Um emoji; todos os emojis quando omitido. A mesma regra das escritas: qualquer outra coisa é 400 reaction_invalid_emoji. |
Objeto Reactor
Objeto ActorRef
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| count | integer | Obrigatório | Número total de linhas. |
| next | uri | Obrigatório | URL da próxima página, ou null. |
| previous | uri | Obrigatório | URL da página anterior, ou null. |
| results | array<Reactor> | Obrigatório | A página de objetos Reactor. |
Erros
| Status | Quando |
|---|---|
| 400 | `emoji` não é um único emoji (`reaction_invalid_emoji`), ou um valor de paginação não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/updates/00000000-0000-4000-8000-000000000007/reactions/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project update reactions 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000007Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:read`.
- Limite de requisições: 120 leituras por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Adicionar uma reação com emoji a uma atualização do projeto (idempotente)
Adiciona a sua reação emoji à atualização; adicioná-la de novo não muda nada. As mesmas regras das reações a comentários: um emoji, uma reação por pessoa por emoji, e uma pessoa por trás da credencial. Uma pessoa tem no máximo 20 emojis diferentes em uma atualização (400 reaction_limit_reached, extra.limit). A resposta é a atualização inteira com as reações.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Corpo da requisição
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| emoji | string | Obrigatório | O emoji. Máx. 32 caracteres. |
| agent_name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa (máx. 128 caracteres, vazio significa sem agente). Tem prioridade sobre o header X-Dailybot-Agent-Name. Veja Atribuição de agente. |
Resposta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| (body) | ProjectUpdate | Obrigatório | Um objeto ProjectUpdate. |
Erros
| Status | Quando |
|---|---|
| 400 | Não é um único emoji (`reaction_invalid_emoji`), uma key de agente ou da organização (`actor_required`), emojis diferentes demais seus nesta atualização (`reaction_limit_reached`), ou um nome de agente inválido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/updates/00000000-0000-4000-8000-000000000007/reactions/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emoji": "👍"
}'dailybot plan project update react 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000007 👍Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Remover a reação com emoji de quem chama de uma atualização do projeto
Remove a sua reação com este emoji da atualização. Responde 204 mesmo quando a reação já não estava lá.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | string | Obrigatório | O uuid do projeto. |
| update_id | string | Obrigatório | O uuid da atualização. |
| emoji | string | Obrigatório | O emoji, em percent-encoding (UTF-8). |
Cabeçalhos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | O nome do agente que executou esta escrita em nome da pessoa. Use-o em escritas multipart e sem corpo (DELETE, arquivar, restaurar); em escritas JSON envie o campo agent_name do corpo, que vence se os dois vierem. Codifique o valor em percent-encoding (UTF-8). Caracteres de controle são removidos; um valor em branco significa sem agente. Mais de 128 caracteres, ou um valor que não pode ser decodificado, é 400 invalid_agent_attribution (nunca é truncado). Uma chave do tipo agente, que não está ligada a uma pessoa, recebe 400 invalid_agent_attribution se enviá-lo. O selo nunca altera uma resposta de permissão. Veja Atribuição de agente. |
Erros
| Status | Quando |
|---|---|
| 400 | A validação falhou; o `code` da resposta indica qual campo. `invalid_agent_attribution` significa que o nome do agente não é válido. |
| 401 | Credencial ausente, expirada ou malformada (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | O Plan ainda não está habilitado para sua organização (`plan_upgrade_required`). É o esperado durante a Beta: escreva para [email protected]. |
| 404 | O projeto ou a atualização não existe ou você não pode vê-lo (`not_found`), nunca um 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/updates/00000000-0000-4000-8000-000000000007/reactions/%F0%9F%91%8D/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project update unreact 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000007 👍Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Scope: `tasks:write`.
- Limite de requisições: 60 escritas por minuto por ator.
- Funciona com uma sessão iniciada, um token de usuário da CLI, uma API key pessoal, ou uma key de agente ou da organização. Uma key pessoal vê o que sua pessoa vê; uma key de agente ou da organização atua como um ator de sistema e vê apenas quadros visíveis para a organização.
Esta página é a referência de Plan · Projetos. Todos os endpoints ficam em https://api.dailybot.com/v1/plan/ e respondem JSON.
Autentique com uma sessão iniciada ou um token de usuário da CLI (Authorization: Bearer …), ou com uma API key (X-API-KEY). Uma API key pessoal age como sua pessoa e pode fazer tudo o que essa pessoa pode fazer no Dailybot; uma key de agente ou da organização nunca age como uma pessoa e é recusada nos endpoints que exigem uma. Em um endpoint, o selo API key significa que uma key de agente ou da organização também é aceita. Veja Autenticação do Plan, Autenticação e Erros para as regras comuns a todas as APIs do Dailybot.
Se é sua primeira vez com o Plan, leia a visão geral para entender o modelo: projetos, quadros, estados, chaves, ordem, versões e arquivamento.