Obtener Regla
curl --request GET \
--url http://api.gu1.ai/rules/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "http://api.gu1.ai/rules/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://api.gu1.ai/rules/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://api.gu1.ai/rules/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://api.gu1.ai/rules/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/rules/{id}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"organizationId": "<string>",
"name": "<string>",
"description": "<string>",
"category": "<string>",
"status": "<string>",
"enabled": true,
"priority": 123,
"score": 123,
"conditions": {},
"conditionCode": "<string>",
"actions": [
{}
],
"scope": {},
"targetEntityTypes": [
{}
],
"evaluationMode": "<string>",
"riskMatrixId": "<string>",
"version": 123,
"previousVersionId": "<string>",
"tags": [
{}
],
"stats": {},
"createdBy": "<string>",
"createdAt": "<string>",
"updatedBy": "<string>",
"updatedAt": "<string>"
}Referencia API
Obtener Regla
Recuperar detalles de una regla específica por ID — en el motor de reglas gu1 para compliance y detección de riesgo, con ejemplos para get.
GET
/
rules
/
{id}
Obtener Regla
curl --request GET \
--url http://api.gu1.ai/rules/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "http://api.gu1.ai/rules/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://api.gu1.ai/rules/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://api.gu1.ai/rules/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://api.gu1.ai/rules/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/rules/{id}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"organizationId": "<string>",
"name": "<string>",
"description": "<string>",
"category": "<string>",
"status": "<string>",
"enabled": true,
"priority": 123,
"score": 123,
"conditions": {},
"conditionCode": "<string>",
"actions": [
{}
],
"scope": {},
"targetEntityTypes": [
{}
],
"evaluationMode": "<string>",
"riskMatrixId": "<string>",
"version": 123,
"previousVersionId": "<string>",
"tags": [
{}
],
"stats": {},
"createdBy": "<string>",
"createdAt": "<string>",
"updatedBy": "<string>",
"updatedAt": "<string>"
}Descripción General
Recupera información completa sobre una regla específica, incluyendo sus condiciones, acciones, estadísticas de ejecución e historial de versiones.Endpoint
GET http://api.gu1.ai/rules/{id}
Autenticación
Requiere una clave API válida en el encabezado de Authorization:Authorization: Bearer YOUR_API_KEY
Parámetros de Ruta
string
required
UUID de la regla a recuperar
Respuesta
string
UUID de la regla
string
ID de su organización
string
Nombre de la regla
string
Descripción de la regla
string
Categoría de la regla (kyc, kyb, aml, fraud, compliance, custom)
string
Estado actual (draft, active, shadow, archived, inactive)
boolean
Si la regla está habilitada
number
Prioridad de la regla (1-100)
number
Puntaje de riesgo asignado cuando la regla coincide
object
Estructura de condiciones completa con lógica anidada
string
Representación en cadena JSON de condiciones (para almacenamiento)
array
Array de acciones a ejecutar cuando la regla coincide
object
Configuración de alcance de la regla (países, tipos de entidad, ventanas temporales)
array
Array de tipos de entidad a los que se aplica la regla
string
Modo de evaluación (sync o async)
string
UUID de matriz de riesgo asociada (si existe)
number
Número de versión actual
string
UUID de la versión anterior (si existe)
array
Array de etiquetas para organización
object
Estadísticas de ejecución (ejecuciones, éxitos, fallos)
string
ID del usuario que creó la regla
string
Marca de tiempo ISO de creación
string
ID del usuario que actualizó la regla por última vez
string
Marca de tiempo ISO de última actualización
Ejemplos de Solicitudes
curl -X GET http://api.gu1.ai/rules/e2cdd639-52cc-4749-9b16-927bfa5dfaea \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch(
'http://api.gu1.ai/rules/e2cdd639-52cc-4749-9b16-927bfa5dfaea',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const rule = await response.json();
console.log('Rule:', rule.name);
console.log('Status:', rule.status);
console.log('Executions:', rule.stats.executions);
import requests
response = requests.get(
'http://api.gu1.ai/rules/e2cdd639-52cc-4749-9b16-927bfa5dfaea',
headers={
'Authorization': 'Bearer YOUR_API_KEY'
}
)
rule = response.json()
print(f"Rule: {rule['name']}")
print(f"Status: {rule['status']}")
print(f"Executions: {rule['stats']['executions']}")
Ejemplo de Respuesta
{
"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": "active",
"enabled": true,
"priority": 100,
"score": 85,
"conditions": {
"operator": "AND",
"conditions": [
{
"id": "cond-1766412627987-0",
"type": "simple",
"field": "enrichmentData.normalized.taxId",
"value": "33.592.510/0001-54",
"filters": [],
"operator": "eq",
"countryMetadata": {
"reason": "Selected from BR enrichment fields",
"confidence": 100,
"countryCode": "BR",
"manuallySet": true,
"autoDetected": false
}
}
]
},
"conditionCode": "{\"operator\":\"AND\",\"conditions\":[{\"field\":\"enrichmentData.normalized.taxId\",\"operator\":\"eq\",\"value\":\"33.592.510/0001-54\",\"countryMetadata\":{\"countryCode\":\"BR\",\"autoDetected\":false,\"manuallySet\":true,\"confidence\":100,\"reason\":\"Selected from BR enrichment fields\"},\"filters\":[],\"id\":\"cond-1766412627987-0\",\"type\":\"simple\"}]}",
"actions": [
{
"tags": ["blocklist", "high-priority"],
"type": "createAlert",
"createAlert": {
"type": "COMPLIANCE",
"title": "Blocklisted Company Detected",
"severity": "CRITICAL",
"recipients": ["compliance@company.com"],
"description": "Company CNPJ found in blocklist"
}
},
{
"tags": [],
"type": "updateEntityStatus",
"updateEntityStatus": {
"status": "blocked",
"reason": "CNPJ in blocklist"
}
}
],
"scope": {
"type": "entity",
"countries": ["BR"],
"entityTypes": ["company"],
"temporalWindow": {
"days": 30,
"hours": 24
}
},
"targetEntityTypes": ["company"],
"evaluationMode": "sync",
"riskMatrixId": "d257247b-af7b-402a-ad8f-eac209e2990e",
"version": 1,
"previousVersionId": null,
"abTest": null,
"schedule": null,
"tags": [],
"createdBy": "f35c10cb-9b67-4cda-9aea-f36567375dba",
"createdAt": "2024-12-22T14:10:28.131Z",
"updatedBy": "f35c10cb-9b67-4cda-9aea-f36567375dba",
"updatedAt": "2024-12-22T14:44:29.627Z",
"stats": {
"failures": 0,
"successes": 7,
"executions": 7
}
}
Respuestas de Error
404 Not Found
{
"error": "Rule not found",
"id": "e2cdd639-52cc-4749-9b16-927bfa5dfaea"
}
401 Unauthorized
{
"error": "Invalid or missing API key"
}
403 Forbidden
{
"error": "Access denied",
"message": "You don't have permission to view this rule"
}
Casos de Uso
Mostrar Detalles de Regla en UI
async function loadRuleDetails(ruleId) {
const response = await fetch(
`http://api.gu1.ai/rules/${ruleId}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const rule = await response.json();
return {
id: rule.id,
name: rule.name,
description: rule.description,
status: rule.status,
enabled: rule.enabled,
priority: rule.priority,
score: rule.score,
category: rule.category,
lastUpdated: new Date(rule.updatedAt),
performance: {
executions: rule.stats.executions,
successRate: (rule.stats.successes / rule.stats.executions * 100).toFixed(1) + '%',
failureRate: (rule.stats.failures / rule.stats.executions * 100).toFixed(1) + '%'
},
conditions: rule.conditions,
actions: rule.actions.map(a => ({
type: a.type,
details: a[a.type]
}))
};
}
Monitorear Rendimiento de Regla
def monitor_rule_performance(rule_id):
"""Monitorear estadísticas de ejecución de regla"""
response = requests.get(
f'http://api.gu1.ai/rules/{rule_id}',
headers={
'Authorization': 'Bearer YOUR_API_KEY'
}
)
rule = response.json()
stats = rule['stats']
total = stats['executions']
if total == 0:
print(f"Regla '{rule['name']}' no se ha ejecutado aún")
return
success_rate = (stats['successes'] / total) * 100
failure_rate = (stats['failures'] / total) * 100
print(f"Regla: {rule['name']}")
print(f"Estado: {rule['status']}")
print(f"Habilitada: {rule['enabled']}")
print(f"\nRendimiento:")
print(f" Total de Ejecuciones: {total}")
print(f" Tasa de Éxito: {success_rate:.1f}%")
print(f" Tasa de Fallo: {failure_rate:.1f}%")
print(f"\nÚltima Actualización: {rule['updatedAt']}")
# Alertar si la tasa de fallo es alta
if failure_rate > 10:
print(f"\nADVERTENCIA: Tasa de fallo alta detectada!")
return rule
Clonar Configuración de Regla
async function cloneRule(sourceRuleId, newName) {
// Obtener la regla origen
const response = await fetch(
`http://api.gu1.ai/rules/${sourceRuleId}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const sourceRule = await response.json();
// Crear nueva regla con nombre modificado
const newRule = {
name: newName,
description: `Clonada de: ${sourceRule.name}`,
category: sourceRule.category,
targetEntityTypes: sourceRule.targetEntityTypes,
conditions: sourceRule.conditions,
actions: sourceRule.actions,
enabled: false, // Iniciar deshabilitada
priority: sourceRule.priority,
score: sourceRule.score,
status: 'draft', // Iniciar como borrador
evaluationMode: sourceRule.evaluationMode,
scope: sourceRule.scope,
tags: [...sourceRule.tags, 'cloned']
};
// Crear la regla clonada
const createResponse = await fetch(
'http://api.gu1.ai/rules',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify(newRule)
}
);
const clonedRule = await createResponse.json();
console.log('Regla clonada exitosamente:', clonedRule.id);
return clonedRule;
}
Exportar Configuración de Regla
import json
def export_rule_config(rule_id, output_file):
"""Exportar configuración de regla a archivo JSON"""
response = requests.get(
f'http://api.gu1.ai/rules/{rule_id}',
headers={
'Authorization': 'Bearer YOUR_API_KEY'
}
)
rule = response.json()
# Remover campos de runtime
export_data = {
'name': rule['name'],
'description': rule['description'],
'category': rule['category'],
'targetEntityTypes': rule['targetEntityTypes'],
'conditions': rule['conditions'],
'actions': rule['actions'],
'priority': rule['priority'],
'score': rule['score'],
'evaluationMode': rule['evaluationMode'],
'scope': rule.get('scope'),
'tags': rule.get('tags', [])
}
# Escribir a archivo
with open(output_file, 'w') as f:
json.dump(export_data, f, indent=2)
print(f"Configuración de regla exportada a {output_file}")
return export_data
Mejores Prácticas
- Cache de Datos de Regla: Cachear reglas accedidas frecuentemente para reducir llamadas API
- Monitorear Estadísticas: Revisar regularmente el objeto
statspara insights de rendimiento - Rastrear Versiones: Usar
versionypreviousVersionIdpara pistas de auditoría - Verificar Estado: Siempre verificar
enabledystatusantes de la ejecución - Usar Etiquetas: Aprovechar etiquetas para organización y filtrado
Ver También
- Listar Reglas - Consultar y filtrar reglas
- Actualizar Regla - Modificar configuración de regla
- Ejecutar Regla - Probar regla contra entidades
- Crear Regla - Crear nuevas reglas
Was this page helpful?