Está en la página 1de 39

DOCUMENTO DE INTEGRACIÓN

PAQUETE I – API REST


SID Documentación Técnica – API – Paquete I

Contenido

Contenido .................................................................................... 2
Histórico de versiones ................................................................ 3
Introducción ................................................................................ 4
Flujo general del proceso ........................................................... 5
Métodos de integración .............................................................. 8
Scan Barcode .............................................................................. 9
New Operation ........................................................................... 10
Add front .................................................................................... 11
Add back .................................................................................... 13
Register ...................................................................................... 14
Add Barcode .............................................................................. 16
End Operation ........................................................................... 18
Códigos Generales de Retorno ................................................ 21
Anexo verificación comunicación Gateway ............................ 26
Servicio /status .......................................................................... 26
Servicio / .................................................................................... 27
Anexo ejemplo práctico de implementación ........................... 28
PHP............................................................................................. 28
scanBarcode.............................................................................. 28
newOperation ............................................................................ 29
addFront .................................................................................... 31
addBack ..................................................................................... 32
register ....................................................................................... 33
addBarcode ............................................................................... 34
endOperation ............................................................................. 36
Apartado de Recomendaciones para efectuar la prueba de
vida ............................................................................................. 37
¿Qué es la prueba de vida? ...................................................... 38
Funcionamiento......................................................................... 38
Características de la fotografía a enviar .................................. 39

2
SID Documentación Técnica – API – Paquete I

Histórico de versiones

Nro Fecha Autor / Quien Modificó Comentarios de Revisión


el Documento
1 6/09/2018 VU Agregado de control de versiones
2 11/10/2018 VU Se incorporan los datos de Lugar de Nacimiento
y Nacionalidad en la respuesta del método
endOperation
3 31/10/2018 VU Incorporación de imagen guía para captura de
frente y dorso de documento a enviar en
AddFront y AddBack
4 31/12/2018 VU Se agregan códigos de retorno
5 21/11/2019 VU Se actualiza versión de API (v 1.1.12.2)

3
SID Documentación Técnica – API – Paquete I

Introducción

La solución SID ofrece tres paquetes:


 Paquete 1: Identificación con documento de identidad y biometría facial
Si la identidad es validada retorna: Número de DNI, Nombres y Apellido,
Género, Fecha de nacimiento, Vencimiento del documento, Emisión del
documento, CUIL, Domicilio, Código postal, Ciudad Municipio, Provincia, País,
Mensaje de fallecimiento y porcentaje de matcheo biométrico
 Paquete 2: Identificación con biometría facial
Si la identidad es validada retorna: Porcentaje de matcheo biométrico.
 Paquete 3: Validación del DNI
Si el DNI es el ejemplar vigente retorna: Ejemplar, Vencimiento del documento,
Emisión del documento, Nombre y Apellido, Fecha de nacimiento, CUIL,
Domicilio, Código postal, Ciudad, Municipio, Provincia, País, Mensaje de
fallecimiento.

El presente documento hace referencia al consumo del Paquete 1 vía Web, el


cual permite realizar la integración por API Rest del paquete de consumo.

4
SID Documentación Técnica – API – Paquete I

Flujo general del proceso

El siguiente flujo representa la implementación de los métodos de la API para


consumir correctamente las funcionalidades correspondientes al paquete de consumo,
a modo guía.

5
SID Documentación Técnica – API – Paquete I

1. Para comenzar con el proceso es necesario contar con el número de


documento y género del ciudadano, esto se puede realizar ingresando
manualmente los datos. O bien, de forma opcional, invocar al método
scanBarcode se puede obtener esta información por medio de la lectura del
PDF417 del documento de identidad.

2. El primer método del proceso es NewOperation. Permite iniciar y crear la


transacción. Retorna el id de la operación, que se utilizará en el resto de los
métodos de la API, proporcionando trazabilidad en el flujo.
3. Se solicita fotografía del frente del documento de identidad al ciudadano.
4. Se adhiere a la operación el frente del documento utilizando el método Add
Front. Se envía una imagen en formato base64 al método y el número de
operación en la cual se incorpora esta imagen. La fotografía del frente del
documento se utiliza para obtener los datos personales contenidos en él y
efectuar la validación del plástico. Los resultados se retornan al final del
proceso.
5. Se solicita fotografía del dorso del documento de identidad ciudadano.
6. Se adhiere a la operación el dorso del documento utilizando el método Add
Back. Se envía una imagen en formato base64 al método y el número de
operación en la cual se incopora esta imagen. La fotografía del dorso del
documento se utiliza para obtener los datos personales contenidos en él y
efectuar la validación del plástico. Los resultados se retornan al final del
proceso.
7. Se debe adherir a la operación los datos capturados de la lectura del PDF 417
obtenidos en el primer paso del flujo. Para ello, se utiliza el método Add
Barcode. Este método permite incorporar a la operación la información
obtenida del PDF 417 del documento, para obtener la vigencia del documento
por medio del número de trámite, número de documento y género, al final del
proceso.
8. Se solicita fotografía selfie con prueba de vida al ciudadano. Para el correcto
funcionamiento del paquete de consumo por medio de este canal, es
obligatorio el envío de una fotografía del rostro con expresión neutral (selfie
neutral o SN), que cumpla con las normas ICAO detalladas en el anexo
“Caracteristicas de la fotografía a enviar” de este documento.
Adicionalmente, se pueden enviar más de una fotografía además de la SN.
Dichos gestos adicionales están descriptos en la documentación anexa.
9. Se adhiere a la operación la/las fotografia selfie del ciudadano utilizando el
método Register. Esta fotografía será comparada biométricamente con la
fotografía que Renaper dispone en su base de datos.
El resto de las fotografías se envían para ser analizadas por nuestros servicios.

6
SID Documentación Técnica – API – Paquete I

10. Se finaliza la operación utilizando el método End Operation. Este método


permite obtener el resultado final del proceso, por medio de la siguiente
información:
o Porcentaje de match biométrico obtenido de la comparación entre la
selfie enviada en el método Register y la almacenada en la base de
datos de Renaper, para el número de documento y género informado.
o Información obtenida de la persona desde la base de datos de Renaper,
en caso de que el documento de identidad se encuentre vigente. Se
considera que el documento de identidad está vigente si el número de
trámite adherido con el método Scan Barcode, corresponde con el que
posee almacenado Renaper en su base de datos para el número de
documento y género proporcionado.
o Información capturada del PDF 417 del documento de identidad del
ciudadano.

o Información capturada del código MRZ del documento de identidad del


ciudadano.

o Información capturada del frente y dorso del documento de identidad


del ciudadano, utilizando tecnología OCR.
o Validación de áreas del documento de identidad, para chequear su
veracidad. Se analizan en particular dos áreas del plástico, retornando
un porcentaje de match respecto al plástico real:

11. Se realiza una llamada interna al servicio de validación de identidades de


Renaper. Se compara la selfie tomada con la fotografía del legajo de la
persona que contiene Renaper. Se retornan los datos obtenidos por las

7
SID Documentación Técnica – API – Paquete I

distintas fuentes: OCR, MRZ, PDF417 y servicio de datos de Renaper. Se toma


el score final entre el match biométrico y el match de documento.

Métodos de integración

A continuación, se detallan los métodos de integración correspondientes al paquete


de consumo I de SID, por el canal web.
Los parámetros subrayados son obligatorios.
El dominio a utilizar para consumir los servicios, es el siguiente:

https://renaper.dnm.gob.ar/

$apiKey='APIKey proporcionada por RENAPER';


$dominio='https://renaper.dnm.gob.ar/';

$url="http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding";
$type="application/json";

$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

Para consultar la APIKey de acceso, ingresar al portal de autogestión, y en la opción


de menú Administración > API Key.

NOTA: Si el método invocado no retorna una respuesta exitosa o un código de error


conocido, se debe asumir que el método no se ejecutó correctamente, y debe
repetirse.
Ejemplo de respuesta fallida del método endOperation:

string'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>502 - Web server received an invalid response while acting as a gateway or proxy
server.</title>
<style type="text/css">

8
SID Documentación Técnica – API – Paquete I

<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-
serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS",
Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-
top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
<div class="content-container"><fieldset>
<h2>502 - Web server received an invalid response while acting as a gateway or proxy
server.</h2>
<h3>There is a problem with the page you are looking for, and it cannot be displayed. When
the Web server (while acting as a gateway or proxy) contacted the upstream content server, it
received an invalid response from the content server.</h3>
</fieldset></div>
</div>
</body>
</html>
' (length=1477)
Código HTTP inesperado: 502

Scan Barcode

Este método permite realizar la lectura del código PDF 417 a partir de una imagen
enviada como parámetro. Es de uso opcional, y automatiza la obtención de los datos
requeridos para la creación de la operación del paquete de consumo.
La operación se realiza mediante un POST y el servidor entrega mediante plain/text
el resultado de la operación.

URL del servicio:


http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/scanBarcode

Parámetros de entrada:
file: imagen en formato base64 del PDF 417 del documento de identidad.
Especificaciones de la imagen a enviar:
 Tipo de imagen: JPG.
 Tamaños recomendados:
o 469 x 230 px

9
SID Documentación Técnica – API – Paquete I

o 916 x 230 px

Ejemplo de llamada:

{
"file": "PDF417 image"
}

Parámetros de respuesta:
code: código de respuesta.
message: descripción de la respuesta.
Data: retorna los datos obtenidos mediante lectura del PDF 417 del documento de
identidad. Esta estructura puede retornarse vacía en caso que no se logre la lectura
del código PDF 417:
 number: número de documento.
 names: nombres de la persona obtenidos del documento.
 lastNames: apellidos de la persona obtenidos del documento.
 gender: género de la persona obtenido del documento (M o F).
 birth: fecha de nacimiento obtenida del documento.
 order: número de tramite

Ejemplo de respuesta:

{
"code": 5001,
"message": "Scan OK",
"data": {
"number": "28250543",
"gender": "M",
"names": "JOSE LUIS",
"lastNames": "PEREZ",
"birthdate": "29/06/1983",
"order": "00319475653"
}
}

New Operation

Este método permite la creación de una nueva operación. Este método es el punto de
partida para el consumo del paquete. Retorna el ID de la operación que funciona como
identificador del flujo y se utiliza en el resto de los métodos del paquete.
La operación se realiza mediante un POST y el servidor entrega mediante plain/text
el resultado de la operación.

URL del servicio:


http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/newOperation

10
SID Documentación Técnica – API – Paquete I

Parámetros de entrada:
number: número de documento del usuario.
gender: genéro de la persona. Masculino (M o m) y Femenino (F o f).
ipAddress: IP del dispositivo que se está utilizando para realizar la operación.
applicationVersion: versión de la aplicación.

Ejemplo de llamada:

{
"number": "34021659",
"gender": "M",
"ipAddress": "192.168.1.1",
"applicationVersion": "1.0.0",
"browserFingerprintData": "base64Fingerprint"
}

Parámetros de respuesta:
code: código de respuesta.
message: descripción de la respuesta.
operationId: id de la operación creada.

Ejemplo de respuesta:
{
"code": 901,
"message": "New operation created",
"operationId": 1
}

Add front

Este método permite incorporar a la operación la fotografía del frente del documento,
para su posterior análisis y extracción de información. Para utilizarlo, es necesario
contar con el id de operación que proporciona el método newOperation.
La operación se realiza mediante un POST y el servidor entrega mediante plain/text
el resultado de la operación.
Tener en cuenta las siguientes características para la captura de la fotografía:

11
SID Documentación Técnica – API – Paquete I

URL del servicio:


http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/addFront Comentado [PB1]: Confirmar

Parámetros de entrada:
operationId: id de la operación obtenido del método newOperation.
gender: género de la persona.
number: número de documento de la persona.
analyzeAnomalies: variable de tipo booleana. Si su valor es true habilita el análisis
de veracidad del plástico por áreas. El resultado obtenido se retornará en el método
EndOperation.
analyzeOcr: variable de tipo booleana. Si su valor es true habilita la extracción de
datos del documento de identidad por OCR. El resultado obtenido se retornará en el
método EndOperation.
file: imagen del frente del documento en formato base64.
Especificaciones de la imagen a enviar:

 Tipo de imagen: JPG.


 Mínimo de largo esperado: 1000 px
 Máximo de largo esperado: 2000 px
 Recomendado: 1200 px de largo

Ejemplo de llamada:

12
SID Documentación Técnica – API – Paquete I

{
"operationId": 1,
"number": "34021659",
"gender": "M",
"analyzeAnomalies": true,
"analyzeOcr": true,
"file": "dorso documento en base64"
}

Parámetros de respuesta:
code: código de respuesta.
message: descripción de la respuesta.

Ejemplo de respuesta:
{
"code": 909,
"message": "Add front success"
}

Add back

Este método permite incorporar a la operación la fotografía del dorso del documento,
para su posterior análisis y extracción de información. Para utilizarlo, es necesario
contar con el id de operación que proporciona el método newOperation.
La operación se realiza mediante un POST y el servidor entrega mediante plain/text
el resultado de la operación.
Tener en cuenta las siguientes características para la captura de la fotografía:

URL del servicio:

13
SID Documentación Técnica – API – Paquete I

http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/addBack Comentado [PB2]: Confirmar

Parámetros de entrada:
operationId: id de la operación obtenido del método newOperation.
gender: género de la persona.
number: número de documento de la persona.
analyzeAnomalies: variable de tipo booleana. Si su valor es true habilita el análisis
de veracidad del plástico por áreas. El resultado obtenido se retornará en el método
EndOperation.
analyzeOcr: variable de tipo booleana. Si su valor es true habilita la extracción de
datos del documento de identidad por OCR. El resultado obtenido se retornará en el
método EndOperation.
file: imagen del frente del documento en formato base64.
Especificaciones de la imagen a enviar:

 Tipo de imagen: JPG.


 Mínimo de largo esperado: 1000 px
 Máximo de largo esperado: 2000 px
 Recomendado: 1200 px de largo

Ejemplo de llamada:

{
"operationId": 1,
"number": "34021659",
"gender": "M",
"analyzeAnomalies": true,
"analyzeOcr": true,
"file": "dorso documento en base64"
}

Parámetros de respuesta:
code: código de respuesta.
message: descripción de la respuesta.

Ejemplo de respuesta:
{
"code": 912,
"message": "Add back success"
}

Register

Este método permite incorporar a todas las fotos capturadas, la fotografía selfie neutral
del ciudadano para realizar la validación biométrica contra los servicios de ReNaPer
y los gestos para realizar comparación de imágenes. No contempla el desafío de vida

14
SID Documentación Técnica – API – Paquete I

del usuario. Se solicita el envío de una fotografía del ciudadano con expresión neutral,
que cumpla con las normas ICAO.
Para utilizarlo, es necesario contar con el id de operación que proporciona el método
newOperation.
La operación se realiza mediante un POST y el servidor entrega mediante plain/text
el resultado de la operación.
Seguir las siguientes recomendaciones para una captura de fotografía correcta:

URL del servicio:


http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/register

Parámetros de entrada:
operationId: id de la operación obtenido del método newOperation.
gender: género de la persona.
number: número de documento de la persona.
selfieList: lista de imágenes con:
file: imagen de la selfie en formato base64.
imageType: tipo de la selfie enviada (selfie neutral y gestos si se capturaron)
Los tipos esperados son:
▪ SN: selfie con rostro neutral. (obligatoria)
▪ SS: selfie con sonrisa. (opcional)
▪ SCE: selfie con ojos cerrados. (opcional)
▪ SBL: selfie con guiño izquierdo. (opcional)
▪ SBR: selfie con guiño derecho. (opcional)

15
SID Documentación Técnica – API – Paquete I

Especificaciones de la imagen a enviar:


 Tipo de imagen: JPG.
 Ancho: 600 px
 Largo: 720 px

Ejemplo de llamada:
{
"operationId": 1,
"number": "34021659",
"gender": "M",
"selfieList":
[
{"file": "imagen selfie con rostro neutral base64",
"imageType": "SN",
]
}

Parámetros de respuesta:
code: código de respuesta.
message: descripción de la respuesta.

Ejemplo de respuesta:
{
"code": 932,
"message": "Register success"
}

Add Barcode

Este método permite incorporar a la operación la información obtenida del PDF 417
del documento, para obtener la vigencia del documento por medio del número de
trámite, número de documento y género.
Para utilizarlo, es necesario contar con el id de operación que proporciona el método
newOperation.
La operación se realiza mediante un POST y el servidor entrega mediante plain/text
el resultado de la operación.

URL del servicio:


http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/addBarcode

Parámetros de entrada:
operationId: id de la operación obtenido del método newOperation.
gender: género de la persona.
number: número de documento de la persona.

16
SID Documentación Técnica – API – Paquete I

document: estructura para envío de los datos capturados del PDF 417. La estructura
contiene los siguiente datos (campos en negrita son los obligatorios):
 names: nombres de la persona
 lastNames: apellidos de la persona
 number: número de documento
 birthdate: fecha de nacimiento de la persona
 gender: género de la persona
 order: número de trámite del documento

Ejemplo de llamada:

{
"operationId": 1,
"number": "34021659",
"gender": "M",
"document": {
"names": "firstName",
"lastNames": "lastName",
"number": "number",
"birthdate": "birthdate",
"gender": "gender",
“order”: “order”
},
"data": {
"code":0,
"message":"Return Barcode",
"document": {
"firstName": "firstName",
"lastName": "lastName",
"number": "number",
"birthdate": "birthdate",
"gender": "gender",
“order”: “order”

}
}
}

Parámetros de respuesta:
code: código de respuesta.
Message: descripción de la respuesta.

Ejemplo de respuesta:
{
"code": 920,
"message": "Add Barcode success"
}

17
SID Documentación Técnica – API – Paquete I

Nota: es importante la utilización de este método en el proceso, enviando siempre el


dato order (número de trámite del documento), para que se pueda utilizar en la
validación de vigencia del documento. En caso de no contar con el número de trámite
en este método, no será posible acceder a la validación mencionada en el retorno del
método End Operation.

End Operation

Este método permite obtener el porcentaje de reconocimiento facial de Renaper, la


vigencia del documento, y los datos personales del ciudadano proporcionados por
Renaper, análisis de veracidad de documento (estudio de áreas del plástico), y datos
personales obtenidos de la lectura del frente y dorso del documento.
Para utilizar este método, es necesario previamente haber realizado la llamada de los
siguientes métodos, y contar con el id de operación que proporciona el método
newOperation:
 newOperation
 addFront
 addBack
 Register
 addBarcode
La operación se realiza mediante un POST y el servidor entrega mediante plain/text
el resultado de la operación.

URL del servicio:


http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/endOperation

Parámetros de entrada:
number: número de ID.
gender: género de la persona obtenido del ID.
operationId: id de la operación obtenido del método newOperation.

Parámetros de respuesta:
{
"code": 903,
"message": "END_OPERATION_OK"
}

operationStatusId: estado de la operación.


confidence: valor entre 0 y 100, que detalla el score obtenido luego de la comparación
biométrica.
matchThreshold: variable booleana que se encontrará en true si el confidence es
igual o superior al umbral de validación definido por la solución.
anomalies: se retornan las validaciones en las áreas del plástico del documento. Se
respetará la estructura con los siguientes objetos:
 Front_Shield: se retorna el porcentaje de validación respecto al chequeo del
escudo en el frente del plástico.

18
SID Documentación Técnica – API – Paquete I

 Reverse_Country: se retorna el porcentaje de validación respecto al chequeo


de la imagen del país en el dorso del documento.

OCR: estructura que contiene la información obtenida por extracción por OCR de los
datos del frente y dorso del documento de identidad. Los datos a retornar son los
siguientes:
Extra:
- additional: estructura que contiene datos adicionales obtenidos por
extracción por OCR de los datos del frente y dorso del documento
de identidad. Los datos a retornar son los siguientes:
 expiryDate: fecha de vencimiento del documento
 address: domicilio de la persona.
 detected_country: tipo de documento detectado por la
fotografía.
 issueDate: fecha de emisión del documento.
 tramitNumber: “0000000000000”.
 nationality: nacionalidad de la persona.
- mrz: estructura que contiene la información capturada del MRZ del
documento de identidad. Los datos a retornar son los siguientes:
 ExpiryDate: fecha de vencimiento del documento.
 Gender: género de la persona.
 DocumentNumber: número de documento de la persona.
 FullName: apellidos y nombres de la persona.
 BirthDate: fecha de nacimiento de la persona.

 number: número de documento.


 gender: género de la persona obtenido del documento.
 names: nombres de la persona obtenidos del documento.
 lastNames: apellidos de la persona obtenidos del documento.
 birthdate: fecha de nacimiento de la persona obtenida del documento.

PersonData: estructura que contiene la información capturada del servicio de datos


de Renaper. Solo se retornará esta información cuando coincida el número de trámite
extraído por lectura del PDF417 (dato order enviado en el método addBarcode) con
el almacenado en la base de datos de Renaper:
 number: número de ID.
 names: nombres de la persona obtenidos del ID.
 lastNames: apellidos de la persona obtenidos del ID.

19
SID Documentación Técnica – API – Paquete I

 gender: género de la persona obtenido del ID.


 birthdate: fecha de nacimiento obtenida del ID.
 copy: ejemplar del documento.
 expirationDate: fecha de vencimiento del documento.
 creationDate: fecha de emisión del documento.
 cuil: CUIL de la persona.
 streetAddress: calle del domicilio de la persona.
 numberStreet: número de la calle del domicilio de la persona.
 floor: piso del domicilio de la persona.
 department: departamento del domicilio de la persona.
 zipCode: código postal del domicilio de la persona.
 city: ciudad del domicilio de la persona.
 municipality: municipio del domicilio de la persona.
 province: provincia del domicilio de la persona.
 country: país del domicilio de la persona.
 Nationality: nacionalidad de la persona.
 countryBirth: país de nacimiento de la persona.
 messageOfDeath: mensaje de fallecimiento de la persona.
 valid: representa la validez del documento. Retorna "Vigente" si el número de
trámite ingresado como parámetro corresponde con que posee almacenado
Renaper en su base de datos. Caso contrario, retorna "No Vigente".

Ejemplo de respuesta:
{
"code": 903,
"message": "End operation success",
"operationStatusId": 5,
"confidence": 60,
"anomalies":
"{\"Front_Shield\":\"0.729885995388031\",\"Reverse_Country\":\"0.86297023296356
2\"}",
"ocr": {
"extra": {
"additional": "{\"ExpiryDate\":\"2026-08-09\",\"Address\":\"calle 1000 - NÚÑEZ
- CIUDAD DE BUENOS AIRES - CIUDAD DE BUENOS
AIRES\",\"DETECTED_COUNTRY\":\"argentinaantiguo\",\"IssueDate\":\"2011-08-
09\",\"TramitNumber\":\"0000000000\",\"Nationality\":\"ARGENTINA\"}","mrz":
"{\"ExpiryDate\":\"2026-08-09\",\"Gender\":\"M\",\"DocumentNumber\":\"33402288\",
\"FullName\":\"Homero Simpson \",\"BirthDate\":\"1987-10-04\"}"
},
"number": "33402288",
"gender": "M",
"names": "FACUNDO MATIAS",
"lastNames": "BERON",
"birthdate": "1987-10-04"
},
"personData": {

20
SID Documentación Técnica – API – Paquete I

"person": "",
"valid": "No vigente"
},
"identical": true
}

Códigos Generales de Retorno

A continuación, se detallan los códigos de retorno de todos los métodos de


integración expuestos en este documento:

//creación de operación exitoso


NEW_OPERATION_OK = 901;

//fin de operación exitoso


END_OPERATION_OK = 903;

//fin de operación con fallo: operación debe estar en estado pendiente


END_OPERATION_FAIL = 904;

//fin de operación con fallo: operación debe tener imagen (frente o dorso de
documento) o información agregada (PDF 417)
END_OPERATION_EMPTY_FAIL = 905;

//fin de operación con fallo: género y número de operación (persona) no


corresponden con género y número de extraídos del PDF 417
OPERATION_END_BARCODE_DOESNT_BELONG = 1905;

//fin de operación con fallo: género y número de operación (persona) no


corresponden con género y número de documento capturados por OCR
OPERATION_END_OCR_DOESNT_BELONG = 1906;

//fin de operacion con fallo: no supera validación sobre información de frente vs


dorso del documento de identidad segun pesos ocr, mrz, qrCode
OPERATION_END_FRONT_BACK_NOT_BELONG = 1907;

//cancelación de operación exitoso


CANCEL_OPERATION_OK = 906;

//chequeo de estado de operación exitoso


STATUS_OPERATION_OK = 908;

//alta de frente exitoso


ADD_FRONT_OK = 909;

//alta de frente con fallo: ya existe imagen de frente para la operación


FRONT_ALREADY_EXIST = 911;

21
SID Documentación Técnica – API – Paquete I

//alta de dorso exitoso


ADD_BACK_OK = 912;

//alta de dorso fallo: ya existe imagen de dorso para la operación


BACK_ALREADY_EXIST = 914;

//alta de ocr exitoso


ADD_OCR_OK = 915;

//alta de ocr con fallo: elemento document y data del mensaje vacíos
ADD_OCR_FAIL = 916;

//alta de barcode exitoso


ADD_BARCODE_OK = 920;

//alta de barcode con fallo: elemento document y data del mensaje vacios
ADD_BARCODE_FAIL = 921;

//alta de anomalias exitoso


ADD_ANOMALIES_OK = 925;

//alta de anomalias con fallo: elemento data del mensaje vacío


ADD_ANOMALIES_FAIL = 926;

//registro de operación exitoso: selfies agregadas


ADD_SELFIES_OK = 932;

//chequeo de score con fallo: operación no posee imagen de frente de documento


SCORE_EMPTY_FRONT= 935;

//chequeo de score con fallo: operación no posee imagen de selfie con expresión
neutral (tipo SN)
SCORE_EMPTY_SELFIE= 936;

//chequeo de score exitoso


SCORE_SUCCESS= 937;

//fallo: operación no existente


alta de dorso de documento, PDF 417, frente de documento
cancelacion de operacion
fin de operacion
chequeo de estado
registro de operacion
OPERATION_NOT_EXIST = 952;

//fallo: operacion no pertenece a género-número de documento proporcionados


alta dorso de documento, PDF 417, frente de documento
cancelación de operación

22
SID Documentación Técnica – API – Paquete I

fin de operación
chequeo de estado
registro de operación
OPERATION_DOESNT_BELONG = 953;

//fallo: operacion debe estar en estado pendiente


alta dorso de documento, PDF 417, frente de documento
cancelación de operación
chequeo de estado
registro de operación
OPERATION_DISABLED = 954;

//fallo: tipo de imagen y/o imagen no válida


login de face
registro de selfies
alta de dorso y frente de documento de identidad
IMAGE_NOT_VALID = 960;

//análisis de documento exitoso:


alta de dorso y frente de documento
fin de operación (endOperation)
ANALYZE_DOCUMENT_OK= 963;

//análisis de documento fallo:


alta de dorso y frente de documento
fin de operacion (endOperation)
ANALYZE_DOCUMENT_FAIL= 964;

//alta de PDF 417 exitoso


QRCODE_OK = 965;

//alta de PDF 417 con fallo


QRCODE_FAILED = 966;

//fallo: operación debe tener cargado el número de trámite en el método AddBarcode


Ocurre en el método endOperation
END_OPERATION_BARCODE_ORDER_EMPTY = 967;

//fallo en creación de objeto respuesta desde aplicación SID para Paquete I, al


endpoint del organismo proporcionado
OPERATION_ENDPOINT_CREATE_OBJECT_FAILED = 970;

//fallo de envío de objeto respuesta desde aplicación SID para Paquete I, al endpoint
de organismo proporcionado
OPERATION_ENDPOINT_BUSINESS_POST_FAILED = 971;

//fallo de creación de objeto respuesta desde aplicación SID para Paquete II, al
endpoint de organismo proporcionado

23
SID Documentación Técnica – API – Paquete I

FACE_ENDPOINT_CREATE_OBJECT_FAILED = 972;

//fallo de envío de objeto respuesta desde aplicación SID para Paquete II, al
endpoint de organismo proporcionado
FACE_ENDPOINT_BUSINESS_POST_FAILED = 973;

//fallo en llamada a api-manager-rest


APIKEY_REST_FAILED = 981;

//fin de operación con fallo: error de parseo de respuesta de Paquete III


END_OPERATION_PERSON_PARSE_FAIL = 990;

//Parámetros incorrectos en la llamada del endpoint


INCORRECT_PARAMETERS = 1000;

//fallo en Paquete II: no posee fotografía con gesto neutral (tipo SN) o bien, no se
enviaron selfies en la llamada
LOGIN_FAIL = 1003;

//Fallo en Paquete II: selfies proporcionadas, no corresponden a la misma persona


LOGIN_FAIL_CROSSCHECK = 1006;

//Fallo en método Register: error al persistir imagen con rostro neutral (tipo SN) en
filesystem
SAVE_IMAGE_TO_STORAGE_FAIL = 1010;

//Fallo en endOperation: error al obtener imagen con rostro neultral (tipo SN) en
filesystem
LOAD_IMAGE_FROM_STORAGE_FAIL = 1011;

//fallo en encriptado de imagen:


Paquete II
Método Register
alta de dorso y frente de documento
ENCRYPTION_FAIL = 1013;

//fallo en endOperation: no se pudo obtener imagen con rostro neutral (tipo SN)
FACE_NOT_FOUND = 2001;

//Las selfies proporcionadas corresponden a la misma persona (Paquete II y método


Register)
FACE_COMPARE_OK = 2003;

//Fallo en comparación: las fotografías proporcionadas, no corresponden a la misma


persona
FACE_COMPARE_FAIL = 2005;

//endOperation con fallo: error en la llamada al servicio de biometría

24
SID Documentación Técnica – API – Paquete I

FACE_SERVICE_FAIL = 2006;

//Validación de seguridad: las selfies proporcionadas no cumplen con las normas


ICAO
FACE_IMAGE_BACKGROUND_ICAO_FAIL = 2023;

//Validación de seguridad sobre prueba de vida. Probabilidades de fraude


FACE_IMAGE_ANTISPOOFING_FAIL = 2024;

//Validación de seguridad: las selfies proporcionadas pueden ser no seguras


FACE_IMAGE_MONOCHROMATIC_BALANCE_FAIL = 2025;

//Selfie no supera validación de fondos similares entre distintos gestos


FACE_IMAGE_BACKGROUND_CROSSCHECK_FAIL = 2027;

//Selfie no supera validación de la trama


FACE_IMAGE_SCREEN_PLOT_FAIL = 2028;

//Selfie no supera validación del barrido


FACE_IMAGE_SCREEN_SWEEP_FAIL = 2029;

//Selfie no supera validación de brillo


FACE_IMAGE_FLASHLIGHT_SPOT_FAIL = 2030;

//Validación de seguridad: las selfies proporcionadas pueden ser no seguras ya que


se
encontraron líneas que podrían pertenecer al marco de un monitor / foto.
FACE_IMAGE_LINES_DETECTION_FAIL = 2031

//Fallo en método Register: no existe fotografía selfie con expresión neutral (tipo SN)
REGISTER_FAIL = 3002;

//Fallo en método Register: las selfies proporcionadas no corresponden a la misma


persona
REGISTER_FAIL_CROSSCHECK = 3003;

//Escaneo de PDF 417 exitoso


BARCODE_SCAN_OK = 5001;

//Fallo en escaneo de PDF 417: no fue posible extraer la información


BARCODE_SCAN_NOT_DETECTED = 5002;

//Fallo en sanitización de imagen enviada


IMAGE_SANITIZATION_FAILURE = 9100;

//Fallo en endOperation: error al obtener configuración del negocio del portal de


autogestión
BUSINESS_CONFIGURATION_EMPTY = 9200;

25
SID Documentación Técnica – API – Paquete I

//Fallo en endOperation: error al obtener score de match biométrico


BUSINESS_CONFIGURATION_SCORE_ONBOARDING_EMPTY = 9202;

//Fallo en endOperation: error al obtener score de match biométrico


BUSINESS_CONFIGURATION_SCORE_FACE_EMPTY = 9204;

//Fallo en endOperation: error al obtener URL de path del endpoint del negocio para
exponer información de la aplicación SID, en Paquete I
BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_ONE_EMPTY =
9206;

//Fallo en endOperation: error al obtener URL de path del endpoint del negocio para
exponer información de la aplicación SID, en Paquete II
BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_TWO_EMPTY =
9207;

//Fallo en endOperation: error al obtener APIKey interno del negocio para Paquete I
del portal de autogestión
BUSINESS_CONFIGURATION_APIKEY_ENDPOINT_PACKAGE_ONE_EMPTY =
9209;

// Fallo en endOperation: error al obtener APIKey interno del negocio para Paquete II
del portal de autogestión
BUSINESS_CONFIGURATION_APIKEY_ENDPOINT_PACKAGE_TWO_EMPTY =
9210;

// Fallo en endOperation: error al obtener configuración del negocio para Paquete I


(información no cargada en el portal de autogestión)
BUSINESS_CONFIGURATION_ENDPOINT_PACKAGE_ONE_OK = 9212;

// Fallo en endOperation: error al obtener configuración del negocio para Paquete II


(información no cargada en el portal de autogestión)
BUSINESS_CONFIGURATION_ENDPOINT_PACKAGE_TWO_OK = 9213;

//Fallo en endOperation: servicio de datos de Renaper no disponible


INFORMATION_RENAPER_FAILED = 9220;

//Fallo en endOperation: error al persistir información de servicio de datos de


Renaper
INFORMATION_RENAPER_SAVE_FAIL = 9221;

Anexo verificación comunicación Gateway


A continuación, se detallan dos métodos de verificación de interacción con el
Gateway.

Servicio /status
Este servicio permite verificar la conexión y llegada con el Gateway.

26
SID Documentación Técnica – API – Paquete I

URL del servicio:


/status
Parámetros de entrada:

El método no tiene requerimientos


Parámetros de respuesta:
Código: código de retorno

Códigos de respuesta posibles:

200: Requerimiento procesado con éxito, se pudo alcanzar al Gateway.


444: Requerimiento filtrado por geolocalización o blacklist. Si la IP no se
encuentra entre los paises permitidos. Se encuentra únicamente habilitado
Argentina. Si la IP se encuentra en la blacklist de IP's fraudulentas o estar
usando un agente de pentest conocido o ser un spider de un buscador
conocido para búsqueda de sitios vulnerables.

Ejemplo de llamada al servicio:

curl "https://renaper.dnm.gob.ar/status" -vvv

Respuesta esperada:
Codigo: 200
Cuerpo: null

Servicio / Comentado [PB3]: A que hace referencia.

Este servicio permite verificar acceso de APIKey a una determinada URL del
Gateway.
URL del servicio:
/

Parámetros de entrada:

El método necesita de forma mandatoria:


apikey: llave de acceso proporcionada por canal al organismo, por medio del
portal de autogestión.
url: ruta del servicio a testear.

Parámetros de respuesta:
Código: código de retorno
Códigos de respuesta posibles:

27
SID Documentación Técnica – API – Paquete I

444: Requerimiento filtrado por geolocalización o blacklist. Si la IP no se


encuentra entre los paises permitidos. Se encuentra únicamente habilitado
Argentina. Si la IP se encuentra en la blacklist de IP's fraudulentas o estar
usando un agente de pentest conocido o ser un spider de un buscador
conocido para búsqueda de sitios vulnerables.
501: URL o dominio inválido.
511: Revela la no existencia del api key utilizada en el dominio.
555: El mismo es generado si el canal por el cual se utiliza una api key no
coresponde al mismo.

Cualquier otra respuesta obtenida, corresponderá a la respuesta del servicio


que se consumió. Este retorno se retorna en el body de la respuesta.

Ejemplo de llamada al servicio:

curl "https://renaper.dnm.gob.ar/" -H "apikey:XXXXXXXX-XXXX-XXXX-XXXX-


XXXXXXXXXXXX" -H
"url:http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-rest/"
-vvv

Respuesta esperada:

Codigo: 200
Cuerpo: {"code":0,"message":"VU Onboarding
API","data":{"version":"1.1.0"}}

NOTA: estos códigos de error deberán contemplarse además dentro del


listado de errores HTTP según RFC 2616 https://tools.ietf.org/html/rfc2616
Anexo ejemplo práctico de implementación

PHP
A continuación, se ejemplifica un script en el lenguaje PHP para realizar el consume
del paquete I por medio del canal web:
PHP

scanBarcode
<?php
ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

$apiKey='apiKey Proporcionada';
$dominio='https://renaper.dnm.gob.ar/';

28
SID Documentación Técnica – API – Paquete I

$datos=array(
"file" => "imagenB64"
);

$data_string = json_encode($datos);

$url = "http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/scanBarcode";
$type = "application/json";
$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);

?>

newOperation
<?php
ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

29
SID Documentación Técnica – API – Paquete I

$apiKey='apiKey Proporcionada';
$dominio='https://renaper.dnm.gob.ar/';

$datos=array(
"number" => "12345678",
"gender" => "M",
"ipAddress" => "192.168.1.1",
"deviceHash" => "hash",
"rooted" => false,
"applicationVersion" => "1.0.0",
"operativeSystem" => "Android"
);

$data_string = json_encode($datos);

$url = "http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/newOperation";
$type = "application/json";
$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);

30
SID Documentación Técnica – API – Paquete I

?>

addFront
<?php
ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

$apiKey='apiKey Proporcionada';
$dominio='https://renaper.dnm.gob.ar/';

$datos=array(
"operationId" => "2062",
"number" => "12345678",
"gender" => "M",
"documentType" => 1,
"documentVersion" => "1",
"country" => "AR",
"hasBarcode" => false,
"barcodeType" => "barcodeType",
"analyzeAnomalies" => true,
"analyzeOcr" => true,
"sideFace" => false,
"file" => "imagenB64"
);

$data_string = json_encode($datos);

$url = "http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/addFront";
$type = "application/json";
$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);

31
SID Documentación Técnica – API – Paquete I

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);

?>

addBack
<?php
ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

$apiKey='apiKey Proporcionada';
$dominio='https://renaper.dnm.gob.ar/';

$datos=array(
"operationId" => "2062",
"number" => "12345678",
"gender" => "M",
"documentType" => 1,
"documentVersion" => "1",
"country" => "AR",
"hasBarcode" => false,
"barcodeType" => "barcodeType",
"analyzeAnomalies" => true,
"analyzeOcr" => true,
"sideFace" => false,
"file" => "imagenB64"
);

$data_string = json_encode($datos);

$url = "http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/addBack";
$type = "application/json";

32
SID Documentación Técnica – API – Paquete I

$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);

?>

register
<?php
ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

$apiKey='apiKey Proporcionada';
$dominio='https://renaper.dnm.gob.ar/';

$datos=array(
"operationId" => 2062,
"number" => "12345678",
"gender" => "M",
"selfieList" =>
array(

33
SID Documentación Técnica – API – Paquete I

array("file" => "imagen B64",


"imageType" => "SN"),
array("file" => "imagen B64",
"imageType" => "SS"),
array("file" => "imagen B64",
"imageType" => "SCE")
)
);

$data_string = json_encode($datos);

$url = "http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/register";
$type = "application/json";
$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);

?>

addBarcode
<?php

34
SID Documentación Técnica – API – Paquete I

ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

$apiKey='apiKey Proporcionada';
$dominio='https://renaper.dnm.gob.ar/';

$datos=array(
"operationId" => "2062",
"number" => "12345678",
"gender" => "M",
"document" => array(
"number" => "12345678",
"gender" => "M",
"names" => "Nombre",
"lastNames" => "Apellido",
"birthdate" => "dd/mm/aaaa",
"order" => "123456"
),
"data" => array(
"code" =>0,
"message" =>"Barcode",
"document" => array(
"number" => "12345678",
"gender" => "M",
"firstName" => "Nombre",
"lastName" => "Apellido",
"birthdate" => "dd/mm/aaaa",
"order" => "123456"
)
)
);

$data_string = json_encode($datos);

$url = "http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/addBarcode";
$type = "application/json";
$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,

35
SID Documentación Técnica – API – Paquete I

)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);

?>

endOperation
<?php
ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

$apiKey='apiKey Proporcionada';
$dominio='https://renaper.dnm.gob.ar/';

$datos=array(
"operationId" => 2062,
"number" => "12345678",
"gender" => "M"
);

$data_string = json_encode($datos);

$url = "http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/onboarding/endOperation";
$type = "application/json";
$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

36
SID Documentación Técnica – API – Paquete I

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);


curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);

?>

.NET
A continuación, se ejemplifica un script en el lenguaje .NET para realizar el consumo
del paquete III por medio del canal web:

El ejemplo esta armado con una librería que se llama RestSharp, se debe instalar
ejecutando el siguiente comando en nuget:
Install-Package RestSharp

Codigo ejemplo:
var request = new RestRequest(Method.POST);
request.AddHeader("url",
"http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/information/personData");
request.AddHeader("apikey", "{{apikey}}");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{\"gender\": \"M\",\"number\":
\"12345678\",\"order\": \"12345678\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

37
SID Documentación Técnica – API – Paquete I

Apartado de Recomendaciones para efectuar la prueba de vida

El objetivo del documento es establecer un conjunto de recomendaciones para


efectuar de forma correcta y eficiente la prueba de vida para obtener porcentajes
acertados de match con el algoritmo de Face Match de Renaper.

¿Qué es la prueba de vida?


Se denomina prueba de vida, al proceso efectuado en la captura de las fotografías
selfie que garantiza que la persona se encuentra con sus signos vitales aptos para la
realización de la validación.
Utilizando la cámara en tiempo real, se pide al usuario que realice distintos gestos
para avanzar en el proceso. Por cada gesto solicitado, se captura por detrás una
fotografía que se almacena como parte del flujo.

Funcionamiento
Se debe implementar la cámara del dispositivo intervenido en tiempo real, solicitando
distintos gestos de seguridad para asegurar su veracidad.
Para incrementar los niveles de seguridad, la solución es deseable que implemente
aleatoriedad en los gestos solicitados.

Los gestos más comunes y fáciles de ejecutar, se consideran los siguientes:


 Sonrisa
 Ambos ojos cerrados
 Guiño de ojo derecho
 Guiño de ojo izquierdo
 Giro de cabeza a la derecha
 Giro de cabeza a la izquierda

Siempre se debe solicitar que el usuario ubique su rostro centrado en la pantalla para
iniciar el proceso. Para incrementar el éxito de la operación, se recomienda incorporar
una guia en la pantalla, para que el usuario tenga en claro donde ubicar su rostro
durante el proceso. Un ejemplo de esto podría ser el siguiente:

38
SID Documentación Técnica – API – Paquete I

Una vez que el usuario centre su rostro en la pantalla se recomienda que se le solicite
expresión neutral y otros dos gestos de forma aleatoria, de la lista mencionada
anteriormente en este apartado.
La foto con rostro neutral es la que se debe enviar a la API de verificación biométrica.
Para ello, la aplicación debe tomar una fotografía en el momento, mientras la cámara
se encuentra operando en tiempo real.
Como se mencionó anteriormente, es deseable que el orden para solicitar cada gesto,
y los gestos a solicitar, vayan variando en cada ejecución del proceso, en forma
aleatoria. Pero siempre se pida en alguno de los pasos que centre su rostro con
expresión neutral para capturar la fotografía necesaria para el proceso.

Características de la fotografía a enviar


A continuación, se detallan las caracteristicas a tener en cuenta para el correcto
funcionamiento del algoritmo:
 Que el rostro ocupe el 70-80% de la fotografía
 En foco nitido y claro
 Rostro mirando directamente a la cámara
 Cuente con un brillo y contraste apropiado
 Tonalidad en color neutral sin filtros de imágenes aplicados
 Mostrar los ojos abiertos y claramente visibles, sin cabello que los cubra
 Fotografia capturada con un fondo liso
 La fotografía debe mostrar ambos ojos con claridad, sin anteojos.

 Muestre a la persona sola (sin otras personas visibles), mirando a la cámara


con una expresión neutra y boca cerrada.

 Las imágenes que se capturen deben recortarse para que tengan las
siguientes dimensiones: 600 x 720.

39