Saltar al contenido principal

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

Ejemplo 1
{
"fullName": "Sheriff SPA",
"isMonitoring": true,
"isJuridicalPerson": true,
"searchErrors": 0
}
Ejemplo 2
{
"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:
  1. 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.
  2. 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.

  3. El cliente debe proporcionar a Sheriff el método de autenticación preferido y las credenciales correspondientes al registrar el webhook.

  4. 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…
  1. 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

  1. 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.
  2. 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
  3. 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
}