Pular para o conteúdo principal

Execuções

Execução de decisões orquestradas pela plataforma com suporte a modos síncrono e assíncrono.

Endpoints

MétodoEndpointDescriçãoPermissão
POST/api/v1/decision-platform/executeExecutar decisãoDECISIONS_EXECUTE
GET/api/v1/decision-platform/executionsListar execuçõesDECISIONS_READ
GET/api/v1/decision-platform/executions/:idObter execuçãoDECISIONS_READ
GET/api/v1/decision-platform/executions/:id/statusObter status (leve)DECISIONS_READ

Atributos da Execução

CampoTipoDescrição
configIdstring (UUID)ID da configuração
versionIdstring (UUID)ID da versão usada
modeenumModo: SYNC, ASYNC
statusenumStatus da execução
inputobjectInput original enviado
mergedInputobjectInput após merge com data sources
outputobjectResultado da decisão
errorstringMensagem de erro (se houver)
timingobjectMétricas de tempo
callbackUrlstringURL do callback (async)
callbackDeliveredAtdatetimeQuando o callback foi entregue
callbackAttemptsnumberTentativas de callback
traceIdstringID para correlação
executedBystringID do usuário
startedAtdatetimeInício da execução
completedAtdatetimeFim da execução
createdAtdatetimeData de criação

Status da Execução

StatusDescrição
PENDINGAguardando início
RUNNINGEm execução
COMPLETEDFinalizada com sucesso
FAILEDFalhou
TIMEOUTTimeout excedido
CANCELLEDCancelada

Modos de Execução

ModoDescrição
SYNCSíncrono - aguarda resultado na resposta
ASYNCAssíncrono - retorna imediatamente, resultado via callback

Executar Decisão (Síncrono)

POST /api/v1/decision-platform/execute

Executa uma decisão e aguarda o resultado.

Atributos

CampoTipoObrigatórioDescrição
configKeystringSimChave da configuração
versionIdstringNãoVersão específica (default: última publicada)
modeenumNãoModo de execução (default: SYNC)
inputobjectNãoDados de entrada para a decisão
timeoutMsnumberNãoTimeout em ms (override)
traceIdstringNãoID para correlação/rastreamento
curl -X POST 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/execute' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"configKey": "credit-analysis",
"mode": "SYNC",
"input": {
"cpf": "12345678900",
"requestedAmount": 50000,
"income": 15000
},
"traceId": "req-12345"
}'

Response (200 OK)

{
"data": {
"type": "platform-execution",
"id": "550e8400-e29b-41d4-a716-446655440100",
"attributes": {
"status": "COMPLETED",
"mode": "SYNC",
"output": {
"decision": "APPROVED",
"maxAmount": 45000,
"interestRate": 1.5,
"riskLevel": "MEDIUM"
},
"timing": {
"totalMs": 245,
"dataFetchMs": 180,
"dmnExecutionMs": 65
}
}
},
"links": {
"self": "/api/v1/executions/550e8400-e29b-41d4-a716-446655440100"
}
}

Executar Decisão (Assíncrono)

Executa uma decisão de forma assíncrona. O resultado é enviado via callback.

curl -X POST 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/execute' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"configKey": "credit-analysis",
"mode": "ASYNC",
"input": {
"cpf": "12345678900",
"requestedAmount": 50000
},
"callbackUrl": "https://api.empresa.com/webhooks/decision-result",
"callbackHeaders": {
"X-API-Key": "secret-key"
},
"traceId": "req-12345"
}'

Response (202 Accepted)

{
"data": {
"type": "platform-execution",
"id": "550e8400-e29b-41d4-a716-446655440100",
"attributes": {
"status": "PENDING",
"mode": "ASYNC",
"callbackUrl": "https://api.empresa.com/webhooks/decision-result",
"traceId": "req-12345"
}
},
"links": {
"self": "/api/v1/executions/550e8400-e29b-41d4-a716-446655440100"
}
}

Callback Payload

Quando a execução termina, um POST é enviado para o callbackUrl:

{
"type": "platform-execution-callback",
"executionId": "550e8400-e29b-41d4-a716-446655440100",
"traceId": "req-12345",
"status": "COMPLETED",
"output": {
"decision": "APPROVED",
"maxAmount": 45000
},
"timing": {
"totalMs": 245
},
"completedAt": "2024-01-15T10:30:00.245Z"
}

Listar Execuções

GET /api/v1/decision-platform/executions

Lista execuções com suporte a filtros.

Query Parameters

ParâmetroTipoDescrição
page[number]integerNúmero da página
page[size]integerItens por página
filter[configId]UUIDFiltrar por configuração
filter[versionId]UUIDFiltrar por versão
filter[status]enumFiltrar por status
filter[mode]enumFiltrar por modo
filter[from]datetimeData inicial
filter[to]datetimeData final
curl 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/executions?filter[status]=COMPLETED&filter[from]=2024-01-01T00:00:00Z' \
-H 'Authorization: Bearer SEU_TOKEN'

Obter Status da Execução

GET /api/v1/decision-platform/executions/:id/status

Endpoint leve para verificar apenas o status de uma execução assíncrona.

curl 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/executions/550e8400-e29b-41d4-a716-446655440100/status' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "platform-execution-status",
"id": "550e8400-e29b-41d4-a716-446655440100",
"attributes": {
"status": "RUNNING",
"startedAt": "2024-01-15T10:30:00Z",
"completedAt": null,
"error": null
}
}
}

Fluxo de Execução

  1. Recebimento - A plataforma recebe a requisição e valida o input
  2. Resolução - Identifica a configuração e versão a usar
  3. Data Fetch - Executa os data sources em paralelo (por prioridade)
  4. Merge - Combina o input original com dados dos data sources
  5. DMN - Chama o Decision Engine com o input mesclado
  6. Resultado - Retorna o output (sync) ou dispara callback (async)
  7. Registro - Armazena a execução completa para auditoria

Métricas de Tempo

O objeto timing fornece métricas de performance:

CampoDescrição
totalMsTempo total da execução
dataFetchMsTempo gasto buscando data sources
dmnExecutionMsTempo da execução DMN

Erros Comuns

CódigoErroDescrição
400VALIDATIONInput inválido ou configKey não encontrada
404NOT_FOUNDExecução não encontrada
408TIMEOUTExecução excedeu o timeout
409CONFLICTConfiguração não está publicada
429RATE_LIMITLimite de execuções concorrentes atingido
502DATA_SOURCE_ERRORErro ao buscar data source obrigatório