Fluxos de Automação
Salvar Fluxo
Cria ou atualiza um fluxo de Decisão.
Você pode testar esta rota diretamente em nossa documentação interativa.
Cria um novo fluxo ou atualiza um existente. Envie id para editar; omita para criar.
Endpoint
POST /api/externalAPIs/public/tolkyReasoning/decisions/save
Parâmetros
| Propriedade | Tipo | Descrição |
|---|---|---|
id | string (UUID) | UUID do fluxo (opcional para criação, obrigatório para edição) |
createdAt | string (date-time) | Data de criação do fluxo (gerado automaticamente) |
updatedAt | string (date-time) | Data da última atualização do fluxo (gerado automaticamente) |
createdBy | string (UUID) | UUID do usuário que criou o fluxo (opcional) |
chainJson | array | Array com a configuração do fluxo (obrigatório) |
decisionName | string | Nome do fluxo (obrigatório) |
hostId | string (UUID) | UUID do host (obrigatório) |
avatarId | string (UUID) | UUID do avatar (obrigatório) |
active | boolean | Indica se o fluxo está ativo (obrigatório) |
promptTemplateName | string | Nome do template de prompt (opcional) |
lastUpdateBy | string (UUID) | UUID do último usuário a atualizar o fluxo (gerado automaticamente) |
decisionType | string | Tipo do decidor (obrigatório) |
model | string | Modelo utilizado (obrigatório) |
templateRef | string | Referência ao template (opcional) |
instructions | string | Instruções para direcionar e contextualizar a escolha da IA (opcional) |
deleted | boolean | Indica se o fluxo foi excluído (gerado automaticamente) |
Estrutura do array chainJson
Cada objeto no array chainJson representa uma etapa do fluxo e possui a seguinte estrutura:
| Propriedade | Tipo | Descrição |
|---|---|---|
type | string | Tipo da automação (obrigatório) |
agents | array | Lista de agentes utilizados nesta etapa (opcional) |
content | string | Conteúdo da etapa (opcional) |
canRepeat | boolean | Indica se a etapa pode ser repetida (opcional) |
description | string | Descrição da condição ou ação da etapa (obrigatório) |
Estrutura de cada objeto no array agents
| Propriedade | Tipo | Descrição |
|---|---|---|
schemaName | string | Nome do schema do agente (obrigatório) |
agentName | string | Nome do agente (obrigatório) |
payload | objeto | Configurações específicas do agente (obrigatório) |
Use a rota decisions/generateAgent para obter a estrutura do payload de cada agente.
Exemplo: Do generateAgent para o saveDecisionChainHelper
1. Resposta do generateAgent para um agente “newTicket”
{
"code": 200,
"data": {
"id": "http://exemplo.com/schemas/ticket-config.json",
"type": "object",
"title": "New Ticket Config",
"schema": "http://json-schema.org/draft-07/schema",
"required": [],
"properties": {
"testBlock": {
"type": "boolean",
"default": false,
"description": "Valor para determinar se o agente deve ser bloqueado nos testes automatizados."
},
"generalInstructions": {
"type": "string",
"default": "",
"description": "Instruções gerais do gestor para contextualizar sobre a finalidade do ticket a ser criado."
}
},
"description": "Configuração para criação de tickets."
},
"message": "OK"
}
2. Payload correspondente no saveDecisionChainHelper
{
"schemaName": "tickets",
"agentName": "newTicket",
"payload": {
"testBlock": true,
"generalInstructions": "Instruções para o ticket"
}
}
Exemplo de Requisição
curl -X POST \
'{{BASE_URL}}/api/externalAPIs/public/tolkyReasoning/decisions/save' \
-H 'Content-Type: application/json' \
-d '{
"decisionChain": {
"id": "uuid-do-fluxo",
"decisionName": "Nome do Fluxo",
"hostId": "uuid-do-host",
"avatarId": "uuid-do-avatar",
"chainJson": [
{
"type": "Automação 1",
"agents": [
{
"schemaName": "tickets",
"agentName": "newTicket",
"payload": {
"testBlock": true,
"generalInstructions": ""
}
},
{
"schemaName": "public",
"agentName": "setHumanHelp",
"payload": {
"testBlock": true
}
}
],
"content": "",
"canRepeat": true,
"description": "QUANDO o usuário mostrar interesse em determinada ação"
}
],
"active": true,
"decisionType": "orchestrator",
"model": "gpt-4.1-nano",
"instructions": "Priorize respostas objetivas e contextualizar com o histórico do usuário"
}
}'
Exemplo de Resposta
{
"code": 200,
"message": "Success",
"data": {
"id": "uuid-do-fluxo",
"createdAt": "2025-04-04T18:53:14.144175+00:00",
"updatedAt": "2025-05-07T19:38:10.660556+00:00",
"createdBy": null,
"chainJson": [
{
"type": "Automação 1",
"agents": [
{
"schemaName": "tickets",
"agentName": "newTicket",
"payload": {
"testBlock": true,
"generalInstructions": ""
}
},
{
"schemaName": "public",
"agentName": "setHumanHelp",
"payload": {
"testBlock": true
}
}
],
"content": "",
"canRepeat": true,
"description": "QUANDO o usuário mostrar interesse em determinada ação"
}
],
"decisionName": "Nome do Fluxo",
"hostId": "uuid-do-host",
"avatarId": "uuid-do-avatar",
"active": true,
"promptTemplateName": null,
"lastUpdateBy": "uuid-do-ultimo-usuario",
"decisionType": "orchestrator",
"model": "gpt-4.1-nano",
"templateRef": null,
"instructions": "Priorize respostas objetivas e contextualizar com o histórico do usuário",
"deleted": false
}
}
Códigos de Erro
400: Campos obrigatórios ausentes ou inválidos401: Token de autenticação inválido ou ausente500: Erro interno do servidor