Pular para o conteúdo principal

Fontes de Dados

Configuração de fontes de dados externas (Data Sources) para enriquecer o contexto das decisões.

Endpoints

MétodoEndpointDescriçãoPermissão
POST/api/v1/decision-platform/configs/:configId/data-sourcesCriar data sourceDECISION_VERSIONS_CREATE
GET/api/v1/decision-platform/configs/:configId/data-sourcesListar data sourcesDECISION_VERSIONS_READ
GET/api/v1/decision-platform/data-sources/:idObter data sourceDECISION_VERSIONS_READ
PATCH/api/v1/decision-platform/data-sources/:idAtualizar data sourceDECISION_VERSIONS_UPDATE
DELETE/api/v1/decision-platform/data-sources/:idExcluir data sourceDECISION_VERSIONS_DELETE

Atributos

CampoTipoDescrição
configIdstring (UUID)ID da configuração pai
namestringNome do data source
typeenumTipo: S3, REDIS_STREAM, HTTP
typeConfigobjectConfiguração específica do tipo
inputMappingarrayMapeamento de campos para o input
prioritynumberPrioridade de execução (0-100)
isRequiredbooleanSe é obrigatório para execução
timeoutMsnumberTimeout em milissegundos
createdAtdatetimeData de criação
updatedAtdatetimeData da última atualização

Tipos de Data Source

TipoDescrição
S3Leitura de arquivos no Amazon S3
REDIS_STREAMConsumo de Redis Streams
HTTPRequisições HTTP/REST

Criar Data Source HTTP

POST /api/v1/decision-platform/configs/:configId/data-sources

Cria um data source que faz requisições HTTP para enriquecer dados.

Configuração HTTP

CampoTipoDescrição
urlstringURL do endpoint
methodenumGET ou POST
headersobjectHeaders da requisição
bodyobjectBody para requisições POST
paginationobjectConfiguração de paginação
curl -X POST 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/configs/550e8400-e29b-41d4-a716-446655440001/data-sources' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "platform-data-sources",
"attributes": {
"name": "Consulta Serasa",
"type": "HTTP",
"typeConfig": {
"url": "https://api.serasa.com/v1/score",
"method": "POST",
"headers": {
"Authorization": "Bearer api-key-here",
"Content-Type": "application/json"
}
},
"inputMapping": [
{
"path": "$.score",
"targetField": "serasaScore",
"transform": "NONE"
},
{
"path": "$.restrictions",
"targetField": "hasRestrictions",
"transform": "FIRST",
"defaultValue": false
}
],
"priority": 10,
"isRequired": true,
"timeoutMs": 5000
}
}
}'

Response (201 Created)

{
"data": {
"type": "platform-data-sources",
"id": "550e8400-e29b-41d4-a716-446655440020",
"links": {
"self": "/api/v1/decision-platform/data-sources/550e8400-e29b-41d4-a716-446655440020"
},
"attributes": {
"configId": "550e8400-e29b-41d4-a716-446655440001",
"name": "Consulta Serasa",
"type": "HTTP",
"typeConfig": {
"url": "https://api.serasa.com/v1/score",
"method": "POST",
"headers": {
"Authorization": "Bearer api-key-here",
"Content-Type": "application/json"
}
},
"inputMapping": [
{
"path": "$.score",
"targetField": "serasaScore",
"transform": "NONE"
},
{
"path": "$.restrictions",
"targetField": "hasRestrictions",
"transform": "FIRST",
"defaultValue": false
}
],
"priority": 10,
"isRequired": true,
"timeoutMs": 5000,
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}
}
}

Criar Data Source S3

Cria um data source que lê arquivos do Amazon S3.

Configuração S3

CampoTipoDescrição
bucketstringNome do bucket
keystringCaminho do arquivo
formatenumJSON ou PARQUET
regionstringRegião AWS (opcional)
curl -X POST 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/configs/550e8400-e29b-41d4-a716-446655440001/data-sources' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "platform-data-sources",
"attributes": {
"name": "Tabela de Preços",
"type": "S3",
"typeConfig": {
"bucket": "catalisa-data",
"key": "pricing/rates.json",
"format": "JSON",
"region": "sa-east-1"
},
"inputMapping": [
{
"path": "$.rates",
"targetField": "pricingRates",
"transform": "NONE"
}
],
"priority": 5,
"isRequired": false,
"timeoutMs": 3000
}
}
}'

Criar Data Source Redis Stream

Cria um data source que consome dados de Redis Streams.

Configuração Redis Stream

CampoTipoDescrição
streamNamestringNome do stream
consumerGroupstringNome do consumer group
consumerNamestringNome do consumer
countnumberQuantidade de mensagens a ler
startIdstringID inicial (ex: 0-0, $)
curl -X POST 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/configs/550e8400-e29b-41d4-a716-446655440001/data-sources' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "platform-data-sources",
"attributes": {
"name": "Eventos de Transação",
"type": "REDIS_STREAM",
"typeConfig": {
"streamName": "transactions:events",
"consumerGroup": "decision-platform",
"consumerName": "worker-1",
"count": 10,
"startId": "$"
},
"inputMapping": [
{
"path": "$.data.amount",
"targetField": "transactionAmount",
"transform": "LAST"
}
],
"priority": 0,
"isRequired": false,
"timeoutMs": 2000
}
}
}'

Mapeamento de Input

O inputMapping define como os dados do data source são mapeados para o input da decisão.

Campos do Mapeamento

CampoTipoDescrição
pathstringJSONPath para extrair o dado
targetFieldstringNome do campo no input
transformenumTransformação a aplicar
defaultValueanyValor padrão se não encontrar

Transformações Disponíveis

TransformaçãoDescrição
NONEUsa o valor como está
FLATTENAchata arrays aninhados
FIRSTPega o primeiro elemento de um array
LASTPega o último elemento de um array

Listar Data Sources

GET /api/v1/decision-platform/configs/:configId/data-sources

curl 'https://decision-platform.stg.catalisa.app/api/v1/decision-platform/configs/550e8400-e29b-41d4-a716-446655440001/data-sources?filter[type]=HTTP' \
-H 'Authorization: Bearer SEU_TOKEN'

Erros Comuns

CódigoErroDescrição
400VALIDATIONConfiguração inválida para o tipo
400VALIDATIONInput mapping inválido
404NOT_FOUNDConfiguração ou data source não encontrado
409CONFLICTNome já existe na configuração