Erros do Plan
Todos os códigos de erro que a API do Dailybot Plan (Beta) retorna, com o status HTTP, o que significam e o que fazer em seguida, incluindo o 402 durante a Beta.
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].
Todo erro do Plan responde com um status HTTP e um corpo JSON. Decida pelo code, feito para máquinas, nunca pelo detail, feito para pessoas:
{
"detail": "This task changed since you loaded it.",
"code": "version_conflict",
"extra": { "current_version": 9 }
}
Já os erros de validação no corpo de uma requisição respondem 400 com um mapa de mensagens por campo e sem a chave code. Por exemplo, um quadro criado sem o seu projeto:
{ "project": ["This field is required."] }
Procure code primeiro; se não existir, leia o mapa de campos. As regras compartilhadas por todas as APIs do Dailybot, incluindo as novas tentativas, estão em Erros.
Durante a Beta, o 402 é esperado
Até que sua organização seja habilitada na Beta do Plan, todos os endpoints do Plan respondem 402 plan_upgrade_required, seja qual for a credencial que você usar. Isso é esperado, não é um bug: escreva para [email protected] para participar. GET /v1/plan/entitlements/ é o único endpoint do Plan que nunca responde 402, então você pode consultar o estado antes.
402 e 503 significam coisas diferentes
| Resposta | Significado | Leituras | Escritas |
|---|---|---|---|
402 plan_upgrade_required |
O Plan não está habilitado para sua organização (uma questão de plano ou da Beta) | Recusadas | Recusadas |
503 feature_temporarily_read_only |
O Plan está temporariamente somente leitura durante um incidente | Continuam funcionando | Recusadas, tente de novo mais tarde |
Trate os dois separadamente. Um 503 nunca significa que você perdeu o acesso: as leituras continuam funcionando para que você sempre possa exportar seu trabalho.
O 404 nunca revela o que existe
Uma tarefa, quadro ou projeto que não existe e um que pertence a outra organização retornam o mesmo corpo 404. Os filtros se comportam da mesma forma: uma chave de quadro que não corresponde a nada seu simplesmente não encontra nada.
Todos os códigos
400 Bad Request: a requisição não pôde ser aceita como foi enviada
| Código | Status | Significado | O que fazer |
|---|---|---|---|
actor_required |
400 | A chamada precisa de uma pessoa, mas a credencial é uma key de agente ou da organização (por exemplo, owner=me). |
Use uma sessão iniciada ou uma API key pessoal, ou envie o uuid de um usuário em vez de me. |
attachment_invalid_type |
400 | Esse tipo de arquivo não é compatível. São aceitos imagens PNG, JPEG, GIF e WebP; PDF; texto simples e Markdown; ZIP; e arquivos do Word, Excel e PowerPoint. O servidor verifica o conteúdo real do arquivo, não só o tipo declarado. | Envie um arquivo de um tipo compatível. |
attachment_limit_reached |
400 | A tarefa, o comentário, a meta ou o projeto já tem 50 anexos, o máximo. | Remova um anexo antes de adicionar outro. |
attachment_too_large |
400 | O arquivo é maior que o permitido: 25 MiB com uploads pré-assinados de tarefas, 5 MiB em uma única requisição multipart (a única forma de anexar a um comentário, meta ou projeto) ou em servidores sem armazenamento de objetos. extra.max_size_bytes indica o limite. |
Em uma tarefa, use presign → upload → confirmação; caso contrário, envie um arquivo menor. |
channel_not_found |
400 | Um id de canal que a plataforma conectada não conhece, ou um canal privado onde é exigido um público (extra.parameter: "channel"). |
Escolha um external_id de GET /v1/plan/channels/ (type=channel para um destino pessoal). |
comment_body_too_long |
400 | O comentário passa de 10.000 caracteres. | Encurte o texto ou divida em vários comentários. |
delta_window_expired |
400 | O cursor delta tem mais de 7 dias. | Leia o snapshot do quadro de novo e continue a partir do delta_cursor dele. |
description_too_long |
400 | A descrição da tarefa passa de 50.000 caracteres. | Encurte a descrição ou passe os detalhes para um anexo. |
favorite_limit_reached |
400 | Você já tem 50 favoritos. | Desafixe um antes de fixar outro. |
idempotency_key_required |
400 | Uma chamada em lote foi enviada sem Idempotency-Key. |
Adicione o header; operações em lote sempre exigem esse header. |
invalid_agent_attribution |
400 | O nome do agente passa de 128 caracteres, usa caracteres fora de letras, números, espaços e . - _ ( ) ' # + / & , :, pertence a um agente desativado, ou o valor de X-Dailybot-Agent-Name não pode ser decodificado como UTF-8 codificado em percent-encoding; ou uma key do tipo agente enviou um nome de agente. Nomes nunca são truncados. |
Encurte o nome e codifique o header com percent-encoding, ou remova o nome ao chamar com uma key de agente. Veja Convenções do Plan. |
invalid_date_range |
400 | Uma data ou um intervalo de datas está mal formatado (as datas são YYYY-MM-DD). |
Corrija o formato da data. |
invalid_filter_value |
400 | Não foi possível interpretar um filtro, um token de include ou um valor da consulta (por exemplo, state=overdue). extra.parameter indica qual. |
Corrija o valor; veja Convenções do Plan. |
invalid_idempotency_key |
400 | A Idempotency-Key não é uma chave válida (de 8 a 128 caracteres). |
Envie uma chave de 8 a 128 caracteres, por exemplo um UUID. |
invalid_label_filter |
400 | Um valor do filtro label não é um uuid de etiqueta, ou há mais de 50. |
Envie até 50 uuids de etiqueta. |
invalid_relation |
400 | O vínculo ou a referência não é válido. Por exemplo: uma tarefa relacionada a ela mesma ou a uma tarefa de outro espaço de trabalho, uma tarefa definida como sua própria tarefa pai, o limite de blocks da tarefa atingido, uma resposta a outra resposta (as conversas têm um só nível), uma resposta a um comentário de outra tarefa ou uma operação em lote desconhecida. detail indica qual. |
Leia detail e corrija a referência. |
invalid_schedule |
400 | Um campo do agendamento de um relatório ou do resumo é inválido: extra.parameter é weekdays, time, timezone, channel ou kind. |
Envie dias ISO 1–7 (exatamente um para um relatório semanal), HH:MM, um fuso horário IANA, e um canal ou destinatários de e-mail. |
invalid_sort |
400 | Esta lista não aceita o valor de sort. |
Use uma chave de ordenação documentada pelo endpoint. |
last_done_state |
400 | Um quadro precisa manter pelo menos uma coluna ativa na categoria done; arquivar ou mudar a categoria da última é recusado. |
Adicione outra coluna done primeiro. |
milestone_not_on_project |
400 | O marco pertence a um projeto diferente do projeto do quadro da tarefa. | Escolha um marco do projeto do quadro. |
move_board_state_invalid |
400 | Uma movimentação para outro quadro indicou um estado de destino (ou um mapa de estados) que não corresponde ao quadro de destino. | Envie um state do quadro de destino, ou um state_map válido. |
notification_routes_limit_reached |
400 | A organização já tem 10 rotas de canal (extra.limit). |
Apague ou reutilize uma rota. |
participant_cannot_access_board |
400 | A pessoa definida como responsável ou participante não consegue ver o quadro. | Dê acesso ao quadro primeiro, ou escolha alguém de …/mentionables/. |
platform_not_connected |
400 | A organização não tem uma plataforma de chat para publicar ou buscar canais. | Conecte primeiro o Slack, o Microsoft Teams, o Discord ou o Google Chat. |
reaction_invalid_emoji |
400 | A reação precisa ser um único emoji (no máximo 32 caracteres). | Envie um único emoji. |
reaction_limit_reached |
400 | Você já tem o máximo de emojis diferentes neste comentário ou atualização (extra.limit). |
Remova primeiro uma das suas reações. |
report_schedules_limit_reached |
400 | A organização já tem 10 relatórios agendados (extra.limit). |
Apague ou reutilize um relatório agendado. |
route_scope_not_org_visible |
400 | O escopo de uma rota ou relatório nomeia um quadro ou projeto só para membros (extra.uuids). Canais só recebem o que todo o espaço de trabalho pode ver. |
Remova esses uuids do escopo. |
search_query_too_long |
400 | O texto da busca passa de 256 caracteres. | Encurte a busca. |
search_query_too_short |
400 | O texto da busca tem menos de 2 caracteres. | Envie pelo menos 2 caracteres. |
state_not_on_board |
400 | O estado indicado não pertence ao quadro da tarefa. | Use um uuid de estado de GET …/boards/{board_id}/states/. |
states_reorder_invalid |
400 | A lista de reordenação não inclui cada coluna ativa exatamente uma vez. | Envie o uuid de cada estado ativo uma vez, na ordem. |
subtask_cross_board |
400 | Uma subtarefa precisa estar no mesmo quadro da tarefa pai. Também é retornado ao mover para outro quadro uma tarefa que ainda tem subtarefas ativas, ou que é ela mesma subtarefa de uma tarefa do quadro de origem. | Desvincule ou mova as subtarefas primeiro, ou mantenha a tarefa no quadro da tarefa pai. |
subtask_depth_exceeded |
400 | As subtarefas só se aninham em um nível. | Vincule a subtarefa a uma tarefa de primeiro nível. |
too_many_filter_values |
400 | Um filtro repetível tem mais de 50 valores (extra.limit informa o número exato). |
Envie menos valores por requisição. |
too_many_items |
400 | A chamada em lote tem mais de 100 itens. | Divida em chamadas de até 100 itens. |
unknown_field |
400 | Um campo do corpo que o endpoint não aceita (extra.parameter o nomeia). É recusado, nunca descartado em silêncio. |
Remova o campo. |
unknown_notification_kind |
400 | Um tipo de notificação que não está no catálogo (extra.parameter: "kind"). |
Use uma key de GET /v1/plan/notifications/catalog/: tipos pessoais para as suas chaves, tipos da organização para uma rota. |
update_body_too_long |
400 | A atualização do projeto passa de 20.000 caracteres (extra.max_length). |
Encurte a atualização. |
version_precondition_ambiguous |
400 | If-Match e o campo version do corpo foram enviados juntos, com valores diferentes. |
Envie só um dos dois. |
view_limit_reached |
400 | Você já tem 20 visualizações salvas pessoais neste quadro, o limite. | Exclua uma visualização antes de salvar outra. |
401 Unauthorized: a credencial está ausente ou não é válida
| Código | Status | Significado | O que fazer |
|---|---|---|---|
api_key_owner_inactive |
401 | A pessoa dona da API key foi desativada. | Crie uma chave para uma pessoa ativa. |
credential_absent |
401 | Nenhuma credencial foi enviada. | Envie Authorization: Bearer … ou X-API-KEY. |
credential_expired |
401 | A credencial expirou. | Entre de novo (dailybot login) ou use uma chave válida. |
credential_malformed |
401 | Não foi possível ler a credencial. | Confira o nome e o valor do header. |
invalid_credentials |
401 | A chave ou o token não existe. | Use uma credencial válida. |
plan_free_api_keys_forbidden |
401 | As API keys não estão disponíveis no plano gratuito. | Use um token de usuário da CLI, ou faça upgrade do plano. |
plan_missing_core_api_integrations |
401 | O plano da organização não inclui acesso à API. | Mude para um plano com acesso à API. |
402 Payment Required: o Plan não está habilitado, ou um limite do plano foi atingido
| Código | Status | Significado | O que fazer |
|---|---|---|---|
plan_upgrade_required |
402 | O Plan ainda não está habilitado para sua organização. Isso é esperado durante a Beta. (Um login da CLI no plano gratuito recebe 403 com o mesmo código.) |
Escreva para [email protected] para participar da Beta. GET /v1/plan/entitlements/ mostra o estado. |
task_boards_limit_reached |
402 | O limite do plano para quadros foi atingido (o plano gratuito inclui até 3 quadros). | Arquive um quadro para liberar uma vaga, ou faça upgrade. |
task_projects_limit_reached |
402 | O limite do plano para projetos foi atingido (o plano gratuito inclui 1 projeto). | Arquive um projeto para liberar uma vaga, ou faça upgrade. |
403 Forbidden: você entrou, mas não tem permissão
| Código | Status | Significado | O que fazer |
|---|---|---|---|
attachment_delete_forbidden |
403 | Só quem enviou o anexo ou quem administra a organização pode removê-lo; em um comentário, quem escreveu o comentário também pode. | Peça a quem enviou o anexo, a quem escreveu o comentário ou a quem administra a organização. |
comment_not_author |
403 | Só quem escreveu este comentário pode editá-lo, excluí-lo ou anexar arquivos a ele. | Peça a quem escreveu o comentário. |
guest_not_allowed |
403 | Contas de convidado não podem usar o Plan. | Use uma conta de membro. |
insufficient_scope |
403 | Falta à credencial o scope que este endpoint exige (tasks:read, tasks:write ou tasks:admin). A sessão iniciada e a API key pessoal de um membro não convidado podem chamar todos os endpoints, então isto significa que os scopes do Plan explícitos da linha da key não cobrem o endpoint, ou que uma key de agente ou da organização chamou um endpoint que exige uma pessoa. |
Use uma API key pessoal ou uma sessão iniciada, ou adicione à key o scope que falta. Veja Autenticação e scopes do Plan. |
task_archived |
403 | Uma tarefa arquivada não pode ser duplicada. | Restaure a tarefa primeiro e depois duplique. |
update_not_author |
403 | Somente a pessoa autora de uma atualização de projeto pode editá-la ou anexar arquivos a ela; a pessoa autora ou um administrador da organização pode excluí-la. | Peça a quem a escreveu, ou a um administrador da organização para excluir. |
view_visibility_forbidden |
403 | Só quem administra o quadro pode tornar uma visualização shared ou board_default, ou editá-la ou excluí-la. |
Mantenha a visualização como personal, ou peça a quem administra o quadro. |
404 Not Found: o objeto não existe ou não está visível para você
| Código | Status | Significado | O que fazer |
|---|---|---|---|
not_found |
404 | O objeto não existe, ou não está visível para você (por exemplo um projeto ou quadro members sem grant). Os dois casos retornam o mesmo corpo de propósito. |
Confira o identificador. Trate como não visível, nunca como “não permitido”. |
409 Conflict: a requisição entra em conflito com o estado atual
| Código | Status | Significado | O que fazer |
|---|---|---|---|
attachment_not_ready |
409 | O upload nunca foi concluído nem confirmado. | Conclua o upload e chame …/confirm/. |
board_not_initialized |
409 | Falta no quadro uma coluna de que a operação precisa: não há coluna padrão para criar a tarefa, ou não há coluna done para fechá-la. |
Adicione a coluna que falta ao quadro. |
duplicate_board_key |
409 | Outro quadro já usa esta chave (chaves retiradas continuam reservadas). | Escolha outra chave. |
goal_name_conflict |
409 | Já existe uma meta ativa com este nome. | Renomeie uma das metas. |
idempotency_in_progress |
409 | Uma chamada com a mesma Idempotency-Key ainda está em andamento (até 120 segundos). |
Aguarde e tente de novo com a mesma chave. |
idempotency_key_payload_mismatch |
409 | A Idempotency-Key já foi usada com um corpo diferente. |
Use uma chave nova para cada operação nova. |
identifier_allocation_failed |
409 | Não foi possível alocar uma chave de tarefa (KEY-n) porque várias tarefas estavam sendo criadas ao mesmo tempo. |
Tente a requisição de novo com a mesma Idempotency-Key. |
label_in_use |
409 | A etiqueta ainda está em uso em tarefas, então não pode ser excluída. | Arquive a etiqueta com PATCH {"is_archived": true}. |
last_grant_cannot_be_removed |
409 | Este é o último membro de um quadro ou projeto restrito aos membros. | Adicione outro membro primeiro, ou torne o item visível para toda a organização. |
project_name_conflict |
409 | Já existe um projeto no espaço de trabalho, ativo ou arquivado, com este nome. | Escolha outro nome, ou renomeie o outro projeto. |
rank_neighbor_missing |
409 | A tarefa after / before mudou de lugar. A resposta indica a primeira e a última tarefa atuais da coluna. |
Tente de novo com uma tarefa vizinha atual. |
relation_cycle |
409 | O vínculo criaria um ciclo. | Vincule as tarefas no sentido contrário, ou não as vincule. |
relation_exists |
409 | As duas tarefas já estão vinculadas dessa forma. | Não é preciso fazer nada. |
state_in_use |
409 | Ainda há tarefas ativas no estado (coluna), ou uma restauração aponta para um estado arquivado. | Envie migrate_to, ou restaure para outro estado. |
version_conflict |
409 | A tarefa mudou desde que você a carregou. extra.current_version traz a nova versão. |
Leia de novo, concilie as mudanças e tente outra vez com a nova versão. |
412, 422 e 428: pré-condições e posicionamento
| Código | Status | Significado | O que fazer |
|---|---|---|---|
column_too_large |
422 | A coluna de destino atingiu o limite de 5.000 tarefas. | Mova ou arquive tarefas, ou divida o quadro. |
precondition_failed |
412 | O validador If-Match de uma escrita em uma visualização salva está desatualizado. |
Leia as visualizações de novo e tente outra vez com o novo ETag. |
precondition_required |
428 | Uma escrita em uma visualização salva foi enviada sem If-Match. |
Envie o ETag da sua última leitura. |
501 e 503: indisponível no momento
| Código | Status | Significado | O que fazer |
|---|---|---|---|
not_implemented |
501 | A operação ainda não está disponível. Por exemplo, definir milestone ao criar uma tarefa: defina com PATCH depois de criar a tarefa. |
Use a alternativa documentada, ou confira o changelog da API. |
attachment_storage_unavailable |
503 | O armazenamento de arquivos está temporariamente indisponível. | Tente de novo mais tarde. |
feature_temporarily_read_only |
503 | O Plan está temporariamente somente leitura durante um incidente. As leituras continuam funcionando, então você sempre pode exportar seu trabalho. Não é o mesmo que 402. |
Tente as escritas de novo mais tarde; continue lendo normalmente. |
429 Too Many Requests
Ao passar de um limite de requisições (leituras 120, escritas 60, em lote 30, feed delta 240 por minuto por ator), a API responde 429 com um header Retry-After. Aguarde esse número de segundos antes de tentar de novo. Veja Convenções do Plan.
| Código | Status | Significado | O que fazer |
|---|---|---|---|
throttled |
429 | Um limite de requisições para este ator foi atingido. extra.retry_after e o header Retry-After dizem quantos segundos esperar. |
Espere esse tempo e tente de novo. |