Pular para o conteúdo principal

Decisoes

Gerenciamento de decisões no Decision Engine.

Endpoints

MétodoEndpointDescriçãoPermissão
POST/api/v1/decisionsCriar decisãoDECISION_VERSIONS_CREATE
GET/api/v1/decisionsListar decisõesDECISION_VERSIONS_READ
GET/api/v1/decisions/:idObter decisãoDECISION_VERSIONS_READ
PATCH/api/v1/decisions/:idAtualizar decisãoDECISION_VERSIONS_CREATE
DELETE/api/v1/decisions/:idExcluir decisãoDECISION_PROJECTS_DELETE
POST/api/v1/decisions/:id/executeExecutar decisãoDECISION_EXECUTE

Criar Decisão

POST /api/v1/decisions

Cria uma nova decisão dentro de um projeto.

Request

CampoTipoObrigatórioDescrição
projectIdstring (UUID)SimID do projeto
namestringSimNome da decisão
keystringSimChave unica (lowercase, hifens)
descriptionstringNãoDescrição
tagIdsstring[]NãoIDs de tags associadas
curl -X POST 'https://decision-engine.stg.catalisa.app/api/v1/decisions' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"projectId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Verificação de Score",
"key": "score-check",
"description": "Verifica se o score atinge o mínimo para aprovação"
}'

Response (201 Created)

{
"data": {
"type": "decisions",
"id": "660e8400-e29b-41d4-a716-446655440001",
"attributes": {
"projectId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Verificação de Score",
"key": "score-check",
"description": "Verifica se o score atinge o mínimo para aprovação",
"status": "DRAFT",
"createdAt": "2024-01-15T10:30:00Z"
},
"links": {
"self": "/api/v1/decisions/660e8400-e29b-41d4-a716-446655440001"
}
}
}

Listar Decisoes

GET /api/v1/decisions

Lista decisões com suporte a paginação e filtros.

Query Parameters

ParâmetroTipoDescrição
page[number]integerNúmero da página
page[size]integerItens por página
filter[projectId]stringFiltrar por projeto
filter[status]stringFiltrar por status
filter[tagId]stringFiltrar por tag
curl 'https://decision-engine.stg.catalisa.app/api/v1/decisions?filter[projectId]=550e8400-e29b-41d4-a716-446655440000&filter[status]=ACTIVE' \
-H 'Authorization: Bearer SEU_TOKEN'

Atualizar Decisão

PATCH /api/v1/decisions/:decisionId

Atualiza dados de uma decisão.

Request

CampoTipoObrigatórioDescrição
statusstringNãoNovo status
namestringNãoNovo nome
descriptionstringNãoNova descrição
tagIdsstring[]NãoNovas tags
curl -X PATCH 'https://decision-engine.stg.catalisa.app/api/v1/decisions/660e8400-e29b-41d4-a716-446655440001' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"status": "ACTIVE",
"name": "Verificação de Score v2"
}'

Executar Decisão

POST /api/v1/decisions/:decisionId/execute

Executa a versão publicada mais recente da decisão e retorna o resultado com trace completo das regras avaliadas.

Request

CampoTipoObrigatórioDescrição
inputobjectSimDados de entrada para a decisão (devem corresponder aos inputs definidos no DMN)
curl -X POST 'https://decision-engine.stg.catalisa.app/api/v1/decisions/660e8400-e29b-41d4-a716-446655440001/execute' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"input": {
"score": 720,
"rendaMensal": 8000,
"comprometimentoRenda": 0.35
}
}'

Response (200 OK)

{
"output": "APROVADO|1.49|60|0.20|Bom perfil - taxa 1.49% am",
"trace": [
{
"decisionId": "creditDecision",
"decisionName": "Credit Decision",
"outcome": "APROVADO|1.49|60|0.20|Bom perfil - taxa 1.49% am",
"rulesEvaluated": [
{
"ruleId": "rule_denied_score",
"triggered": false,
"conditions": ["score: 720", "rendaMensal: 8000"],
"outcome": null
},
{
"ruleId": "rule_approved_good",
"triggered": true,
"conditions": ["score: 720", "rendaMensal: 8000", "comprometimentoRenda: 0.35"],
"outcome": "APROVADO|1.49|60|0.20|Bom perfil - taxa 1.49% am"
}
]
}
],
"executionTimeMs": 45,
"versionUsed": "1.0.0"
}

Campos da Resposta

CampoTipoDescrição
outputanyResultado da execução do DMN
tracearrayLista de decisões avaliadas com detalhes
trace[].decisionIdstringID da decisão no DMN
trace[].decisionNamestringNome da decisão no DMN
trace[].outcomeanyResultado da decisão
trace[].rulesEvaluatedarrayLista de regras avaliadas
trace[].rulesEvaluated[].ruleIdstringID da regra no DMN
trace[].rulesEvaluated[].triggeredbooleanSe a regra foi acionada
trace[].rulesEvaluated[].conditionsarrayCondições avaliadas
trace[].rulesEvaluated[].outcomeanySaída da regra (se acionada)
executionTimeMsnumberTempo de execução em milissegundos
versionUsedstringVersão do DMN utilizada
Debugging com Trace

O campo trace é essencial para debugging:

  • Veja todas as regras que foram avaliadas
  • Identifique qual regra foi acionada (triggered: true)
  • Entenda as condições que levaram à decisão

Entendendo o Trace

O trace mostra o caminho completo da execução do DMN. Com hit policy FIRST, apenas a primeira regra que satisfaz todas as condições é acionada.

Exemplo de análise:

Entrada: score=720, rendaMensal=8000

Regras avaliadas:
1. rule_denied_score (< 500) → NÃO acionada (720 >= 500)
2. rule_denied_income (< 3000) → NÃO acionada (8000 >= 3000)
3. rule_approved_good (>= 700, >= 8000) → ACIONADA ✓

Resultado: APROVADO

Excluir Decisão

DELETE /api/v1/decisions/:decisionId

Remove uma decisão e todas as suas versões.

curl -X DELETE 'https://decision-engine.stg.catalisa.app/api/v1/decisions/660e8400-e29b-41d4-a716-446655440001' \
-H 'Authorization: Bearer SEU_TOKEN'

Erros Comuns

CódigoErroDescrição
400VALIDATIONInput inválido ou campos ausentes
404NOT_FOUNDDecisão ou projeto não encontrado
404NOT_FOUNDNenhuma versão publicada para executar
409CONFLICTKey já existe no projeto