Crear Regla
curl --request POST \
--url http://api.gu1.ai/rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"category": "<string>",
"targetEntityTypes": [
{}
],
"conditions": {},
"actions": [
{}
],
"enabled": true,
"priority": 123,
"score": 123,
"status": "<string>",
"evaluationMode": "<string>",
"riskMatrixId": "<string>",
"countries": [
{}
],
"scope": {},
"tags": [
{}
],
"creationProvenance": {}
}
'import requests
url = "http://api.gu1.ai/rules"
payload = {
"name": "<string>",
"description": "<string>",
"category": "<string>",
"targetEntityTypes": [{}],
"conditions": {},
"actions": [{}],
"enabled": True,
"priority": 123,
"score": 123,
"status": "<string>",
"evaluationMode": "<string>",
"riskMatrixId": "<string>",
"countries": [{}],
"scope": {},
"tags": [{}],
"creationProvenance": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
category: '<string>',
targetEntityTypes: [{}],
conditions: {},
actions: [{}],
enabled: true,
priority: 123,
score: 123,
status: '<string>',
evaluationMode: '<string>',
riskMatrixId: '<string>',
countries: [{}],
scope: {},
tags: [{}],
creationProvenance: {}
})
};
fetch('http://api.gu1.ai/rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "http://api.gu1.ai/rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'category' => '<string>',
'targetEntityTypes' => [
[
]
],
'conditions' => [
],
'actions' => [
[
]
],
'enabled' => true,
'priority' => 123,
'score' => 123,
'status' => '<string>',
'evaluationMode' => '<string>',
'riskMatrixId' => '<string>',
'countries' => [
[
]
],
'scope' => [
],
'tags' => [
[
]
],
'creationProvenance' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://api.gu1.ai/rules"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"category\": \"<string>\",\n \"targetEntityTypes\": [\n {}\n ],\n \"conditions\": {},\n \"actions\": [\n {}\n ],\n \"enabled\": true,\n \"priority\": 123,\n \"score\": 123,\n \"status\": \"<string>\",\n \"evaluationMode\": \"<string>\",\n \"riskMatrixId\": \"<string>\",\n \"countries\": [\n {}\n ],\n \"scope\": {},\n \"tags\": [\n {}\n ],\n \"creationProvenance\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://api.gu1.ai/rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"category\": \"<string>\",\n \"targetEntityTypes\": [\n {}\n ],\n \"conditions\": {},\n \"actions\": [\n {}\n ],\n \"enabled\": true,\n \"priority\": 123,\n \"score\": 123,\n \"status\": \"<string>\",\n \"evaluationMode\": \"<string>\",\n \"riskMatrixId\": \"<string>\",\n \"countries\": [\n {}\n ],\n \"scope\": {},\n \"tags\": [\n {}\n ],\n \"creationProvenance\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/rules")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"category\": \"<string>\",\n \"targetEntityTypes\": [\n {}\n ],\n \"conditions\": {},\n \"actions\": [\n {}\n ],\n \"enabled\": true,\n \"priority\": 123,\n \"score\": 123,\n \"status\": \"<string>\",\n \"evaluationMode\": \"<string>\",\n \"riskMatrixId\": \"<string>\",\n \"countries\": [\n {}\n ],\n \"scope\": {},\n \"tags\": [\n {}\n ],\n \"creationProvenance\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"organizationId": "<string>",
"status": "<string>",
"enabled": true,
"version": 123,
"createdAt": "<string>",
"createdBy": "<string>",
"creationProvenance": {},
"aiReview": {}
}Referencia API
Crear Regla
Crear una nueva regla para detección de riesgos y monitoreo de cumplimiento — en el motor de reglas gu1 para compliance y detección de riesgo.
POST
/
rules
Crear Regla
curl --request POST \
--url http://api.gu1.ai/rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"category": "<string>",
"targetEntityTypes": [
{}
],
"conditions": {},
"actions": [
{}
],
"enabled": true,
"priority": 123,
"score": 123,
"status": "<string>",
"evaluationMode": "<string>",
"riskMatrixId": "<string>",
"countries": [
{}
],
"scope": {},
"tags": [
{}
],
"creationProvenance": {}
}
'import requests
url = "http://api.gu1.ai/rules"
payload = {
"name": "<string>",
"description": "<string>",
"category": "<string>",
"targetEntityTypes": [{}],
"conditions": {},
"actions": [{}],
"enabled": True,
"priority": 123,
"score": 123,
"status": "<string>",
"evaluationMode": "<string>",
"riskMatrixId": "<string>",
"countries": [{}],
"scope": {},
"tags": [{}],
"creationProvenance": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
category: '<string>',
targetEntityTypes: [{}],
conditions: {},
actions: [{}],
enabled: true,
priority: 123,
score: 123,
status: '<string>',
evaluationMode: '<string>',
riskMatrixId: '<string>',
countries: [{}],
scope: {},
tags: [{}],
creationProvenance: {}
})
};
fetch('http://api.gu1.ai/rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "http://api.gu1.ai/rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'category' => '<string>',
'targetEntityTypes' => [
[
]
],
'conditions' => [
],
'actions' => [
[
]
],
'enabled' => true,
'priority' => 123,
'score' => 123,
'status' => '<string>',
'evaluationMode' => '<string>',
'riskMatrixId' => '<string>',
'countries' => [
[
]
],
'scope' => [
],
'tags' => [
[
]
],
'creationProvenance' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://api.gu1.ai/rules"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"category\": \"<string>\",\n \"targetEntityTypes\": [\n {}\n ],\n \"conditions\": {},\n \"actions\": [\n {}\n ],\n \"enabled\": true,\n \"priority\": 123,\n \"score\": 123,\n \"status\": \"<string>\",\n \"evaluationMode\": \"<string>\",\n \"riskMatrixId\": \"<string>\",\n \"countries\": [\n {}\n ],\n \"scope\": {},\n \"tags\": [\n {}\n ],\n \"creationProvenance\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://api.gu1.ai/rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"category\": \"<string>\",\n \"targetEntityTypes\": [\n {}\n ],\n \"conditions\": {},\n \"actions\": [\n {}\n ],\n \"enabled\": true,\n \"priority\": 123,\n \"score\": 123,\n \"status\": \"<string>\",\n \"evaluationMode\": \"<string>\",\n \"riskMatrixId\": \"<string>\",\n \"countries\": [\n {}\n ],\n \"scope\": {},\n \"tags\": [\n {}\n ],\n \"creationProvenance\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/rules")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"category\": \"<string>\",\n \"targetEntityTypes\": [\n {}\n ],\n \"conditions\": {},\n \"actions\": [\n {}\n ],\n \"enabled\": true,\n \"priority\": 123,\n \"score\": 123,\n \"status\": \"<string>\",\n \"evaluationMode\": \"<string>\",\n \"riskMatrixId\": \"<string>\",\n \"countries\": [\n {}\n ],\n \"scope\": {},\n \"tags\": [\n {}\n ],\n \"creationProvenance\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"organizationId": "<string>",
"status": "<string>",
"enabled": true,
"version": 123,
"createdAt": "<string>",
"createdBy": "<string>",
"creationProvenance": {},
"aiReview": {}
}Descripción General
Crea una nueva regla para detección automatizada de riesgos, monitoreo de cumplimiento y prevención de fraude. Toda alta ejecuta una revisión IA síncrona (incluida; no debita tokens de IA) antes de persistir. Las reglas nuevas quedan siempre enin_progress con enabled: false para que revises sugerencias y actives manualmente.
Los campos
status y enabled en el body de create se ignoran — la API fuerza status: in_progress y enabled: false. Esperá varios segundos de latencia. Flujos bundle/plantilla crean una revisión por regla.Endpoint
POST http://api.gu1.ai/rules
Autenticación
Requiere una clave API válida en el encabezado de Authorization:Authorization: Bearer YOUR_API_KEY
Cuerpo de la Solicitud
string
required
Nombre descriptivo para la regla
string
required
Descripción detallada de lo que detecta la regla
string
required
Categoría de la regla:
kyc, kyb, aml, fraud, compliance, customarray
required
Array de tipos de entidad a los que aplica esta regla:
["person"], ["company"], ["transaction"], ["person", "company"]object
required
Estructura de lógica de condiciones (ver Estructura de Condiciones a continuación)
array
required
Array de acciones a ejecutar cuando las condiciones coincidan (ver Acciones a continuación)
boolean
Ignorado en create — siempre se guarda
enabled: false.number
default:"50"
Prioridad de la regla (1-100). Valores más altos = mayor prioridad
number
Puntaje de riesgo a asignar cuando la regla coincida (0-100). Usado en matrices de riesgo basadas en puntajes
string
Ignorado en create — siempre se guarda
in_progress (en configuración).string
default:"async"
Modo de evaluación:
sync (inmediato) o async (procesamiento en segundo plano)string
UUID de la matriz de riesgo para asociar esta regla
array
Array de códigos de país ISO para restringir la ejecución de la regla:
["BR", "AR", "US"]object
Configuración de alcance adicional incluyendo ventanas temporales y disparadores
array
Array de etiquetas para organizar reglas:
["high-risk", "pep", "sanctions"]object
Metadatos opcionales de origen. Si se omite, default
api (API key) o user (sesión). Campos: sourceType, conversationId, messageId, platformAgentCategory, triggeredByUserId.Estructura de Condiciones
Las reglas utilizan una estructura de condiciones anidadas con operadores lógicos:{
"operator": "AND" | "OR" | "NOT" | "XOR",
"conditions": [
{
"id": "cond-unique-id",
"type": "simple",
"field": "enrichmentData.normalized.taxId",
"operator": "eq",
"value": "12.345.678/0001-90",
"filters": [],
"countryMetadata": {
"countryCode": "BR",
"confidence": 100,
"manuallySet": true,
"autoDetected": false,
"reason": "Selected from BR enrichment fields"
}
}
]
}
Campos de Condiciones
- operator: Operador lógico que conecta condiciones (
AND,OR,NOT,XOR) - conditions: Array de objetos de condición (pueden estar anidados para lógica compleja)
- id: Identificador único para la condición
- type: Tipo de condición (
simple,complex,array,object) - field: Ruta del campo a evaluar (ej.,
taxId,entityData.company.revenue,enrichmentData.normalized.sanctions.$.type) - operator: Operador de comparación (ver Operadores a continuación)
- value: Valor con el que comparar
- filters: Array de filtros para campos de array/objeto
- countryMetadata: Metadatos específicos del país para la condición
Operadores
Operadores de Comparación
eq- Igualneq- No igualgt- Mayor quegte- Mayor o igual quelt- Menor quelte- Menor o igual que
Operadores de Texto
contains- Contiene subcadenanotContains- No contiene subcadenastartsWith- Comienza conendsWith- Termina conregex- Coincide con expresión regular
Operadores de Array
in- El valor está en el arraynotIn- El valor no está en el arrayhasAny- Tiene alguno de los valoreshasAll- Tiene todos los valores
Operadores de Lista
inList- El valor existe en una lista de datosnotInList- El valor no existe en una lista de datos
Operadores de Existencia
exists- El campo existenotExists- El campo no existeisEmpty- El campo está vacío/nuloisNotEmpty- El campo no está vacío/nulo
Operadores Booleanos
isTrue- El campo booleano es verdaderoisFalse- El campo booleano es falso
Sintaxis de Campos de Array
Para campos dentro de arrays, use el símbolo$:
{
"field": "enrichmentData.normalized.sanctions.$.type",
"operator": "in",
"value": "terrorism",
"filters": []
}
sanctions tiene type igual a "terrorism".
Filtros
Puede pre-filtrar elementos del array antes de la evaluación:{
"field": "enrichmentData.normalized.legalProceedings.$.amount",
"operator": "gt",
"value": 100000,
"filters": [
{
"field": "status",
"operator": "eq",
"value": "active"
}
]
}
Acciones
Las reglas soportan múltiples tipos de acciones:Crear Alerta
{
"type": "createAlert",
"createAlert": {
"type": "FRAUD" | "COMPLIANCE" | "AML" | "KYC" | "OTHER",
"title": "High Risk Transaction Detected",
"description": "Transaction exceeds threshold",
"severity": "LOW" | "MEDIUM" | "HIGH" | "CRITICAL",
"recipients": ["user@example.com"]
},
"tags": ["high-value", "cross-border"]
}
Actualizar Estado de Entidad
{
"type": "updateEntityStatus",
"updateEntityStatus": {
"status": "blocked",
"reason": "Failed sanctions check"
}
}
Enviar Notificación
{
"type": "sendNotification",
"sendNotification": {
"channel": "email" | "sms" | "webhook",
"recipients": ["compliance@company.com"],
"message": "Urgent: High risk entity detected"
}
}
Crear Caso
{
"type": "createCase",
"createCase": {
"title": "PEP Investigation Required",
"description": "Entity flagged as politically exposed person",
"assignee": "user-uuid"
}
}
Ejemplos de Solicitudes
Regla KYC Simple - Verificar Tax ID
curl -X POST http://api.gu1.ai/rules \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "CNPJ Blocklist Check",
"description": "Block companies with specific CNPJ",
"category": "kyb",
"targetEntityTypes": ["company"],
"enabled": true,
"priority": 100,
"score": 85,
"conditions": {
"operator": "AND",
"conditions": [
{
"id": "cond-1",
"type": "simple",
"field": "enrichmentData.normalized.taxId",
"operator": "eq",
"value": "33.592.510/0001-54",
"filters": [],
"countryMetadata": {
"countryCode": "BR",
"confidence": 100,
"manuallySet": true,
"autoDetected": false,
"reason": "Selected from BR enrichment fields"
}
}
]
},
"actions": [
{
"type": "createAlert",
"createAlert": {
"type": "COMPLIANCE",
"title": "Blocklisted Company Detected",
"description": "Company CNPJ found in blocklist",
"severity": "CRITICAL",
"recipients": ["compliance@company.com"]
},
"tags": ["blocklist", "high-priority"]
},
{
"type": "updateEntityStatus",
"updateEntityStatus": {
"status": "blocked",
"reason": "CNPJ in blocklist"
}
}
],
"scope": {
"type": "entity",
"countries": ["BR"],
"entityTypes": ["company"]
},
"status": "active",
"evaluationMode": "sync"
}'
const response = await fetch('http://api.gu1.ai/rules', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'CNPJ Blocklist Check',
description: 'Block companies with specific CNPJ',
category: 'kyb',
targetEntityTypes: ['company'],
enabled: true,
priority: 100,
score: 85,
conditions: {
operator: 'AND',
conditions: [
{
id: 'cond-1',
type: 'simple',
field: 'enrichmentData.normalized.taxId',
operator: 'eq',
value: '33.592.510/0001-54',
filters: [],
countryMetadata: {
countryCode: 'BR',
confidence: 100,
manuallySet: true,
autoDetected: false,
reason: 'Selected from BR enrichment fields'
}
}
]
},
actions: [
{
type: 'createAlert',
createAlert: {
type: 'COMPLIANCE',
title: 'Blocklisted Company Detected',
description: 'Company CNPJ found in blocklist',
severity: 'CRITICAL',
recipients: ['compliance@company.com']
},
tags: ['blocklist', 'high-priority']
}
],
scope: {
type: 'entity',
countries: ['BR'],
entityTypes: ['company']
},
status: 'active',
evaluationMode: 'sync'
})
});
const rule = await response.json();
console.log('Rule created:', rule.id);
import requests
response = requests.post(
'http://api.gu1.ai/rules',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'name': 'CNPJ Blocklist Check',
'description': 'Block companies with specific CNPJ',
'category': 'kyb',
'targetEntityTypes': ['company'],
'enabled': True,
'priority': 100,
'score': 85,
'conditions': {
'operator': 'AND',
'conditions': [
{
'id': 'cond-1',
'type': 'simple',
'field': 'enrichmentData.normalized.taxId',
'operator': 'eq',
'value': '33.592.510/0001-54',
'filters': [],
'countryMetadata': {
'countryCode': 'BR',
'confidence': 100,
'manuallySet': True,
'autoDetected': False,
'reason': 'Selected from BR enrichment fields'
}
}
]
},
'actions': [
{
'type': 'createAlert',
'createAlert': {
'type': 'COMPLIANCE',
'title': 'Blocklisted Company Detected',
'description': 'Company CNPJ found in blocklist',
'severity': 'CRITICAL',
'recipients': ['compliance@company.com']
},
'tags': ['blocklist', 'high-priority']
}
],
'scope': {
'type': 'entity',
'countries': ['BR'],
'entityTypes': ['company']
},
'status': 'active',
'evaluationMode': 'sync'
}
)
rule = response.json()
print(f"Rule created: {rule['id']}")
Regla Compleja - Verificación de Sanciones con Múltiples Condiciones
curl -X POST http://api.gu1.ai/rules \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Terrorism Sanctions Check",
"description": "Detect entities with terrorism-related sanctions",
"category": "aml",
"targetEntityTypes": ["person", "company"],
"enabled": true,
"priority": 100,
"score": 95,
"conditions": {
"operator": "OR",
"conditions": [
{
"id": "cond-1",
"type": "simple",
"field": "enrichmentData.normalized.sanctions.$.type",
"operator": "in",
"value": "terrorism",
"filters": [],
"countryMetadata": {
"countryCode": "GLOBAL",
"confidence": 100,
"manuallySet": true,
"autoDetected": false,
"reason": "Global sanctions field"
}
},
{
"id": "cond-2",
"type": "simple",
"field": "enrichmentData.normalized.sanctioned",
"operator": "isTrue",
"value": true,
"filters": []
}
]
},
"actions": [
{
"type": "createAlert",
"createAlert": {
"type": "AML",
"title": "Sanctions Match - Immediate Review Required",
"description": "Entity matched terrorism sanctions list",
"severity": "CRITICAL",
"recipients": ["aml-team@company.com"]
},
"tags": ["sanctions", "terrorism", "critical"]
},
{
"type": "updateEntityStatus",
"updateEntityStatus": {
"status": "blocked",
"reason": "Terrorism sanctions match"
}
},
{
"type": "createCase",
"createCase": {
"title": "Sanctions Investigation Required",
"description": "Entity flagged for terrorism-related sanctions",
"assignee": "compliance-lead-uuid"
}
}
],
"scope": {
"type": "entity",
"entityTypes": ["person", "company"]
},
"status": "active",
"evaluationMode": "sync",
"tags": ["sanctions", "aml", "critical"]
}'
Regla de Monitoreo de Transacciones
curl -X POST http://api.gu1.ai/rules \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "High Value Transaction Alert",
"description": "Alert on transactions over $50,000 USD",
"category": "fraud",
"targetEntityTypes": ["transaction"],
"enabled": true,
"priority": 80,
"score": 70,
"conditions": {
"operator": "AND",
"conditions": [
{
"id": "cond-1",
"type": "simple",
"field": "amountInUsd",
"operator": "gt",
"value": 50000,
"filters": []
},
{
"id": "cond-2",
"type": "simple",
"field": "status",
"operator": "eq",
"value": "PENDING",
"filters": []
}
]
},
"actions": [
{
"type": "createAlert",
"createAlert": {
"type": "FRAUD",
"title": "High Value Transaction Detected",
"description": "Transaction exceeds $50,000 threshold",
"severity": "HIGH",
"recipients": ["fraud-team@company.com"]
},
"tags": ["high-value", "pending-review"]
}
],
"scope": {
"type": "transaction"
},
"status": "active",
"evaluationMode": "sync"
}'
Respuesta
string
UUID de la regla creada
string
Nombre de la regla
string
Descripción de la regla
string
ID de su organización
string
Estado actual de la regla
boolean
Si la regla está habilitada
number
Número de versión de la regla
string
Marca de tiempo ISO de creación
string
ID del usuario que creó la regla
object
Metadatos de origen (
sourceType, ids de chat agente opcionales).object
Resumen de revisión IA síncrona:
verified, reason, functionalityDescription, suggestions, issues.Ejemplo de Respuesta
{
"success": true,
"message": "Rule created successfully",
"rule": {
"id": "e2cdd639-52cc-4749-9b16-927bfa5dfaea",
"organizationId": "71e8f908-e032-4fcb-b0ce-ad0cd0ffb236",
"name": "CNPJ Blocklist Check",
"description": "Block companies with specific CNPJ",
"category": "kyb",
"status": "in_progress",
"enabled": false,
"priority": 100,
"score": 85,
"conditions": {
"operator": "AND",
"conditions": [...]
},
"actions": [
{
"type": "createAlert",
"createAlert": {...},
"tags": ["blocklist", "high-priority"]
}
],
"scope": {
"type": "entity",
"countries": ["BR"],
"entityTypes": ["company"]
},
"targetEntityTypes": ["company"],
"evaluationMode": "sync",
"version": 1,
"previousVersionId": null,
"tags": [],
"createdBy": "f35c10cb-9b67-4cda-9aea-f36567375dba",
"createdAt": "2024-12-23T10:00:00.000Z",
"updatedAt": "2024-12-23T10:00:00.000Z",
"stats": {
"executions": 0,
"successes": 0,
"failures": 0
}
},
"aiReview": {
"verified": true,
"reason": "Las condiciones están alineadas con la descripción.",
"functionalityDescription": "Genera alerta KYB cuando el CNPJ coincide con la blocklist.",
"suggestions": [],
"issues": []
}
}
Respuestas de Error
400 Bad Request - Condición Inválida
{
"error": "Validation failed",
"details": {
"field": "conditions",
"message": "Invalid operator 'xyz'"
}
}
400 Bad Request - Campos Requeridos Faltantes
{
"error": "Validation failed",
"details": {
"missingFields": ["name", "targetEntityTypes", "conditions"]
}
}
401 Unauthorized
{
"error": "Invalid or missing API key"
}
Mejores Prácticas
- Comience con Modo Shadow: Use
status: "shadow"para probar reglas sin afectar producción - Use Nombres Descriptivos: Haga que los nombres de las reglas sean claros y buscables
- Establezca Prioridades Apropiadas: Las reglas de mayor prioridad se ejecutan primero (escala 1-100)
- Etiquete sus Reglas: Use etiquetas para organización y filtrado
- Reglas Específicas por País: Use
scope.countriespara cumplimiento geo-específico - Pruebe Exhaustivamente: Pruebe las reglas con datos de ejemplo antes de habilitar
- Monitoree el Rendimiento: Use modo sync para reglas críticas en tiempo real, async para procesamiento por lotes
- Puntúe Estratégicamente: Alinee los puntajes con los umbrales de su matriz de riesgo
Ver También
- Referencia de Campos de Condiciones - Lista completa de campos de condición disponibles por tipo de entidad y país
- Ejecutar Regla - Probar reglas contra entidades específicas
- Listar Reglas - Consultar y filtrar reglas
- Actualizar Regla - Modificar reglas existentes
Was this page helpful?