Criar Resultado de Atividade
Criar o resultado de uma atividade de tarefa.
POST /api/activity-results/tasks
Cria um resultado para uma atividade de tarefa a partir do app interno de admin/operador. Os resultados podem ser vinculados a uma atividade existente do Reten (informando activity_id) ou criados como entradas independentes (omitindo-o).
Auth: Obrigatória — headers Authorization: Bearer <token> + x-tenant-id + x-project-id, com a permissão activity-result:submit.
Este é o endpoint interno. Provedores externos usam o endpoint de parceiro POST /api/integration/activity-results/tasks, que tem um formato de requisição diferente e é autenticado com x-api-key.
Corpo da Requisição
Todos os campos estão em snake_case.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
activity_id | UUID | Não | ID da atividade no Reten. Omita para criar um resultado STANDALONE não vinculado a uma atividade existente. |
commerce_id | UUID | Não | ID interno do comércio no Reten. |
channel | enum | Não | Canal pelo qual a atividade foi acionada. Um de SALESMAN, CALLCENTER, WHATSAPP, EMAIL, SMS, PUSH. |
result | string | Sim | Code do tipo de resultado (ex.: success, not_home). Padrão ^[a-zA-Z0-9_-]+$, máx. 100 caracteres. |
comment | string | Não | Comentário em texto livre, máx. 500 caracteres. |
future_scheduled_at | ISO 8601 | Condicional | Obrigatório apenas quando o tipo de resultado selecionado exige uma data de acompanhamento. |
Exemplo
curl -X POST https://api.reten.ai/api/activity-results/tasks \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>" \
-H "x-project-id: <project-id>" \
-H "Content-Type: application/json" \
-d '{
"activity_id": "ee0e8400-e29b-41d4-a716-446655440000",
"channel": "SALESMAN",
"result": "success",
"comment": "Order placed successfully"
}'const response = await fetch("https://api.reten.ai/api/activity-results/tasks", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
"x-project-id": "<project-id>",
"Content-Type": "application/json",
},
body: JSON.stringify({
activity_id: "ee0e8400-e29b-41d4-a716-446655440000",
channel: "SALESMAN",
result: "success",
comment: "Order placed successfully",
}),
});
const result = await response.json();import requests
response = requests.post(
"https://api.reten.ai/api/activity-results/tasks",
headers={
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
"x-project-id": "<project-id>",
},
json={
"activity_id": "ee0e8400-e29b-41d4-a716-446655440000",
"channel": "SALESMAN",
"result": "success",
"comment": "Order placed successfully",
},
)
result = response.json()Resposta 201 Created
O endpoint interno retorna diretamente a entidade enriquecida do resultado de atividade. O subconjunto representativo:
{
"id": "770e8400-e29b-41d4-a716-446655440000",
"projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
"source": "RETEN_ACTIVITY",
"origin": "PLATFORM",
"activityId": "ee0e8400-e29b-41d4-a716-446655440000",
"commerceId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
"resultStatus": "COMPLETED",
"occurredAt": "2026-04-11T10:30:00.000Z",
"createdAt": "2026-04-11T10:30:05.000Z",
"updatedAt": "2026-04-11T10:30:05.000Z",
"taskDetails": {
"comment": "Order placed successfully",
"futureScheduledAt": null,
"result": {
"code": "success",
"label": "Éxito"
}
}
}Notas
- Se
activity_idcorresponder a uma atividade existente,sourceéRETEN_ACTIVITY; se omitido,sourceéSTANDALONE. - O status da atividade associada ao resultado passa a completado (independentemente de o resultado ser positivo ou negativo, por exemplo "sem venda" ou "reagendar para outro dia").