NAV
bash

Introducción

Bienvenido a la documentación de Tesseract API v2

Todo acceso a la API se realiza a través de HTTP y HTTPS, accediendo desde el siguiente enlace: https://sandbox.tesseract.mx/api/v2

El API de Tesseract le permite administrar sus licencias y tokens en la nube de una manera sencilla, mediante el uso de peticiones HTTP utilizadas de la siguiente manera:

Método Seguro Idempotencia Descripción
GET SI SI Leer un recurso
POST NO SI Crea un recurso
PUT NO SI Actualizar un recurso
DELETE NO NO Eliminar un recurso

La documentación del API de Tesseract inicia con la visión general sobre el diseño y la tecnología que se ha implementado.

Request

EXAMPLE JSON


curl --user gioLica1jIUhETwTtTMc:1G3QSslgdp7kTayMP3hejnSYB8MkXNQ1RD2rxHOG \
-i -H "Accept: application/json" \
-H "Content-Type: application/json" \
-X GET https://sandbox.tesseract.mx/api/v2/institution

RESPONSE HEADERS


Status: 200 200
Content-Type: application/json;charset=UTF-8

EXAMPLE XML

curl --user gioLica1jIUhETwTtTMc:1G3QSslgdp7kTayMP3hejnSYB8MkXNQ1RD2rxHOG \
-i -H "Accept: application/xml" \
-H "Content-Type: application/xml" \
-X GET https://sandbox.tesseract.mx/api/v2/institution

REQUEST HEADERS

Content-Type: application/xml;charset=UTF-8
Status: 200 200

Tesseract API v2 tiene soporte para recibir su solicitud HTTP y HTTPS en formato JSON o XML, como se muestra en los siguientes ejemplos:

Método Uso
GET Recuperación de información sobre su cuenta. La información que solicite le devolverá un objeto JSON o XML. Cualquier solicitud que utilice el método GET es de solo lectura y no afectará a ninguno de los objetos que está consultando.
POST Creación de un nuevo objeto, su solicitud debe especificar el método POST. La solicitud POST incluye todos los atributos necesarios para crear un nuevo objeto.
PUT Actualización de la información sobre un recurso en su cuenta, el método PUT, establece el estado del objetivo utilizando los valores proporcionados, independientemente de sus valores actuales.
DELETE Eliminación de un objeto especificado si se encuentra. Si no se encuentra, la operación devolverá una respuesta que indica que el objeto no se encontró.

Response

RESPONSE BODY JSON

{
    "id": 1,
    "common_name": "tesseract.mx",
    "organization": "Opciones en Seguridad Informática S.A.P.I. de C.V.",
    "organization_unit": "Tesseract MX",
    "country": "MX",
    "state": "Ciudad de México",
    "locality": "Cuauhtemoc",
    "email": "cristian.jaramillo@tesseract.mx",
    "token_label": "PARMX",
    "created_at": "2018-06-14T00:44:49.000+0000",
    "updated_at": "2018-06-14T00:44:49.000+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution"
        },
        "apps": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/apps"
        },
        "licenses": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses"
        },
        "partition": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/partition"
        }
    }
}

RESPONSE BODY XML


<institutions>
    <id>1</id>
    <common_name>tesseract.mx</common_name>
    <organization>Opciones en Seguridad Informática S.A.P.I. de C.V.</organization>
    <organization_unit>Tesseract MX</organization_unit>
    <country>MX</country>
    <state>Ciudad de México</state>
    <locality>Cuauhtemoc</locality>
    <email>cristian.jaramillo@tesseract.mx</email>
    <token_label>PARMX</token_label>
    <created_at>1528937089000</created_at>
    <updated_at>1528937089000</updated_at>
    <links>
        <links>
            <rel>self</rel>
            <href>https://sandbox.tesseract.mx/api/v2/institution</href>
            <hreflang/>
            <media/>
            <title/>
            <type/>
            <deprecation/>
        </links>
        <links>
            <rel>apps</rel>
            <href>https://sandbox.tesseract.mx/api/v2/institution/apps</href>
            <hreflang/>
            <media/>
            <title/>
            <type/>
            <deprecation/>
        </links>
        <links>
            <rel>licenses</rel>
            <href>https://sandbox.tesseract.mx/api/v2/institution/licenses</href>
            <hreflang/>
            <media/>
            <title/>
            <type/>
            <deprecation/>
        </links>
        <links>
            <rel>partition</rel>
            <href>https://sandbox.tesseract.mx/api/v2/institution/partition</href>
            <hreflang/>
            <media/>
            <title/>
            <type/>
            <deprecation/>
        </links>
    </links>
</institutions>

Las solicitudes se deben realizar utilizando el protocolo HTTPS para que el tráfico esté encriptado. La interfaz responde a diferentes métodos según la acción requerida.

El RESPONSE puede regresar objetos de tipo JSON o XML como se muestra a continuación:

Además del contenido principal de los recursos, la respuesta contiene al objeto _links, objeto que contiene información sobre paginación en el caso de las colecciones y recursos asociados en caso de un recurso individual.


"_links": {
            "self": {
                "href": "https://sandbox.tesseract.mx/api/v2/institution"
            },
            "apps": {
                "href": "https://sandbox.tesseract.mx/api/v2/institution/apps"
            },
            "licenses": {
                "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses"
            },
            "partition": {
                "href": "https://sandbox.tesseract.mx/api/v2/institution/partition"
            }
        }

Al tratarse de un recurso individual el objeto _links contiene información hacia recursos relacionados y hacia la localización del recurso actual, a continuación, se describe un ejemplo:

Nombre Tipo Descripción
self objet Link al recurso actual
apps objet Link al recurso aplicaciones
licenses objet Link al recurso licencias
partition objet Link al recurso partición

Metainformación

"_page": {
    "size": 15,
    "total_elements": 1,
    "total_pages": 1,
    "number": 0
}

Así mismo el objeto page que acompaña a _links proporciona la metainformación, a continuación, se describe cada aspecto:

Nombre Tipo Descripción
size numérico Elementos solicitados en la actual solicitud
total_elements numérico Total de elementos encontrados
total_pages numérico Total de páginas de elementos
number numérico Página actual (se inicia en la página 0)

Autenticación

Las acciones descritas a continuación se realizarán desde el Tesseract Admin y se deben llevar a cabo antes de comenzar a utilizar el API.

Registro

Para el uso de Soft Token de Tesseract, primero se debe registrar una aplicación, una vez hecho esto, se le asignará un ID único y una partición dentro del HSM.

Resguardo

Finalizado el registro de la aplicación, se recibirán las credenciales por única ocasión, se recomienda el resguardo inmediato ya que Tesseract no será responsable por el uso de estas después de ser entregadas.
Las credenciales entregadas a la hora de realizar el registro se identificarán de a siguiente manera:

Nombre Descripción
Access Key ID Llave Única de Acceso que realizará las peticiones (compuesta por 20 caracteres)
Secret Access Key Contraseña con el que se realizará el proceso de autenticación (compuesta por 40 caracteres)

Activación

Es necesario recalcar que una vez registrada la aplicación se encuentra desactivada, se debe realizar la activación de la aplicación para comenzar con el uso del API.

Auth

EXAMPLE


curl -X GET \
https://sandbox.tesseract.mx/api/v2/auth \
-H 'accept: application/json' \
-H 'authorization: Basic TUtkbTlNNjl2MlJJVEpycVBYeDQ6WWJwUXpBZXk0VVc5QVZSNlRPM291OWtjT2I0RWpJM1R5Zzl1ZVc1aA==' \

REQUEST HEADERS


GET /api/v2/auth HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic TUtkbTlNNjl2MlJJVEpycVBYeDQ6WWJwUXpBZXk0VVc5QVZSNlRPM291OWtjT2I0RWpJM1R5Zzl1ZVc1aA==
Accept: application/json

RESPONSE BODY

{
    "id": 11,
    "name": "Documentación",
    "enabled": true,
    "roles": [
        "LICENSE_ROLE",
        "APP_ROLE",
        "PARTITION_ROLE",
        "RSA_ROLE",
        "AES_ROLE",
        "KEY_ROLE",
        "AUTH_ROLE",
        "DES_ROLE",
        "CERTIFICATE_ROLE",
        "HASH_ROLE",
        "INSTITUTION_ROLE",
        "TOKEN_ROLE"
    ],
    "created_at": "2018-06-19T00:14:06.000+0000",
    "updated_at": "2018-06-19T00:14:06.000+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/11"
        }
    }
}

Puede realizar una petición de tipo GETa la siguiente URL https://sandbox.tesseract.mx/api/v2/auth para obtener la información correspondiente a la aplicación que se ha autenticado, donde se recupera la siguiente información:

Nombre Tipo Descripción
id number Identificador único de la aplicación
name string Etiqueta de nombre para identificar una aplicación
enabled boolean Boolean el cual indica si la aplicación false esta desactivada y true si la aplicación se encuentra activa.
roles array Indica todos los roles los cuales posee la aplicación
created_at string Representación de la fecha de creación de la aplicación en la zona horaria UTC.
updated_at string Representación de la ultima fecha de actualización de la aplicación en la zona horaria UTC.
_links object Contiene los links a recursos asociados

Institución

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg=='

REQUEST HEADERS


GET /api/v2/institution HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 OK

RESPONSE BODY

{
    "id": 1,
    "common_name": "tesseract.mx",
    "organization": "Opciones en Seguridad Informática S.A.P.I. de C.V.",
    "organization_unit": "Tesseract MX",
    "country": "MX",
    "state": "Ciudad de México",
    "locality": "Cuauhtemoc",
    "email": "cristian.jaramillo@tesseract.mx",
    "token_label": "PARMX",
    "created_at": "2018-06-14T00:44:49.000+0000",
    "updated_at": "2018-06-14T00:44:49.000+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution"
        },
        "apps": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/apps"
        },
        "licenses": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses"
        },
        "partition": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/partition"
        }
    }
}

Puede realizar una petición de tipo GET a https://sandbox.tesseract.mx/api/v2/institution para observar la información de la institución correspondiente.

A continuación, se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
id number Identificador único para la institución
common_name string El Nombre común (también CN) identifica el nombre de host asociado con el certificado, por ejemplo www.example.com como example.com.
organization string Nombre de la organización: el nombre legal exacto de su organización. Ejemplo: “SpreeCommerce, Inc.” Si no tiene un nombre de organización legalmente registrado, debe ingresar su nombre completo aquí.
organization_unit string Departamento: muchas personas dejan este campo en blanco. Este es el departamento dentro de su organización que desea que aparezca en el certificado. Se enumerará en el tema del certificado como Unidad organizativa o “ou”. Ejemplo: Administración web, Seguridad web, Marketing.
country string País: el condado donde está ubicada legalmente su organización.
state string Estado o provincia: el estado o provincia donde su organización se encuentra legalmente.
country string Ubicación / Ciudad: la ciudad donde está ubicada legalmente su organización.
email string Correo electrónico del custodio de la partición
token_label string Partición del HSM asiganda
created_at string Representación de la fecha de creación de la institución en la zona horaria UTC.
updated_at string Representación de la ultima fecha de actualización de la institución en la zona horaria UTC.

Licencias

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/licenses \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg=='

REQUEST HEADERS


GET /api/v2/institution/licenses HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 OK

RESPONSE BODY

 {
    "_content": [
        {
            "id": 1,
            "stock": 10000,
            "free": 99666,
            "used": 334,
            "status": "ACTIVATED",
            "duration": 1095,
            "activated_at": "2018-06-14T06:36:26.000+0000",
            "expired_at": "2021-06-13T06:36:26.000+0000",
            "created_at": "2018-06-14T06:35:41.000+0000",
            "updated_at": "2018-08-17T19:19:33.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1"
                }
            }
        }
    ],
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses?page=0&size=20"
        }
    },
    "_page": {
        "size": 20,
        "total_elements": 1,
        "total_pages": 1,
        "number": 0
    }
}

Puede realizar una petición de tipo GET a https://sandbox.tesseract.mx/api/v2/institution/licenses, para recuperar todas las licencias de la institución correspondiente.

Por defecto recuperará los primeros 15 elementos (máximo 30), algunos ejemplos:

A continuación se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
_content array Colección de objectos licencia
_links array Colección de objectos link
_page object Objeto con la meta información de paginación

Licencia

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1 \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg=='

REQUEST HEADERS

GET /api/v2/institution/licenses/1 HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 OK

RESPONSE BODY


{
    "id": 1,
    "stock": 10000,
    "free": 99666,
    "used": 334,
    "status": "ACTIVATED",
    "duration": 1095,
    "activated_at": "2018-06-14T06:36:26.000+0000",
    "expired_at": "2021-06-13T06:36:26.000+0000",
    "created_at": "2018-06-14T06:35:41.000+0000",
    "updated_at": "2018-08-17T19:19:33.000+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1"
        }
    }
}

Puede realizar una petición de tipo GET a https://sandbox.tesseract.mx/api/v2/institution/licenses/{license_id} para recuperar una licencia especifica de la institución correspondiente, donde:

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución

A continuación se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
id number Identificador único de la licencia
stock number Conjunto de tokens pertenecientes a la licencia
free number Número de tokens libres del total perteneciente a la licencia
used number Número de tokens usados del total perteneciente a la licencia
status string Estado actual de la licencia
duration number Número de días de validez de la licencia actual apartir de la fecha de activación
activated_at String Representación de la fecha de activación de la licencia en la zona horaria UTC.
expired_at string Representación de la fecha de expiración de la licencia en la zona horaria UTC.
created_at string Representación de la fecha de creación de la licencia en la zona horaria UTC.
updated_at string Representación de la ultima fecha de actualización de la licencia en la zona horaria UTC.
_links object Contiene los links a recursos asociados

Tokens

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens \
    -H `accept: application/json` \
    -H `authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==`

REQUEST HEADERS


GET /api/v2/institution/licenses/1/tokens HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY

{
    "_content": [
        {
            "id": 1,
            "serial_no": "010100000001",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 4,
            "failed_counter": 6,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:17:32.000+0000",
            "updated_at": "2018-06-14T06:56:19.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1"
                }
            }
        },
        {
            "id": 2,
            "serial_no": "010100000002",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:24:50.000+0000",
            "updated_at": "2018-06-14T07:04:58.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/2"
                }
            }
        },
        {
            "id": 3,
            "serial_no": "010100000003",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:24:52.000+0000",
            "updated_at": "2018-06-14T07:05:05.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/3"
                }
            }
        },
        {
            "id": 4,
            "serial_no": "010100000004",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:24:55.000+0000",
            "updated_at": "2018-06-14T07:05:11.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/4"
                }
            }
        },
        {
            "id": 5,
            "serial_no": "010100000005",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:24:57.000+0000",
            "updated_at": "2018-06-14T07:05:30.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/5"
                }
            }
        },
        {
            "id": 6,
            "serial_no": "010100000006",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:24:59.000+0000",
            "updated_at": "2018-06-14T07:06:50.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/6"
                }
            }
        },
        {
            "id": 7,
            "serial_no": "010100000007",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:25:20.000+0000",
            "updated_at": "2018-06-14T07:06:54.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/7"
                }
            }
        },
        {
            "id": 8,
            "serial_no": "010100000008",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:25:23.000+0000",
            "updated_at": "2018-06-14T07:06:59.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/8"
                }
            }
        },
        {
            "id": 9,
            "serial_no": "010100000009",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:25:27.000+0000",
            "updated_at": "2018-06-14T07:07:03.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/9"
                }
            }
        },
        {
            "id": 10,
            "serial_no": "010100000010",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:25:34.000+0000",
            "updated_at": "2018-06-14T07:07:08.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/10"
                }
            }
        },
        {
            "id": 11,
            "serial_no": "010100000011",
            "token_status": "ACTIVE",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-14T06:42:39.000+0000",
            "updated_at": "2018-06-21T00:05:06.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/11"
                }
            }
        },
        {
            "id": 28,
            "serial_no": "010100000028",
            "token_status": "ACTIVE",
            "token_type": "FOR_EVENT",
            "success_counter": 0,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T01:07:51.000+0000",
            "updated_at": "2018-06-15T01:09:26.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/28"
                }
            }
        },
        {
            "id": 29,
            "serial_no": "010100000029",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 3,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T01:09:44.000+0000",
            "updated_at": "2018-08-07T03:10:26.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/29"
                }
            }
        },
        {
            "id": 30,
            "serial_no": "010100000030",
            "token_status": "WAITING",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 3,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T01:09:47.000+0000",
            "updated_at": "2018-08-16T01:47:31.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/30"
                },
                "enrollment-string": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/30/enrollment-string"
                },
                "act-code": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/30/act-code"
                }
            }
        },
        {
            "id": 31,
            "serial_no": "010100000031",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T01:17:45.000+0000",
            "updated_at": "2018-08-10T01:33:08.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/31"
                }
            }
        },
        {
            "id": 37,
            "serial_no": "010100000037",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 2,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T07:32:22.000+0000",
            "updated_at": "2018-08-10T00:44:36.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/37"
                }
            }
        },
        {
            "id": 38,
            "serial_no": "010100000038",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 1,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T07:32:22.000+0000",
            "updated_at": "2018-08-10T01:30:20.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/38"
                }
            }
        },
        {
            "id": 39,
            "serial_no": "010100000039",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T07:32:23.000+0000",
            "updated_at": "2018-08-10T22:43:13.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/39"
                }
            }
        },
        {
            "id": 40,
            "serial_no": "010100000040",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 0,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T07:32:23.000+0000",
            "updated_at": "2018-08-10T22:46:34.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/40"
                }
            }
        },
        {
            "id": 41,
            "serial_no": "010100000041",
            "token_status": "BLOCKED",
            "token_type": "FOR_EVENT",
            "success_counter": 3,
            "failed_counter": 1,
            "algorithm_parameters": {
                "suite": "SHA1",
                "challenge_format": null,
                "response_format": {
                    "encoding": "DECIMAL",
                    "length": 6
                }
            },
            "data": {
                "time": 0,
                "time_interval": 30000
            },
            "pin_policy": {
                "pin_usage_mode": "LOCAL",
                "max_failed_attempts": 5,
                "min_length": 4,
                "max_length": 4,
                "pin_encoding": "DECIMAL"
            },
            "created_at": "2018-06-15T07:32:23.000+0000",
            "updated_at": "2018-08-10T22:58:13.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/41"
                }
            }
        }
    ],
    "_links": {
        "first": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens?page=0&size=20"
        },
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens?page=0&size=20"
        },
        "next": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens?page=1&size=20"
        },
        "last": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens?page=156&size=20"
        }
    },
    "_page": {
        "size": 20,
        "total_elements": 3131,
        "total_pages": 157,
        "number": 0
    }
}

Para recuperar todos los tokens de una licencia procedemos a realizar
una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/licenses/{license_id}/tokens,
donde license_id es el identificador único de la licencia.

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución

Obteniendo como RESPONSE el siguiente contenido:

Nombre Tipo Descripción
_content array Colección de objectos tokens
links array Colección de objectos link
page object Objeto con la meta información de paginación

Token

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1 \
    -H `accept: application/json` \
    -H `authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==`

REQUEST HEADERS


GET /api/v2/institution/licenses/1/tokens/1 HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY

{
    "id": 1,
    "serial_no": "010100000001",
    "token_status": "BLOCKED",
    "token_type": "FOR_EVENT",
    "success_counter": 4,
    "failed_counter": 6,
    "algorithm_parameters": {
        "suite": "SHA1",
        "challenge_format": null,
        "response_format": {
            "encoding": "DECIMAL",
            "length": 6
        }
    },
    "data": {
        "time": 0,
        "time_interval": 30000
    },
    "pin_policy": {
        "pin_usage_mode": "LOCAL",
        "max_failed_attempts": 5,
        "min_length": 4,
        "max_length": 4,
        "pin_encoding": "DECIMAL"
    },
    "created_at": "2018-06-14T06:17:32.000+0000",
    "updated_at": "2018-06-14T06:56:19.000+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1"
        }
    }
}

Puede realizar una petición de tipo GETa https://sandbox.tesseract.mx/api/v2/institution/licenses/{license_id}/tokens/{token_id} para recuperar un token especifico perteneciente a una licencia, donde:

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución
token_id number Identificador único para el token perteneciente a la licencia

A continuación se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
id number Identificador único del token
serial_no string Número de serie único del token
token_status string Estado actual del token
token_type string Tipo de token
success_counter number Número transacciones exitosas del token
failed_counter number Número transacciones fallidas del token
algorithm_parameters object Parametros del algoritmo implementado por el token
data object Data del token
policy object Politicas del token token
created_at string Representación de la fecha de creación del token en la zona horaria UTC.
updated_at string Representación de la ultima fecha de actualización del token en la zona horaria UTC.
_links object Contiene los links a recursos asociados

A continuación se describen los campos correspondientes a algorithm_parameters, data y policy.

Algorithm Parameters


"algorithm_parameters": {
            "suite": "SHA1",
            "challenge_format": null,
            "response_format": {
                "encoding": "DECIMAL",
                "length": 6
            }
}

Nombre Tipo Descripción
suite string Define características adicionales del algoritmo utilizado, que son específicas del algoritmo los cuales pueden ser SHA1, SHA256 y SHA512
challenge_format string Define las características de la prueba en un escenario de uso de CHALLENGE RESPONSE, el cual es null si el tipo de token es FOR_EVENT
response_format string Objecto que define las características del resultado de un cálculo y define el formato de la OTP o la respuesta a un desafío.

Challenge Format


"challenge_format": {
    "encoding": "DECIMAL",
    "min": 6,
    "max": 6
}

Nombre Tipo Descripción
encoding string Este atributo, define la codificación del desafío aceptado por el dispositivo y DEBE ser uno de los siguientes valores: DECIMAL, HEXADECIMAL, ALPHANUMERIC y BASE64
min number Este atributo define el tamaño mínimo de desafío aceptado por el dispositivo para el modo CR y DEBE incluirse. Si el atributo encoding está establecido en DECIMAL, HEXADECIMAL o ALPHANUMERIC, este valor indica el número mínimo de dígitos / caracteres. Si el atributo encoding está establecido en BASE64 o BINARY, este valor indica el número mínimo de bytes del valor no codificado.
max number este atributo define el tamaño máximo del desafío aceptado por el dispositivo para el modo CR y DEBE incluirse. Si el atributo encoding está establecido en DECIMAL, HEXADECIMAL o ALPHANUMERIC, este valor indica la cantidad máxima de dígitos / caracteres. Si el atributo encoding se establece en BASE64 o BINARY, este valor indica el número máximo de bytes del valor no codificado.

Response Format


"response_format": {
    "encoding": "DECIMAL",
    "length": 6
}

Nombre Tipo Descripción
encoding string Este atributo define la codificación de la respuesta generada por el dispositivo, DEBE incluirse y DEBE ser uno de los siguientes valores: DECIMAL, HEXADECIMAL, ALPHANUMERIC y BASE64
length number Este atributo define la duración de la respuesta generada por el dispositivo y DEBE incluirse. Si el atributo encoding se establece en DECIMAL, HEXADECIMAL o ALPHANUMERIC, este valor indica el número de dígitos / caracteres. Si el atributo encoding está establecido en BASE64 o BINARY, este valor indica la cantidad de bytes del valor no codificado.

Data


"data": {
    "time": 0,
    "time_interval": 30000
}

Nombre Tipo Descripción
time number Contiene el tiempo para OTP basado en el tiempo de los algoritmos. (Si se usan intervalos de tiempo, este elemento lleva la cantidad de intervalos de tiempo transcurridos desde un inicio específico punto, normalmente depende del algoritmo)
time_inteval number Este elemento lleva el valor del intervalo de tiempo para algoritmos OTP basados en tiempo en milisegundos (un valor típico para esto sería 30000, lo que indica un intervalo de tiempo de 30000 milisegundos)

PIN Policy


"pin_policy": {
    "pin_usage_mode": "LOCAL",
    "max_failed_attempts": 5,
    "min_length": 4,
    "max_length": 4,
    "pin_encoding": "DECIMAL"
}

Nombre Tipo Descripción
pin_usage_mode string Este atributo obligatorio indica la forma en que se utiliza el PIN durante el uso de la clave. Se definen los siguientes valores Local, Prepend, Append y Algorithmic
max_failed_attempts number Este atributo indica la cantidad máxima de veces que se puede ingresar el PIN incorrectamente antes de que NO DEBE ser posible usar la clave (los valores razonables típicos están en el rango entero positivo de al menos 2 y no más de 10).
min_length number Este atributo indica la longitud mínima de un PIN que se puede configurar para proteger la clave asociada. NO DEBE ser posible establecer un PIN más corto que este valor. Si el atributo pin_encoding está establecido en DECIMAL, HEXADECIMAL o ALPHANUMERIC, este valor indica el número de dígitos / caracteres. Si el atributo pin_encoding está establecido en BASE64 o BINARY, este valor indica el número de bytes del valor no codificado.
max_length number Este atributo indica la longitud máxima de un PIN que se puede configurar para proteger esta clave. NO DEBE ser posible establecer un PIN más largo que este valor. Si el atributo pin_encoding está establecido en DECIMAL, HEXADECIMAL o ALPHANUMERIC, este valor indica el número de dígitos / caracteres. Si el atributo pin_encoding está establecido en BASE64 o BINARY, este valor indica el número de bytes del valor no codificado.
pin_encoding string Este atributo indica la codificación del PIN y DEBE ser uno de los valores: DECIMAL, HEXADECIMAL, ALPHANUMERIC y BASE64

Crear un nuevo Token

EXAMPLE


curl -X POST \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==' \
    -d '{"token_type":"FOR_EVENT"}'

REQUEST HEADERS


POST /api/v2/institution/licenses/1/tokens HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json
Content-Type: application/json

REQUEST BODY


{
    "token_type": "FOR_EVENT"
}

RESPONSE HEADERS


Location: https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/3
Status: 201

RESPONSE BODY


{
    "id": 3374,
    "serial_no": "010100003374",
    "token_status": "UNASSIGNED",
    "token_type": "FOR_EVENT",
    "success_counter": 0,
    "failed_counter": 0,
    "algorithm_parameters": {
        "suite": "SHA1",
        "challenge_format": null,
        "response_format": {
            "encoding": "DECIMAL",
            "length": 6
        }
    },
    "data": {
        "time": 0,
        "time_interval": 30000
    },
    "pin_policy": {
        "pin_usage_mode": "LOCAL",
        "max_failed_attempts": 5,
        "min_length": 4,
        "max_length": 4,
        "pin_encoding": "DECIMAL"
    },
    "created_at": "2018-08-21T16:11:07.518+0000",
    "updated_at": "2018-08-21T16:11:07.518+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/3374"
        },
        "enrollment-string": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/3374/enrollment-string"
        }
    }
}

Para crear un token es necesario enviar una petición POST a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/licenses/{licenses_id}/tokens, donde:

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución

Y con el siguiente BODY mínimo requerido:

Nombre Tipo Descripción
token_type string Tipo de token a crear: CHALLENGE_RESPONSE ó FOR_EVENT

A continuación se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
id number Identificador único del token
serial_no string Número de serie único del token
token_status string Estado actual del token
token_type string Tipo de token
success_counter number Número transacciones exitosas del token
failed_counter number Número transacciones fallidas del token
algorithm_parameters object Parametros del algoritmo implementado por el token
data object Data del token
policy object Politicas del token token
created_at string Representación de la fecha de creación del token en la zona horaria UTC.
updated_at string Representación de la ultima fecha de actualización del token en la zona horaria UTC.
_links object Contiene los links a recursos asociados

Token Parametros Avanzados

EXAMPLE


curl -X POST \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==' \
    -d '{
        "token_type": "CHALLENGE_RESPONSE",
        "algorithm_parameters": {
            "suite": "SHA256",
            "challenge_format": {
                "encoding": "DECIMAL",
                "min": 8,
                "max": 8
            },
            "response_format": {
                "encoding": "DECIMAL",
                "length": 8
            }
        },
        "data": {
            "time": 0,
            "time_interval": 600000
        },
        "pin_policy": {
            "pin_usage_mode": "LOCAL",
            "max_failed_attempts": 5,
            "min_length": 4,
            "max_length": 16,
            "pin_encoding": "DECIMAL"
        }
    }'

REQUEST HEADERS


POST /api/v2/institution/licenses/1/tokens HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json
Content-Type: application/json

REQUEST BODY


{
    "token_type": "CHALLENGE_RESPONSE",
    "algorithm_parameters": {
        "suite": "SHA256",
        "challenge_format": {
            "encoding": "DECIMAL",
            "min": 8,
            "max": 8
        },
        "response_format": {
            "encoding": "DECIMAL",
            "length": 8
        }
    },
    "data": {
        "time": 0,
        "time_interval": 600000
    },
    "pin_policy": {
        "pin_usage_mode": "LOCAL",
        "max_failed_attempts": 5,
        "min_length": 4,
        "max_length": 16,
        "pin_encoding": "DECIMAL"
    }
}

RESPONSE HEADERS


Location: https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/6
Status: 201

RESPONSE BODY


{
    "id": 3375,
    "serial_no": "010100003375",
    "token_status": "UNASSIGNED",
    "token_type": "CHALLENGE_RESPONSE",
    "success_counter": 0,
    "failed_counter": 0,
    "algorithm_parameters": {
        "suite": "SHA256",
        "challenge_format": {
            "encoding": "DECIMAL",
            "min": 8,
            "max": 8
        },
        "response_format": {
            "encoding": "DECIMAL",
            "length": 8
        }
    },
    "data": {
        "time": 0,
        "time_interval": 600000
    },
    "pin_policy": {
        "pin_usage_mode": "LOCAL",
        "max_failed_attempts": 5,
        "min_length": 4,
        "max_length": 16,
        "pin_encoding": "DECIMAL"
    },
    "created_at": "2018-08-21T16:14:38.295+0000",
    "updated_at": "2018-08-21T16:14:38.295+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/3375"
        },
        "enrollment-string": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/3375/enrollment-string"
        }
    }
}

Una extención para la creación de un token incluye los siguientes parametros en el BODY de nustro REQUEST.

Nombre Tipo Descripción
token_type string Tipo de token
algorithm_parameters object (opcional) Parametros del algoritmo implementado por el token
data object (opcional) Data del token
policy object (opcional) Politicas del token token

Enrollment String

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/5/enrollment-string \
    -H 'accept: application/json' \
    -H 'authorization: Basic cmlyMDZlT1B4NmFmaUlYT2hSQkg6dUhJYmY0alFPNTVJYnlyWmdRNWxTR3MzcUdSYkpKYzM3a29LYWlaag=='

REQUEST HEADERS


GET /api/v2/institution/licenses/1/tokens/5/enrollment-string HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic cmlyMDZlT1B4NmFmaUlYT2hSQkg6dUhJYmY0alFPNTVJYnlyWmdRNWxTR3MzcUdSYkpKYzM3a29LYWlaag==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY


{
    "enrollment_string": "MzlhMjgyNTc5MWRjNWEzMjlhODEzNmFiNDUxMTk1OGM4OTVmYzkwODg2ZWYyZjBjYTQyMTA4N2ZiNGFjZmNiOTk2NWMwNzVmZDA1MzAzNmU1MDg1ODBiZTNhNGIxM2Q1NGU5ZGIwM2NhOGUzNjZlYjQyYmQxNmZkMTQ5MTA4Mzg0YWQ0NGRiNTlkMWRlZDFmODBkOTBiNWE5ZTIwMzg1YWUxNDE3ZjhhNmQ5MTQzMWUzNTY4YTQzNTRjNmM0ODI0ZjMyODg3Nzg5YTdjYzgyODZkNmYyOGIxNGY1MDIxZTA1NzI0MmY0NTc0M2RhNTA0MGJlNzRiYzljNmMxZTgyNTc5MzE2MGNjYmMzYTZjMzZlOGYyZTE0ZGQ4OThhOTY4ZTA0YTBhYTBlMTFjNGY0NjljYjQ1NzdlYTIzYmM1M2JiN2NjMjAxNWY3N2RiM2QxMjI5ZTYxNDYwMWMwYmQ3YTViODQ2ZWE4MWY3OTEzMDNjMWYxYWU3MTJmYTQwNjk1MDNmOWU2MTMzY2IwNzYxOGZlZGEzNTU0ODVlYTRjMjY0NjhlNTkzMWZkMDRlYWZiM2Y0NTAwZGU5OTE0ZDI2N2IwMjNlYmIyMDE0Njg5ODM="
}

Para recuperar el Enrollment String de un token procedemos a realizar
una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/licenses/{license_id}/tokens/{token_id}/enrollment-string,
donde:

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución
token_id number Identificador único para el token perteneciente a la licencia

A continuación se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
enrollment_string string Cadena de enrolamiento codificada en Base64 la cual permite activar un token, debe ser solicitada antes de solicitar la clave de activación

Act Code

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/5/act-code \
    -H 'accept: application/json' \
    -H 'authorization: Basic cmlyMDZlT1B4NmFmaUlYT2hSQkg6dUhJYmY0alFPNTVJYnlyWmdRNWxTR3MzcUdSYkpKYzM3a29LYWlaag=='

REQUEST HEADERS


GET /api/v2/institution/licenses/1/tokens/5/act-code HTTP/1.1
Host: sandbox.tesseract.mx
Accept: application/json
Authorization: Basic cmlyMDZlT1B4NmFmaUlYT2hSQkg6dUhJYmY0alFPNTVJYnlyWmdRNWxTR3MzcUdSYkpKYzM3a29LYWlaag==

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY


{
    "act_code": "34354823"
}

Para recuperar el Act Code de un token procedemos a realizar
una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/licenses/{license_id}/tokens/{token_id}/act-code,
donde:

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución
token_id number Identificador único para el token perteneciente a la licencia

A continuación se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
act_code string Clave de activación de 8 dígitos la cual permite activar una cadena de enrolamiento, la cual debe ser solicitada despues de solicitar la cadena de enrolamineto

Challenge

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/6/challenge \
    -H 'accept: application/json' \
    -H 'authorization: Basic cmlyMDZlT1B4NmFmaUlYT2hSQkg6dUhJYmY0alFPNTVJYnlyWmdRNWxTR3MzcUdSYkpKYzM3a29LYWlaag=='

REQUEST HEADERS


GET /api/v2/institution/licenses/1/tokens/6/challenge HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic cmlyMDZlT1B4NmFmaUlYT2hSQkg6dUhJYmY0alFPNTVJYnlyWmdRNWxTR3MzcUdSYkpKYzM3a29LYWlaag==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY


{
    "valid_from": "2018-06-14T01:25:00.000+0000",
    "expiration": "2018-06-14T01:25:30.000+0000",
    "question": "678527"
}

Para recuperar el Challenge de un token procedemos a realizar
una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/licenses/{license_id}/tokens/{token_id}/challenge,
donde:

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución
token_id number Identificador único para el token perteneciente a la licencia

A continuación se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
valid_from number Representación de la fecha desde la cual es válido el desafio del token en la zona horaria UTC.
expiration number Representación de la fecha en la cual expira el desafio del token en la zona horaria UTC.
question string Desafio de un token el cual puede ser DECIMAL, HEXADECIMAL o ALPHANUMERIC, este valor indica el número de dígitos / caracteres. Si el atributo pin_encoding está establecido en BASE64 o BINARY, este valor indica el número de bytes del valor no codificado.

Validate Token Result

EJEMPLO


curl -X POST \
    https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1/validate \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==' \
    -d '{"result":"987272"}'

REQUEST HEADERS


POST /api/v2/institution/licenses/1/tokens/1/validate HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json
Content-Type: application/json

REQUEST BODY


{
    "result": "987272"
}

RESPONSE HEADERS


Location: https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1/validate
Status: 200

RESPONSE BODY


{
    "failed_intents": 1,
    "max_intents": 5,
    "success": false
}

Para validar un OTP/Response deberas envíar una solicitud POST a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/licenses/{licenses_id}/tokens/{token_id}/validate, donde:

Nombre Tipo Descripción
license_id number Identificador único para licencia perteneciente a la institución
token_id number Identificador único para el token perteneciente a la licencia

Y con el siguiente BODY mínimo requerido:

Nombre Tipo Descripción
result string Result generado mediante Tesseract SDK Android/IOS

Obtendremos un RESPONSE BODY con la siguiente información:

Nombre Tipo Descripción
failed_intents number Número actual de intentos fallidos
max_intents number Número máximo de intentos fallidos antes de revocar el token
success boolean Exito de la validación

Token Type

Tesseract soporta actualmente los siguientes tipos de tokens:

Tipo Descripción
CHALLENGE_RESPONSE Este token esta basado en un protocolo de desafío-respuesta en donde el desafío proporcionado por Tesseract API es únicamente válido durante 120 segundos (por default)tiempo que puede ser customizado, y cada vez que se solicita un nuevo desafío este reinicializa la validez del desafío proporcionado.
FOR_EVENT Este token se basa en la sincronización para generar cada 30 seg (por default)tiempo que puede ser customizado. un nuevo OTP.

Token Status

Los estados de un token permiten realizar ciertas acciones para autorizar el consumo de recursos asociados, a continuación se describe los diferentes tipos estados de un token.

Estado Descripción
UNASSIGNED Estado inicial de todo token al ser creado, este estado hace referencia a que el token esta sin asignar, solo puede estar en este estado una vez.
WAITING Estado al que únicamente se llega tras obtener la cadena de enrolamiento, este estado hace referencia a estar en espera de ser asignado.
ASSIGNED Estado al que únicamente se llega tras obtener la clave de activación, este estado hace referencia a estar asignado.
ACTIVE Estado al cual se llega por primera vez tras ser activado por Tesseract SDK, el estado anterior para que esto ocurra es ASSIGNED. Sin embargo tras ser activado el token puede pasar a un estado REVOKED en el cual el token puede ser reactivado.
REVOKED Estado al que únicamente se llega tras ser activado y haber fallado en más de 5 ocasiones (por default) con la respuesta OTP.
BLOCKED En este estado el token queda inutilizado y final por lo que no puede modificarse o reutilizarse de nuevo. Al suceder esta acción se libera un token de su stock total de la licencia utilizada. Por lo que en caso de que el token quede comprometido este queda liberado para generar un nuevo token.

Aplicaciones

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/apps \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg=='

REQUEST HEADERS


GET /api/v2/institution/apps HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 OK

RESPONSE BODY


{
    "_content": [
        {
            "id": 1,
            "name": "Admin Application",
            "enabled": true,
            "roles": [
                "ADMIN_APP_ROLE",
                "ADMIN_INSTITUTION_ROLE",
                "AUTH_ROLE",
                "ADMIN_LICENSE_ROLE"
            ],
            "created_at": "2018-06-14T00:44:54.000+0000",
            "updated_at": "2018-06-14T00:44:54.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/1"
                }
            }
        },
        {
            "id": 2,
            "name": "Institution Application",
            "enabled": true,
            "roles": [
                "LICENSE_ROLE",
                "APP_ROLE",
                "PARTITION_ROLE",
                "RSA_ROLE",
                "AES_ROLE",
                "KEY_ROLE",
                "AUTH_ROLE",
                "DES_ROLE",
                "CERTIFICATE_ROLE",
                "HASH_ROLE",
                "INSTITUTION_ROLE",
                "TOKEN_ROLE"
            ],
            "created_at": "2018-06-14T00:44:55.000+0000",
            "updated_at": "2018-06-14T00:44:55.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/2"
                }
            }
        },
        {
            "id": 11,
            "name": "Documentación",
            "enabled": true,
            "roles": [
                "LICENSE_ROLE",
                "APP_ROLE",
                "PARTITION_ROLE",
                "RSA_ROLE",
                "AES_ROLE",
                "KEY_ROLE",
                "AUTH_ROLE",
                "DES_ROLE",
                "CERTIFICATE_ROLE",
                "HASH_ROLE",
                "INSTITUTION_ROLE",
                "TOKEN_ROLE"
            ],
            "created_at": "2018-06-19T00:14:06.000+0000",
            "updated_at": "2018-06-19T00:14:06.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/11"
                }
            }
        },
        {
            "id": 12,
            "name": "Tesseract Admin 2",
            "enabled": true,
            "roles": [
                "AUTH_ROLE"
            ],
            "created_at": "2018-06-19T00:14:24.000+0000",
            "updated_at": "2018-06-19T00:14:24.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/12"
                }
            }
        },
        {
            "id": 13,
            "name": "New Name 2",
            "enabled": true,
            "roles": [
                "AUTH_ROLE"
            ],
            "created_at": "2018-06-19T00:17:50.000+0000",
            "updated_at": "2018-06-19T00:17:50.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/13"
                }
            }
        },
        {
            "id": 17,
            "name": "Tesseract Admin",
            "enabled": false,
            "roles": [
                "ADMIN_APP_ROLE",
                "ADMIN_INSTITUTION_ROLE",
                "AUTH_ROLE",
                "ADMIN_LICENSE_ROLE"
            ],
            "created_at": "2018-07-24T21:58:18.000+0000",
            "updated_at": "2018-07-24T21:58:18.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/17"
                }
            }
        },
        {
            "id": 18,
            "name": "Tesseract Admin Application",
            "enabled": true,
            "roles": [
                "ADMIN_APP_ROLE",
                "ADMIN_INSTITUTION_ROLE",
                "AUTH_ROLE",
                "ADMIN_LICENSE_ROLE"
            ],
            "created_at": "2018-07-24T21:59:55.000+0000",
            "updated_at": "2018-07-24T21:59:55.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/18"
                }
            }
        },
        {
            "id": 19,
            "name": "Tesseract Admin Institution",
            "enabled": true,
            "roles": [
                "LICENSE_ROLE",
                "APP_ROLE",
                "PARTITION_ROLE",
                "RSA_ROLE",
                "AES_ROLE",
                "KEY_ROLE",
                "AUTH_ROLE",
                "DES_ROLE",
                "CERTIFICATE_ROLE",
                "HASH_ROLE",
                "INSTITUTION_ROLE",
                "TOKEN_ROLE"
            ],
            "created_at": "2018-07-24T22:43:49.000+0000",
            "updated_at": "2018-07-24T22:43:49.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/19"
                }
            }
        },
        {
            "id": 20,
            "name": "Admin Institution",
            "enabled": false,
            "roles": [
                "LICENSE_ROLE",
                "APP_ROLE",
                "PARTITION_ROLE",
                "RSA_ROLE",
                "AES_ROLE",
                "KEY_ROLE",
                "AUTH_ROLE",
                "DES_ROLE",
                "CERTIFICATE_ROLE",
                "HASH_ROLE",
                "INSTITUTION_ROLE",
                "TOKEN_ROLE"
            ],
            "created_at": "2018-07-24T23:04:45.000+0000",
            "updated_at": "2018-07-24T23:04:45.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/20"
                }
            }
        }
    ],
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/apps?page=0&size=20"
        }
    },
    "_page": {
        "size": 20,
        "total_elements": 9,
        "total_pages": 1,
        "number": 0
    }
}

Puede realizar una petición de tipo GET a https://sandbox.tesseract.mx/api/v2/institution/apps para observar las aplicaciones de una institución en específico.

A continuación, se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
id number Identificador único de la aplicación
name string Etiqueta de nombre para identificar una aplicación
enabled boolean Boolean el cual indica si la aplicación false esta desactivada y true si la aplicación se encuentra activa.
roles array Collección que indica todos los roles los cuales la aplicación posee
created_at string Representación de la fecha de creación de la aplicación en la zona horaria UTC.
updated_at string Representación de la ultima fecha de actualización de la aplicación en la zona horaria UTC.
_links object Contiene los links a recursos asociados
page object Contiene los page a recursos asociados

Recuperar una Aplicación

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/apps/11 \
    -H 'accept: application/json' \
    -H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg=='

REQUEST HEADERS


GET /api/v2/institution/apps HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 OK

RESPONSE BODY


{
    "id": 11,
    "name": "Documentación",
    "enabled": true,
    "roles": [
        "LICENSE_ROLE",
        "APP_ROLE",
        "PARTITION_ROLE",
        "RSA_ROLE",
        "AES_ROLE",
        "KEY_ROLE",
        "AUTH_ROLE",
        "DES_ROLE",
        "CERTIFICATE_ROLE",
        "HASH_ROLE",
        "INSTITUTION_ROLE",
        "TOKEN_ROLE"
    ],
    "created_at": "2018-06-19T00:14:06.000+0000",
    "updated_at": "2018-06-19T00:14:06.000+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/11"
        }
    }
}

Puede realizar una petición de tipo GET a https://sandbox.tesseract.mx/api/v2/institution/apps/[id] para observar una aplicación específica de una aplicación registrada de una institución, donde:

Nombre Tipo Descripción
id number Identificador único de la aplicación

A continuación, se muestra la descripción del RESPONSE del recurso recuperado.

Nombre Tipo Descripción
id number Identificador único de la aplicación
name string Etiqueta de nombre para identificar una aplicación
enabled boolean Boolean el cual indica si la aplicación false esta desactivada y true si la aplicación se encuentra activa.
roles array Collección que indica todos los roles los cuales la aplicación posee
created_at string Representación de la fecha de creación de la aplicación en la zona horaria UTC.
updated_at string Representación de la ultima fecha de actualización de la aplicación en la zona horaria UTC.
_links object Contiene los links a recursos asociados

Crear una nueva Aplicación

EXAMPLE


curl -X POST \
https://sandbox.tesseract.mx/api/v2/institution/apps \
-H 'Accept: application/json' \
-H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==' \
-d '{"name":"name_application"}'

REQUEST HEADERS


POST /api/v2/institution/apps HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 201 OK

Puede generar una petición de tipo POST a https://sandbox.tesseract.mx/api/v2/institution/apps para realizar el registro de una apliación para su institución como se muestra a continuación, con el siguiente BODY mínimo requerido:

Nombre Tipo Descripción
name string Nombre de la aplicación a registrar

La creación de la aplicación no continen BODY RESPONSE.

Para verificar que una aplicación ha sido creada, puede solicitar ver las aplicaciones registradas. Aplicaciones

Actualizar una Aplicación

EXAMPLE


curl -X PUT https://sandbox.tesseract.mx/api/v2/institution/apps/[id] \
-H 'Accept: application/json' \
-H 'authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==' \
-d '{"name":"name_application"}'

REQUEST HEADERS


PUT /api/v2/institution/apps HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic MHJ1R0hhaHk4cW1qdlFXbkw2cEI6YVJxakxweUs0VFZqS3JnMm9lWjdMTmZzVFFYRnZPN0Zrb3hIdkxRTg==
Accept: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 OK

Puede realizar una petición de tipo PUT a https://sandbox.tesseract.mx/api/v2/institution/apps/[id] para actualizar un recurso, donde:

Nombre Tipo Descripción
id number Identificador único de la aplicación

Para verificar que una aplicación ha sido creada, puede solicitar ver las aplicaciones registradas. Recuperar una Aplicación

Eliminar una Aplicación

EXAMPLE


curl -X DELETE
-H "Accept: application/json"
https://sandbox.tesseract.mx/api/v2/institution/apps/[id]

Puede generar una petición de tipo DELETE a https://sandbox.tesseract.mx/api/v2/institution/apps/[id] para eliminar un recurso, donde:

Nombre Tipo Descripción
id number Identificador único de la aplicación

Partición

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/partition \
    -H 'accept: application/json' \
    -H 'authorization: Basic N2VJMVpzWFhOQXpMTjRyOVpRNWk6VEdER0lKYXNoVmRvV3FHbkdRTU40WmVTRUhLelp1Y084S2lPM3p0aQ=='

REQUEST HEADERS


GET /api/v2/institution/partition HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic N2VJMVpzWFhOQXpMTjRyOVpRNWk6VEdER0lKYXNoVmRvV3FHbkdRTU40WmVTRUhLelp1Y084S2lPM3p0aQ==
Accept: application/json
Content-Type: application/json

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY


{
    "slot": 1,
    "serial_number": "156755014",
    "label": "PARMX",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/partition"
        },
        "keys": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/partition/keys"
        }
    }
}

Para recuperar la información de la partición realizamos una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/partition.

Obteniendo como RESPONSE el siguiente contenido:

Nombre Tipo Descripción
slot number Número de slot de la partición
serial_number string Número de serie de la partición
label string Etiqueta de nombre comun de la partición
_links object Continene los links a recursos asociados

Keys

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/partition/keys \
    -H 'accept: application/json' \
    -H 'authorization: Basic TUtkbTlNNjl2MlJJVEpycVBYeDQ6WWJwUXpBZXk0VVc5QVZSNlRPM291OWtjT2I0RWpJM1R5Zzl1ZVc1aA==' \
    -H 'cache-control: no-cache'

REQUEST HEADERS


GET /api/v2/institution/partition/keys HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic TUtkbTlNNjl2MlJJVEpycVBYeDQ6WWJwUXpBZXk0VVc5QVZSNlRPM291OWtjT2I0RWpJM1R5Zzl1ZVc1aA==
Accept: application/json
Cache-Control: no-cache

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY


{
    "_content": [
        {
            "id": 1,
            "alias": "18832DE2F6EE26F9A0E5752D558CE342724E204FD03998FC4686EF5A2F6D7E28",
            "algorithm_encryption": "RSA_2048",
            "created_at": "2018-06-14T00:44:52.000+0000",
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/partition/keys/1"
                }
            }
        },
        {
            "id": 8,
            "alias": "978877C478FB38D6D18FEF0CCE27311D9449DF754F75B5B4D167F672FDC18809",
            "algorithm_encryption": "AES_256",
            "created_at": null,
            "_links": {
                "self": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/partition/keys/8"
                },
                "aes": {
                    "href": "https://sandbox.tesseract.mx/api/v2/institution/aes/978877C478FB38D6D18FEF0CCE27311D9449DF754F75B5B4D167F672FDC18809"
                }
            }
        }
    ],
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/partition/keys?page=0&size=20"
        }
    },
    "_page": {
        "size": 20,
        "total_elements": 2,
        "total_pages": 1,
        "number": 0
    }
}

Para recuperar todas las llaves de la partición procedemos a realizar
una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/partition/keys.

Obteniendo como RESPONSE el siguiente contenido:

Nombre Tipo Descripción
_content array Colección de objectos key
_links array Colección de objectos link
_page object Objeto con la meta información de paginación

Key

EXAMPLE


curl -X GET \
    https://sandbox.tesseract.mx/api/v2/institution/partition/keys/1 \
    -H 'accept: application/json' \
    -H 'authorization: Basic TUtkbTlNNjl2MlJJVEpycVBYeDQ6WWJwUXpBZXk0VVc5QVZSNlRPM291OWtjT2I0RWpJM1R5Zzl1ZVc1aA==' \
    -H 'cache-control: no-cache'

REQUEST HEADERS


GET /api/v2/institution/partition/keys/1 HTTP/1.1
Host: sandbox.tesseract.mx
Authorization: Basic TUtkbTlNNjl2MlJJVEpycVBYeDQ6WWJwUXpBZXk0VVc5QVZSNlRPM291OWtjT2I0RWpJM1R5Zzl1ZVc1aA==
Accept: application/json
Cache-Control: no-cache

RESPONSE HEADERS


Content-Type: application/json;charset=UTF-8
Status: 200 Ok

RESPONSE BODY


{
    "id": 1,
    "alias": "18832DE2F6EE26F9A0E5752D558CE342724E204FD03998FC4686EF5A2F6D7E28",
    "algorithm_encryption": "RSA_2048",
    "created_at": "2018-06-14T00:44:52.000+0000",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v2/institution/partition/keys/1"
        }
    }
}

Puede realizar una petición de tipo GETa https://sandbox.tesseract.mx/api/v2/institution/partition/keys/{key_id} para recuperar una llave específica perteneciente a la partición, donde:

Nombre Tipo Descripción
key_id number Identificador único de la llave.

Obteniendo como RESPONSE el siguiente contenido:

Nombre Tipo Descripción
id number Identificador único de la llave
alias string Alias único de la llave almacenada en la partición con una longitud de 64 caracteres en formato hexadecimal
algorithm_encryption string Algoritmo utilizado
created_at string Representación de la fecha de creación de la llave en la zona horaria UTC.
_links object Contiene los links a recursos asociados

HASH

EJEMPLO


curl -X POST \
http://sandbox.tesseract.mx/api/v2/institution/hash \
-H 'accept: application/json' \
-H 'authorization: Basic RXM3cEdyWm1tMENXZGJKWmVYRE86SzFsdU5ad0ZGRTRwdmV5SmhwQnBCMEdGWTJEREYxY3lnbzlmRUFZZA==' \
-H 'content-type: application/json' \
-d '{
    "message": "SECRET",
    "algorithm": "SHA512"
}'

REQUEST BODY

{
    "message": "SECRET",
    "algorithm": "SHA512"
}

RESPONSE HEADERS


Status: 200
Content-Type: application/json;charset=UTF-8


{
    "message": "FEB6541D492A1D50394CC448E9C4D08AC381C5C90A656B19201BACFDF9462B87A8A5579A47810609C2307DEC92F52C88F218FD3075AFE02629BC5FD01CE734FD"
}

Algorithm Secure Hashing, también conocidos como SHA, son una familia de funciones criptográficas diseñadas para mantener los datos protegidos. Funciona mediante la transformación de los datos mediante una función hash: un algoritmo que consiste en operaciones bit a bit, adiciones modulares y funciones de compresión.

Para utilizar funciones HASH es necesario enviar una petición POST a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/hash, donde:

Nombre Tipo Descripción
message string Mensaje de la operación
algorithm string Función HASH soportadas

A continuación, las funciones HASH soportadas por la API:

Nombre Descripción
MD2 Message-Digest Algorithm 2, Algoritmo de Resumen del Mensaje
MD5 Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje
SHA Secure Hash Algorithm 1
SHA224 Secure Hash Algorithm 224
SHA256 Secure Hash Algorithm 256
SHA384 Secure Hash Algorithm 384
SHA512 Secure Hash Algorithm 512

AES

EJEMPLO


curl -X POST \
    'https://sandbox.tesseract.mx/api/v2/institution/aes/b1cd78c0d6c6055304126dc7d703adee \
    -H 'Cache-Control: no-cache' \
    -H 'Content-Type: application/json' \
    -d '{
    "transformation": "AES_CBC_PKCS5Padding",
    "mode": "ENCRYPT",
    "message": "secret",
    "encode": "BASE64"
}'

REQUEST HEADERS


POST /api/v2/institution/aes/b1cd78c0d6c6055304126dc7d703adee HTTP/1.1
Host: sandbox.tesseract.mx
Content-Type: application/json

REQUEST BODY


{
    "transformation": "AES_CBC_PKCS5Padding",
    "mode": "ENCRYPT",
    "message": "secret",
    "encode": "BASE64"
}

RESPONSE HEADERS


Status: 200
Content-Type: application/json;charset=UTF-8

RESPONSE BODY


{
    "message": "AxC2UntpJpK1II8LBMaImYNwBOz6sYZITYAyZfcG4njefg=="
}

Advanced Encryption Standard (AES), también conocido como Rijndael (pronunciado “Rain Doll” en inglés), es un esquema de cifrado por bloques adoptado como un estándar de cifrado por el gobierno de los Estados Unidos.

Para cifrar o descrifrar es necesario enviar una petición POST a la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/aes/{hexadecimal-label-aes-key}, donde:

Nombre Tipo Descripción
hexadecimal-label-aes-key string Identificador único la llave AES alamcenada en el HSM, con una longitud de 64 caracteres en formato hexadecimal.
Nombre Tipo Descripción
transformation string Tranformación AES a utilizar
mode string Modo de la operación ENCRYPT o DECRYPT
message string Mensaje de la operación
encode string Codificación de la entrada y salida, valos soprtados BASE64 y HEXADECIMAL

Transformaciones AES soportadas

Transformación Descripción
AES_CBC_NoPadding AES Encryption in CBC Mode (Cipher Block Chaining mode) No Padding
AES_CBC_ISO10126Padding AES Encryption in CBC Mode (Cipher Block Chaining mode) ISO 10126 Padding
AES_CBC_PKCS5Padding AES Encryption in CBC Mode (Cipher Block Chaining mode) PKCS5 Padding
AES_CFB8_NoPadding AES Encryption in CFB8 Mode (Cipher Feedback 8 mode) No Padding
AES_CFB128_NoPadding AES Encryption in CFB128 Mode (Cipher Feedback 128 mode) No Padding
AES_CTR_NoPadding AES Encryption in CTR Mode (Cipher Counter mode) No Padding
AES_ECB_NoPadding AES Encryption in ECB Mode (Cipher Electronic Codebook mode) No Padding
AES_GCM_NoPadding AES Encryption in GCM Mode (Cipher Galois/Counter mode) No Padding
AES_OFB_NoPadding AES Encryption in OFB Mode (Cipher Output Feedback mode) No Padding