Pular para o conteúdo

Excluir e restaurar

Excluir uma tarefa ou um evento pela API não é definitivo. O registro vai para a lixeira, fica lá por 30 dias e pode ser restaurado — por você pela API ou por qualquer pessoa do workspace pelo aplicativo web.

Método Caminho
DELETE /tasks/{id} Enviar uma tarefa para a lixeira
GET /tasks/trash Lista de tarefas excluídas (paginação por cursor)
POST /tasks/{id}/restore Recuperar uma tarefa
DELETE /scheduled-events/{id} Enviar um evento para a lixeira
GET /scheduled-events/trash Lista de eventos excluídos
POST /scheduled-events/{id}/restore Recuperar um evento

Excluir exige tasks:write ou events:write; ler a lixeira exige a permissão :read correspondente. O registro excluído some imediatamente de todas as outras listagens e dos relatórios: a lixeira é o único lugar onde ele continua visível.

Terminal window
curl "https://api.bordio.com/public/v1/tasks/trash" \
-H "Authorization: Bearer brd_sk_live_..."
{
"data": [
{
"id": "task_65dcc9c66f2e4e001ab18859",
"object": "task",
"title": "Aprovar o novo layout",
"project_id": "proj_65dcc9c66f2e4e001ab18801",
"deleted_at": "2026-09-01T10:00:00.000Z",
"expires_at": "2026-10-01T10:00:00.000Z",
"deleted_by": "user_65dcc9c66f2e4e001ab18802"
}
],
"pagination": { "next_cursor": null, "has_more": false }
}

expires_at é o momento em que o registro sai da lixeira. Depois disso ele some de vez e restore responde 404. O resto do registro — descrição, campos personalizados, comentários — não está nesta listagem: leia com um GET normal depois de recuperá-lo.

Na lixeira você vê exatamente o que veria em qualquer outro lugar. Um projeto ao qual você não tem acesso não acrescenta nada, e uma chave restrita a um projeto só enxerga o dela. Quando um assistente ou aplicativo age em seu nome, seu papel no workspace também precisa permitir gerenciar a lixeira — caso contrário, tanto a listagem quanto a restauração são recusadas.

Terminal window
curl -X POST "https://api.bordio.com/public/v1/tasks/task_65dcc9c66f2e4e001ab18859/restore" \
-H "Authorization: Bearer brd_sk_live_..."

A resposta é a tarefa completa, a mesma que GET /tasks/{id} devolveria.

Vale saber de antemão:

  • Restaurar duas vezes responde 404. Um registro recuperado não está mais na lixeira, então não há o que restaurar. Trate o 404 como «já restaurado ou expirado», não como falha no seu código.
  • O projeto precisa ainda existir. Uma tarefa cujo projeto foi excluído só volta depois que o projeto voltar: a requisição responde 400.
  • Uma repetição não volta como repetição. Excluir uma ocorrência a desvincula da série, e ela volta como registro avulso. Excluir a série inteira (?scope=all) remove também a regra de repetição, e isso não tem volta.
  • A tarefa restaurada volta para o fim da sua coluna, não para a posição anterior.
  • Comentários e anexos voltam junto com o registro. O tempo registrado na tarefa também.

Não existe na API. Os registros saem da lixeira sozinhos após 30 dias, ou quando alguém os exclui definitivamente no aplicativo web. Nenhuma chamada daqui destrói um registro na hora.

Projetos não são excluídos pela API. Quando um projeto termina, ele é arquivado: some do workspace sem mexer em nada do conteúdo e pode voltar a qualquer momento.

Método Caminho
POST /projects/{id}/archive Arquivar
POST /projects/{id}/unarchive Desarquivar
Terminal window
curl -X POST "https://api.bordio.com/public/v1/projects/proj_65dcc9c66f2e4e001ab18801/archive" \
-H "Authorization: Bearer brd_sk_live_..."

As duas exigem projects:write e as duas devolvem o projeto. Arquivar um projeto já arquivado responde 400, assim como desarquivar um que não está.

Projetos arquivados continuam em GET /projects com archived_at preenchido. Para filtrar a lista existe o parâmetro archived:

Terminal window
curl "https://api.bordio.com/public/v1/projects?archived=false" \
-H "Authorization: Bearer brd_sk_live_..."

Sem o parâmetro vêm os dois, como antes.

Tarefas e eventos dentro de um projeto arquivado não são excluídos e não aparecem na lixeira.