Carga de un perfil en Compliance
En esta sección se describe el proceso para cargar y consultar perfiles de compliance mediante la API de The Sheriff.
Detalle API
- URL:
/integration/compliance/loadProfile
- Método:
POST
Headers requeridos
Content-Type: application/json
Authorization: Bearer {tu-token}
Cuerpo de la solicitud
{
"fullName": "String (obligatorio, si es persona jurídica debe tener mínimo una palabra con 3 caracteres, mientras que si es persona natural debe tener mínimo un nombre y un apellido, es decir, al menos dos palabras.)",
"isMonitoring": "Boolean (obligatorio, debe ser true o false)",
"isJuridicalPerson": "Boolean (obligatorio, use true para persona jurídica o false para persona natural)",
"searchErrors": "Entero (obligatorio, valores permitidos: 0, 1, 2). El valor 0 indica búsqueda más precisa, mientras que 1 y 2 ofrecen búsquedas más flexibles con sugerencias de nombres parecidos."
}
Ejemplos
{
"fullName": "Sheriff SPA",
"isMonitoring": true,
"isJuridicalPerson": true,
"searchErrors": 0
}
{
"fullName": "Juan Sebastián Pérez García",
"isMonitoring": true,
"isJuridicalPerson": false,
"searchErrors": 1
}
Configurar un Webhook para la respuesta
El proceso de respuesta se realizará mediante un webhook proporcionado por el cliente con método POST al cual Sheriff enviará los resultados.
Requisitos del Webhook:
-
Soporte para gzip:
- El webhook debe aceptar datos comprimidos en formato gzip, ya que Sheriff enviará las respuestas con este formato.
- Esto se indicará mediante el header:
Content-Encoding: gzip
. - Configuración: Asegúrese de que su servidor esté preparado para recibir y descomprimir solicitudes con este header. Esto puede requerir middleware o configuraciones adicionales según el framework que utilice.
-
Opciones de Autenticación: Sheriff permitirá distintas formas de autenticación, más abajo se ve en detalle cómo serán los headers enviados según el método de autenticación que elijan.
-
El cliente debe proporcionar a Sheriff el método de autenticación preferido y las credenciales correspondientes al registrar el webhook.
-
Headers Enviados por Sheriff al Webhook:
Content-Type: application/json
Content-Encoding: gzip
- Dependiendo del método de autenticación elegido:
- Bearer Token: Authorization:
Bearer {TOKEN_INTEGRATION}
- API Key:
x-api-key: {API_KEY}
- Otros…
- Bearer Token: Authorization:
- Recepción del Payload: El cuerpo de la solicitud será un archivo JSON comprimido con gzip, que deberá ser descomprimido para acceder a los datos.
Categorías de búsqueda
El servidor de Sheriff procesará la solicitud del cliente y buscará coincidencias en las siguientes categorías:
- Malla Societaria
- PEP Chile
- Familiares PEP
- Listas Internacionales
- Penal
- Noticias
Observaciones Adicionales
- Plataforma Espejo:
- Los perfiles cargados a través de la API estarán disponibles también en la plataforma:
- Consulta: Visible por 48 horas.
- Monitoreo: Visible hasta ser eliminado.
- Los perfiles cargados a través de la API estarán disponibles también en la plataforma:
- Perfiles Existentes:
- Si realiza una búsqueda de un perfil ya activo, los resultados se mostrarán sin costo adicional, siempre que las siguientes variables coincidan exactamente:
fullName
searchErrors
personType
- Si realiza una búsqueda de un perfil ya activo, los resultados se mostrarán sin costo adicional, siempre que las siguientes variables coincidan exactamente:
- Optimización de Payload:
- Sheriff enviará las respuestas al webhook en formato JSON comprimido (gzip) para optimizar la transferencia de datos. Es responsabilidad del cliente asegurarse de que su servidor pueda descomprimir este contenido.
Ejemplo respuesta inicial
{
"success": true,
"data": {
"message": "Su solicitud ha sido recibida y está siendo procesada"
}
}
Manejo de errores
En caso de fallo, la API puede devolver errores en formato JSON. Los errores más comunes incluyen:
- No se encontró el token de autenticación.
- No tienes permiso para cargar perfiles de compliance por API.
- Esta corporación no tiene permiso para cargar perfiles de compliance por API.
- Parámetros obligatorios faltantes o inválidos (por ejemplo,
fullName
debe tener al menos 3 caracteres).
Formato de la respuesta sin coincidencias
{
"fullName": String,
"personType": String ("natural" o "juridical"),
"searchErrors": Entero (0, 1 o 2),
"isNewProfile": Boolean,
"summary": {
"pepChile": {
"totalResults": Entero,
"risk": String ("free", "medium" o "critical")
},
"pepChileFamiliares": {
"totalResults": Entero,
"risk": String ("free", "medium" o "critical")
},
"blacklist": {
"totalResults": Entero,
"risk": String ("free", "medium" o "critical")
},
"penal": {
"totalResults": Entero,
"risk": String ("free", "medium" o "critical")
},
"societaryMesh": {
"totalResults": Entero,
"risk": NULL
},
"news": {
"totalResults": Entero,
"risk": NULL
}
},
"risk": String ("free", "medium" o "critical"),
"dataSocietaryMesh": [],
"totalSocietaryMesh": 0,
"dataPepChile": [],
"totalPepChile": 0,
"dataPepChileFamily": [],
"totalPepChileFamily": 0,
"dataBlacklist": [],
"totalBlacklist": 0,
"dataPenal": [],
"totalPenal": 0,
"dataNews": [],
"totalNews": 0
}
Formato completo de la respuesta
{
"fullName": String,
"personType": String (natural o juridical),
"searchErrors": Number (0, 1 o 2),
"isNewProfile": Boolean,
"summary": {
"pepChile": {
"totalResults": Number,
"risk": String (free, medium o critical)
},
"pepChileFamiliares": {
"totalResults": Number,
"risk": String (free, medium o critical)
},
"blacklist": {
"totalResults": Number,
"risk": String (free, medium o critical)
},
"penal": {
"totalResults": Number,
"risk": String (free, medium o critical)
},
"societaryMesh": {
"totalResults": Number,
"risk": NULL
},
"news": {
"totalResults": Number,
"risk": NULL
}
},
"risk": String (free, medium o critical),
"dataSocietaryMesh": [
{
"nombreSocio": String,
"rutSocio": String o NULL,
"nombreSociedad": String,
"rutSociedad": String o NULL,
"fecha": String o NULL,
"socios": [
{
"nombre": String,
"rut": String o NULL,
"domicilio": String o NULL,
"tipoDeParticipacion": String,
"cargo": String o NULL,
"cargoEjecutivoPrincipal": String o NULL,
"fechaNombramiento": String o NULL,
"porcentajeParticipacion": Number o NULL
}
],
"extractos": [
{
"actuacion": String,
"fecha": String,
"linkPdf": String o NULL
}
],
"ultimaFecha": String o NULL,
"societiesParticipant": Array o NULL,
"source": String
}
],
"totalSocietaryMesh": Number,
"dataPepChile": [
{
"name": String,
"position": String,
"institution": String,
"period": String o NULL
}
],
"totalPepChile": Number,
"dataPepChileFamily": [
{
"name": String,
"position": String,
"institution": String,
"link": String o NULL,
"period": String o NULL,
"relationsData": [
{
"nombre": String,
"parentesco": String
}
]
}
],
"totalPepChileFamily": Number,
"dataBlacklist": [
{
"name": String,
"list": String,
"link": String o NULL
}
],
"totalBlacklist": Number,
"dataPenal": [
{
"name": String,
"posture": String,
"role": String,
"date": String,
"infraction": String,
"status": String,
"stage": String,
"litigants": [
{
"nombre": String,
"sujeto": String,
"situacionLibertad": String o NULL
}
],
"matter": String,
"tribunal": String,
"isDenounced": Boolean
}
],
"totalPenal": Number,
"dataNews": [
{
"name": String,
"title": String,
"source": String,
"link": String,
"sourceLink": String,
"topic": [
String
],
"period": String
}
],
"totalNews": Number
}