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

PropriedadeTipoDescrição
idstring (UUID)UUID do fluxo (opcional para criação, obrigatório para edição)
createdAtstring (date-time)Data de criação do fluxo (gerado automaticamente)
updatedAtstring (date-time)Data da última atualização do fluxo (gerado automaticamente)
createdBystring (UUID)UUID do usuário que criou o fluxo (opcional)
chainJsonarrayArray com a configuração do fluxo (obrigatório)
decisionNamestringNome do fluxo (obrigatório)
hostIdstring (UUID)UUID do host (obrigatório)
avatarIdstring (UUID)UUID do avatar (obrigatório)
activebooleanIndica se o fluxo está ativo (obrigatório)
promptTemplateNamestringNome do template de prompt (opcional)
lastUpdateBystring (UUID)UUID do último usuário a atualizar o fluxo (gerado automaticamente)
decisionTypestringTipo do decidor (obrigatório)
modelstringModelo utilizado (obrigatório)
templateRefstringReferência ao template (opcional)
instructionsstringInstruções para direcionar e contextualizar a escolha da IA (opcional)
deletedbooleanIndica 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:

PropriedadeTipoDescrição
typestringTipo da automação (obrigatório)
agentsarrayLista de agentes utilizados nesta etapa (opcional)
contentstringConteúdo da etapa (opcional)
canRepeatbooleanIndica se a etapa pode ser repetida (opcional)
descriptionstringDescrição da condição ou ação da etapa (obrigatório)

Estrutura de cada objeto no array agents

PropriedadeTipoDescrição
schemaNamestringNome do schema do agente (obrigatório)
agentNamestringNome do agente (obrigatório)
payloadobjetoConfiguraçõ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álidos
  • 401: Token de autenticação inválido ou ausente
  • 500: Erro interno do servidor