Saltar al contenido principal
Version: 3.0.1

Servicio de Identificación Biométrica (SIB)

POST

  https://api.apptenticate.com/api/v3/biometrics/nationals/


Autenticación

Usa tu JWT obtenido del proceso de autenticación para hacer peticiones a este endpoint.

La respuesta sera 401 unauthorized si el JWT se encuentra vencido. En dicho caso deberás obtener un nuevo JWT.


Este endpoint recibe todas las peticiones dirigidas al microservicio de Biometría SIB que permite verificar biométricamente a los ciudadanos panameños. Estas peticiones deben contener al menos dos parámetros: la cédula del ciudadano y una imagen .jpg del rostro del mismo. Al final, el servicio del tribunal electoral responderá si este rostro corresponde a la cédula indicada.

** NOTA **

• La respuesta puede ser 401 unauthorized si el token JWT debe ser refrescado.

• La imagen enviada en formato jpg no debe exceder los 2MB.

• Si se desea obtener en la respuesta el ID de la transacción, se debe indicar "return_id": "True" en el JSON de la request.

• Si se desea mejorar la precisión de la prueba de vida (si este servicio está contratado), se debe indicar el tipo de dispositivo en el JSON de la request. Estos pueden ser "DESKTOP", "IOS" o "ANDROID" y la manera de especificarlo sería "device":"IOS", por ejemplo.

Estructura de requests - método: POST

Ruta: api/biometrics/nationals/

Payload para request base:

Payload: {
'citizen_id':'Cédula del ciudadano',
'selfie': imagen
} // (donde la imagen es un archivo .jpg)

Si se desea obtener el ID de la transacción:

Payload: {
'return_id':True,
'citizen_id':'Cédula del ciudadano',
'selfie': imagen
} //donde la imagen es un archivo .jpg)

Si se desea mejorar la precisión de la prueba de vida

Payload: {
'citizen_id':'Cédula del ciudadano',
'device':'IOS', // Dispositivos: IOS, ANDROID o DESKTOP
'selfie': imagen
} // (donde la imagen es un archivo .jpg)

Ejemplos de requests

Python

# JWT Token
header = { 'Authorization': 'Bearer {}'.format(token) }

# Payload para request base
data = { 'citizen_id': 'Cédula del ciudadano'}
files = { 'selfie': imagen } # Donde la imagen es un archivo .jpg

# Si se desea obtener el ID de la transacción:
data = { 'return_id': True,'citizen_id': 'Cédula del ciudadano' }
files = { 'selfie': imagen } # Donde la imagen es un archivo .jpg

# Si se desea mejorar la precisión de la prueba de vida
data = { 'citizen_id': 'Cédula del ciudadano', 'device':'IOS' }

# Dispositivos: IOS, ANDROID o DESKTOP
files = { 'selfie': imagen } # Donde la imagen es un archivo .jpg

# Envío de request
response = requests.post(
apptenticate_url,
data=data,
files=files,
headers=header
)
response = json.loads(response.content)

Estructura de respuestas

Formato de respuesta: JSON

Respuesta base:

Respuesta: {
"valid": True o False, // Booleano el cual determina si la petición resultó en una validación exitosa o no
"error": "String con descripción breve del error",
"details": "Un string especificando el error, o un key-value pair detallando si alguno de los parámetros son inválidos y el error",
"error_code": código de error (int)
}

Adicionalmente a la respuesta, se envía el status code correspondiente al outcome de la operación.

• Respuesta con ID de transacción:


Respuesta: {
"valid": True o False, // Booleano el cual determina si la petición resultó en una validación exitosa o no
"error": "String con descripción breve del error",
"details": "Un string especificando el error, o un key-value pair detallando si alguno de los parámetros son inválidos y el error",
"error_code": código de error (int),
"id": número de transacción (int),
}

Códigos de rechazo

CodigoMensaje
601Operador no existe en la base de datos.
602Ciudadano es menor de 12 años.
603Ciudadano está difunto.
604Ciudadano con inscripción inválida.
605Ciudadano no reconocido.
606Campo cédula viene en blanco.
607Ciudadano no encontrado.