Atividades
Listar, consultar, criar e atualizar atividades (tarefas, ligações, reuniões) vinculadas a um negócio.
GET {BASE_URL}/api-v1-activities # lista
GET {BASE_URL}/api-v1-activities/:id # detalhe
POST {BASE_URL}/api-v1-activities # cria
PATCH {BASE_URL}/api-v1-activities/:id # atualizaEscopos: activities:read para os GET; activities:write para POST e PATCH.
Toda atividade precisa de pelo menos um vínculo na criação: deal_id, contact_id,
company_id ou lead_id. status e completed_at são aceitos, e são opcionais, em
POST e PATCH — sem eles a atividade continua nascendo pendente, como antes. Servem
para importar histórico de outro sistema sem que tudo vire tarefa em aberto: completed_at
só é aceito quando o status é concluida, e nunca pode ser uma data futura.
O recurso Atividade
| Campo | Tipo | Notas |
|---|---|---|
id | uuid | |
workspace_id | uuid | |
deal_id | uuid | null | Negócio ao qual a atividade pertence. |
activity_type_id | uuid | null | Tipo da atividade (ligação, reunião, tarefa...). |
owner_id | uuid | Responsável (id de membro). |
title | string | |
description | string | null | |
status | enum | pendente, concluida ou cancelada. |
scheduled_at | datetime | Horário canônico (ordenação e alertas do dia). |
start_time | datetime | null | |
end_time | datetime | null | |
completed_at | datetime | null | |
is_online_meeting | boolean | |
created_at | datetime | |
updated_at | datetime |
Listar atividades
GET {BASE_URL}/api-v1-activities
| Filtro (query) | Tipo | Notas |
|---|---|---|
deal_id | uuid | |
owner_id | uuid | |
activity_type_id | uuid | |
status | enum | pendente, concluida ou cancelada. |
since | ISO 8601 | created_at >= since. |
limit | int | Padrão 50, máx 200. |
cursor | uuid | Próxima página (veja paginação). |
curl "{BASE_URL}/api-v1-activities?deal_id=8f3c...&status=pendente" \
-H "X-API-Key: vnd_sua_chave_aqui"{
"data": [ { "id": "5e6f...", "title": "Ligação de qualificação", "status": "pendente", "...": "..." } ],
"meta": { "next_cursor": null, "has_more": false }
}Consultar uma atividade
GET {BASE_URL}/api-v1-activities/:id → o recurso Atividade, ou 404 not_found.
Criar uma atividade
POST {BASE_URL}/api-v1-activities — escopo activities:write.
| Campo | Tipo | Obrigatório | Notas |
|---|---|---|---|
deal_id | uuid | Sim | Deve pertencer ao workspace. |
activity_type_id | uuid | Sim | Deve pertencer ao workspace. |
title | string | Sim | 1–255 caracteres. |
scheduled_at | datetime | Sim | ISO 8601. Horário canônico da atividade. |
description | string | Não | Até 10.000 caracteres. |
owner_id | uuid | Não | Omitido → resolução automática (criador da chave → admin/gestor mais antigo). |
start_time | datetime | Não | Omitido → herda scheduled_at. |
end_time | datetime | Não | Quando informado, deve ser maior ou igual ao início (start_time ou scheduled_at). |
is_online_meeting | boolean | Não |
curl -X POST "{BASE_URL}/api-v1-activities" \
-H "X-API-Key: vnd_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{ "deal_id": "8f3c...", "activity_type_id": "2b3c...", "title": "Ligação de qualificação", "scheduled_at": "2026-08-01T14:00:00Z" }'Resposta 201 Created:
{ "id": "5e6f...", "owner_id": "3c2d...", "status": "pendente" }Idempotência
Envie um header Idempotency-Key (1–255 caracteres, qualquer string única sua) para tornar
o POST acima seguro de reenviar em caso de timeout de rede ou retry automático:
curl -X POST "{BASE_URL}/api-v1-activities" \
-H "X-API-Key: vnd_sua_chave_aqui" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-9f21" \
-d '{ "deal_id": "8f3c...", "activity_type_id": "2b3c...", "title": "Ligação de qualificação", "scheduled_at": "2026-08-01T14:00:00Z" }'- Mesma chave, mesmo corpo: a segunda chamada não cria outra atividade — responde
200 OKcom o corpo da resposta original (não201). - Mesma chave, corpo diferente (ou reusada em outro recurso):
422 idempotency_conflict. - Mesma chave, requisição original ainda processando:
409 idempotency_in_progress— duas chamadas concorrentes com a mesma chave; espere e tente de novo. - Janela: a chave fica registrada por 24 horas; depois disso pode ser reusada como se fosse nova.
- Sem o header: comportamento idêntico ao de hoje — cada
POSTcria uma atividade nova.
Atualizar uma atividade
PATCH {BASE_URL}/api-v1-activities/:id — escopo activities:write. Mesmos campos do
POST, todos opcionais, exceto os vínculos deal_id, contact_id, company_id e
lead_id (repassar a atividade para outro dono não é suportado). status e completed_at
são aceitos aqui também (ver nota no topo). O
mesmo limite de intervalo (end_time ≥ início) vale considerando o valor atual da
atividade quando um dos dois campos não é enviado. Retorna a atividade completa
atualizada (200 OK).
curl -X PATCH "{BASE_URL}/api-v1-activities/5e6f..." \
-H "X-API-Key: vnd_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{ "end_time": "2026-08-01T15:00:00Z" }'Erros possíveis
| HTTP | code | Quando |
|---|---|---|
401 | missing_api_key / invalid_api_key / revoked_api_key | Autenticação. |
403 | insufficient_scope | Falta activities:read ou activities:write. |
404 | not_found | Atividade não existe nesse workspace. |
400 | bad_request | Corpo ausente/JSON inválido. |
422 | validation_error | Campo ou parâmetro inválido, incluindo end_time anterior ao início. |
422 | invalid_reference | deal_id/activity_type_id/owner_id fora do workspace. |
422 | no_owner_available | Sem responsável ativo possível. |
422 | invalid_cursor | cursor inválido. |
400 | invalid_idempotency_key | Idempotency-Key fora de 1–255 caracteres. |
422 | idempotency_conflict | Mesma Idempotency-Key com corpo ou recurso diferente. |
409 | idempotency_in_progress | Mesma Idempotency-Key já em processamento (corrida). |
405 | method_not_allowed | Método não suportado. |
500 | internal_error | Falha interna. |