NAV
curl php

Introducción

Tesseract API provee la capacidad para que sus aplicaciones puedan implementar cífrado seguro mediante HSM el cual es un procesador criptográfico diseñado específicamente para la protección del ciclo de vida de las claves criptográficas.

Tesseract utiliza los Hardware Security Modules (HSMs) de Gemalto. Si desea saber más acerca de los módulos de seguridad de gemalto puede consultar la documentación aquí.

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

El Tesseract API le permite administrar sus Objetos Criptograficos, licencias y tokens en la nube de forma transparente, mediante el uso de peticiones HTTPS utilizadas de la siguiente forma:

Método Seguro Idempotencia Descripción
GET SI SI Lee un recurso
POST NO NO Crea un recurso
PUT NO SI Actualiza un recurso
DELETE NO SI Elimina un recurso

EJEMPLO JSON

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  -H 'Content-Type: application/json' \
  

ENCABEZADOS DE LA RESPUESTA


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

  

EJEMPLO XML

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution \
  -H 'Accept: application/xml' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  -H 'Content-Type: application/xml' \
  

ENCABEZADOS DE LA RESPUESTA

Status 200 200
  Content-Type: application/xml;charset=UTF-8
  
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ó.

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

Request

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

Response

CUERPO DE LA RESPUESTA 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": "samuel.cenobio@tesseract.mx",
      "token_label": "HA_TESSERACT",
      "created_at": "2019-04-05T15:52:19.000+0000",
      "updated_at": "2019-04-05T15:52:19.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"
          }
      }
  }




  

CUERPO DE LA RESPUESTA 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>samuel.cenobio@tesseract.mx</email>
  <token_label>HA_TESSERACT</token_label>
  <created_at>2019-04-05T15:52:19.000+0000</created_at>
  <updated_at>2019-04-05T15:52:19.000+0000</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>

  

Las solicitudes se deben realizar utilizando peticiones en formato JSON o XML. 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. Dicho objeto contiene información sobre paginación en el caso de las colecciones y recursos asociados al recurso individual
solicitado anteriormente.


  "_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 particiones

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 solicitud actual
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)

Estados HTTP

El API indicara por medio de estados HTTP el estado de la solicitud Request a continuación la descripción de estos códigos:

Satisfactorios

Casos en los que es satisfactoria la solicitud realizada.

Respuesta Código de respuesta HTTP Significado
Ok 200 Respuesta estándar para peticiones correctas.
Created 201 Respuesta generada después de usar la petición POST, únicamente al crear nuevos recursos.
No Content 204 La petición se ha completado con éxito pero su respuesta no tiene ningún contenido.
Reset Content 205 La petición se ha completado con éxito, pero su respuesta no tiene contenidos y además, el navegador tiene que inicializar la página desde la que se realizó la petición (este código es útil por ejemplo para páginas con formularios cuyo contenido debe borrarse después de que el usuario lo envíe).

Errores

Si se produce un error, la API responderá con el código de estado HTTP apropiado y un objeto de mensaje de error que contiene un codigo de error: code y es legible desde el punto de vista humano: message.

Lista de códigos de error:

Nombre del error Código de estado HTTP Significado
Bad Request 400 La solicitud contiene sintaxis errónea.
Unauthorized 401 La autentificación es posible pero ha fallado o aún no ha sido provista.
Forbidden 403 El cliente no tiene los privilegios para hacerla.
Not Found 404 El servidor web no encuentra la página o recurso solicitado.
Method Not Allowed 405 Una petición fue hecha a una URI utilizando un método de solicitud no soportado por dicha URI; por ejemplo, cuando se utiliza GET en un formulario que requiere que los datos sean presentados vía POST, o utilizando PUT en un recurso de solo lectura.
Not Acceptable 406 El servidor no es capaz de devolver los datos en ninguno de los formatos aceptados por el cliente.
Gone 410 Indica que el recurso solicitado ya no está disponible y no lo estará de nuevo.
Too Many Request 429 El Rate Limit fue exedido, por tanto tiene que esperar.
Internal Server Error 500 Situaciones de error ajenas a la naturaleza del servidor web.

Autenticación

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

Registro

Para el uso de Soft Token de Tesseract API, 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

EJEMPLO


  curl -X GET \
  https://sandbox.tesseract.mx/api/v2/auth \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

  <?php

  require 'vendor/autoload.php';

  use Tesseract\Crypto\SDK\CryptoSDK;
  use Tesseract\Crypto\SDK\Http\StatusCode;
  use Tesseract\Crypto\SDK\Options\Config;
  use Tesseract\Crypto\SDK\Options\HttpClientConfig;

  $configs = include('config.php'); // array

  $httpClientConfig = new HttpClientConfig($configs[Config::BASE_URL],
      $configs[Config::ACCESS_KEY_ID],
      $configs[Config::SECRET_ACCESS_KEY],
      $configs[Config::DEBUG], // optional
      $configs[Config::TIMEOUT]); // optional

  $sdk = new CryptoSDK($httpClientConfig);

  $response = $sdk->auth();

  if($response->getStatusCode() == StatusCode::OK)
  {
      if($response->getBody()->isReadable())
          echo $response->getBody()->getContents();
  }

  

ENCABEZADOS DE LA PETICIÓN


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

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

  

ENCABEZADO DE LA RESPUESTA45


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

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

CUERPO DE LA RESPUESTA

    {
      "id": 11,
      "name": "Documentación",
      "enabled": true,
      "access_key_id": null,
      "secret_access_key": null,
      "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, en 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.
access_key_id string Llave única de acceso con la cual se realizarán las peticiones (véase Resguardo). Por seguridad este valor siempre será null.
secret_access_key string Contraseña del usuario con la cual se realizarán las peticiones (véase Resguardo). Por seguridad este valor siempre será null.
enabled boolean Boolean el cual indica false si la aplicación 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

EJEMPLO


    curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

  <?php

  require 'vendor/autoload.php';

  use Tesseract\Crypto\SDK\CryptoSDK;
  use Tesseract\Crypto\SDK\Http\StatusCode;
  use Tesseract\Crypto\SDK\Options\Config;
  use Tesseract\Crypto\SDK\Options\HttpClientConfig;

  $configs = include('config.php'); // array

  $httpClientConfig = new HttpClientConfig($configs[Config::BASE_URL],
      $configs[Config::ACCESS_KEY_ID],
      $configs[Config::SECRET_ACCESS_KEY],
      $configs[Config::DEBUG], // optional
      $configs[Config::TIMEOUT]); // optional

  $sdk = new CryptoSDK($httpClientConfig);

  $response = $sdk->institution();

  if($response->getStatusCode() == StatusCode::OK)
  {
      if($response->getBody()->isReadable())
          echo $response->getBody()->getContents();
  }

  

ENCABEZADO DE LA PETICION


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

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

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA

    {
      "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": "samuel.cenobio@tesseract.mx",
      "token_label": "HA_TESSERACT",
      "created_at": "2019-04-05T15:52:19.000+0000",
      "updated_at": "2019-04-05T15:52:19.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.
locality 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 number Representación de la fecha de creación de la institución en formato ISO 8601 a partir de 1970-01-01.
updated_at number Representación de la ultima fecha de actualización de la institución en formato ISO 8601 a partir de 1970-01-01.

Licencias

EJEMPLO


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


  

  <?php

  require 'vendor/autoload.php';

  use Tesseract\Crypto\SDK\CryptoSDK;
  use Tesseract\Crypto\SDK\Http\StatusCode;
  use Tesseract\Crypto\SDK\Options\Config;
  use Tesseract\Crypto\SDK\Options\HttpClientConfig;

  $configs = include('config.php'); // array

  $httpClientConfig = new HttpClientConfig($configs[Config::BASE_URL],
  $configs[Config::ACCESS_KEY_ID],
  $configs[Config::SECRET_ACCESS_KEY],
  $configs[Config::DEBUG], // optional
  $configs[Config::TIMEOUT]); // optional

  $sdk = new CryptoSDK($httpClientConfig);

  // $page = 0, $size = 20 default param values
  $response = $sdk->licenses();

  if($response->getStatusCode() == StatusCode::OK)
  {
  if($response->getBody()->isReadable())
      echo $response->getBody()->getContents();
  }

  

ENCABEZADOS DE LA PETICION


  curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/licenses \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

ENCABEZADO DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA

{
      "_content": [
          {
              "id": 1,
              "stock": 10000,
              "free": 9890,
              "used": 110,
              "status": "ACTIVATED",
              "duration": 365,
              "activated_at": "2018-11-09T00:26:46.000+0000",
              "expired_at": "2019-11-09T00:26:46.000+0000",
              "created_at": "2018-11-09T00:26:11.000+0000",
              "updated_at": "2019-02-12T19:58:14.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1"
                  },
                  "tokens": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens"
                  }
              }
          }
      ],
      "_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 20 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 object Colección de objectos link.
_page object Objeto con la metainformación de paginación.

Licencia

EJEMPLO


  curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/licenses/1 \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

  <?php

  require 'vendor/autoload.php';

  use Tesseract\Crypto\SDK\CryptoSDK;
  use Tesseract\Crypto\SDK\Http\StatusCode;
  use Tesseract\Crypto\SDK\Options\Config;
  use Tesseract\Crypto\SDK\Options\HttpClientConfig;

  $configs = include('config.php'); // array

  $httpClientConfig = new HttpClientConfig($configs[Config::BASE_URL],
  $configs[Config::ACCESS_KEY_ID],
  $configs[Config::SECRET_ACCESS_KEY],
  $configs[Config::DEBUG], // optional
  $configs[Config::TIMEOUT]); // optional

  $sdk = new CryptoSDK($httpClientConfig);

  $licenseId = 1;

  $response = $sdk->license($licenseId);

  if($response->getStatusCode() == StatusCode::OK)
  {
  if($response->getBody()->isReadable())
      echo $response->getBody()->getContents();
  }

  

ENCABEZADOS DE LA PETICION

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

  

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA

{
      "id": 1,
      "stock": 10000,
      "free": 9874,
      "used": 126,
      "status": "ACTIVATED",
      "duration": 1095,
      "activated_at": "2019-04-05T17:34:00.000+0000",
      "expired_at": "2022-04-04T17:34:00.000+0000",
      "created_at": "2019-04-05T17:32:56.000+0000",
      "updated_at": "2019-06-14T21:58:02.000+0000",
      "_links": {
          "self": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1"
          },
          "tokens": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens"
          }
      }
  }
  

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

EJEMPLO

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ=='

  

ENCABEZADO DE LA PETICIÓN


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

  

ENCABEZADO DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA

    {
      "_content": [
          {
              "id": 1,
              "serial_no": "010100000001",
              "token_status": "BLOCKED",
              "token_type": "CHALLENGE_RESPONSE",
              "success_counter": 0,
              "failed_counter": 0,
              "algorithm_parameters": {
                  "suite": "SHA1",
                  "challenge_format": {
                      "encoding": "DECIMAL",
                      "min": 6,
                      "max": 6
                  },
                  "response_format": {
                      "encoding": "DECIMAL",
                      "length": 6
                  }
              },
              "data": {
                  "time": 0,
                  "time_interval": 120000
              },
              "pin_policy": {
                  "pin_usage_mode": "LOCAL",
                  "max_failed_attempts": 5,
                  "min_length": 4,
                  "max_length": 4,
                  "pin_encoding": "DECIMAL"
              },
              "created_at": "2019-04-06T00:12:49.000+0000",
              "updated_at": "2019-05-13T18:49:37.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1"
                  }
              }
          },
          {
              "id": 2,
              "serial_no": "010100000002",
              "token_status": "WAITING",
              "token_type": "CHALLENGE_RESPONSE",
              "success_counter": 2,
              "failed_counter": 0,
              "algorithm_parameters": {
                  "suite": "SHA1",
                  "challenge_format": {
                      "encoding": "DECIMAL",
                      "min": 6,
                      "max": 6
                  },
                  "response_format": {
                      "encoding": "DECIMAL",
                      "length": 6
                  }
              },
              "data": {
                  "time": 0,
                  "time_interval": 120000
              },
              "pin_policy": {
                  "pin_usage_mode": "LOCAL",
                  "max_failed_attempts": 5,
                  "min_length": 4,
                  "max_length": 4,
                  "pin_encoding": "DECIMAL"
              },
              "created_at": "2019-04-06T00:12:52.000+0000",
              "updated_at": "2019-04-06T00:12:59.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/2"
                  },
                  "enrollment-string": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/2/enrollment-string"
                  },
                  "act-code": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/2/act-code"
                  }
              }
          },
          {
              "id": 35,
              "serial_no": "010100000035",
              "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": "2019-04-09T22:30:07.000+0000",
              "updated_at": "2019-04-29T04:56:27.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/35"
                  },
                  "validate": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/35/validate"
                  }
              }
          },
          {
              "id": 38,
              "serial_no": "010100000038",
              "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": "2019-04-09T22:34:52.000+0000",
              "updated_at": "2019-05-01T00:58:14.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/38"
                  },
                  "validate": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/38/validate"
                  }
              }
          },
          {
              "id": 39,
              "serial_no": "010100000039",
              "token_status": "ACTIVE",
              "token_type": "FOR_EVENT",
              "success_counter": 2,
              "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": "2019-04-09T22:36:05.000+0000",
              "updated_at": "2019-05-01T03:20:13.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/39"
                  },
                  "validate": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/39/validate"
                  }
              }
          },
          {
              "id": 40,
              "serial_no": "010100000040",
              "token_status": "ACTIVE",
              "token_type": "CHALLENGE_RESPONSE",
              "success_counter": 3,
              "failed_counter": 3,
              "algorithm_parameters": {
                  "suite": "SHA1",
                  "challenge_format": {
                      "encoding": "DECIMAL",
                      "min": 6,
                      "max": 6
                  },
                  "response_format": {
                      "encoding": "DECIMAL",
                      "length": 6
                  }
              },
              "data": {
                  "time": 0,
                  "time_interval": 120000
              },
              "pin_policy": {
                  "pin_usage_mode": "LOCAL",
                  "max_failed_attempts": 5,
                  "min_length": 4,
                  "max_length": 4,
                  "pin_encoding": "DECIMAL"
              },
              "created_at": "2019-04-09T22:37:17.000+0000",
              "updated_at": "2019-05-01T16:58:48.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/40"
                  },
                  "validate": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/40/validate"
                  },
                  "challenge": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/40/challenge"
                  }
              }
          },
          {
              "id": 81,
              "serial_no": "010100000081",
              "token_status": "ACTIVE",
              "token_type": "CHALLENGE_RESPONSE",
              "success_counter": 2,
              "failed_counter": 0,
              "algorithm_parameters": {
                  "suite": "SHA1",
                  "challenge_format": {
                      "encoding": "DECIMAL",
                      "min": 6,
                      "max": 6
                  },
                  "response_format": {
                      "encoding": "DECIMAL",
                      "length": 6
                  }
              },
              "data": {
                  "time": 0,
                  "time_interval": 120000
              },
              "pin_policy": {
                  "pin_usage_mode": "LOCAL",
                  "max_failed_attempts": 5,
                  "min_length": 4,
                  "max_length": 4,
                  "pin_encoding": "DECIMAL"
              },
              "created_at": "2019-04-22T16:00:15.000+0000",
              "updated_at": "2019-04-22T16:03:23.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/81"
                  },
                  "validate": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/81/validate"
                  },
                  "challenge": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/81/challenge"
                  }
              }
          }
      ],
      "_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=6&size=20"
          }
      },
      "_page": {
          "size": 20,
          "total_elements": 132,
          "total_pages": 7,
          "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 licencia.
_links object Colección de objectos link.
_page object Objeto con la metainformación de paginación.

Token

EJEMPLO

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1 \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  

ENCABEZADOS DE LA PETICIÓN

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

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA


      {
      "id": 1,
      "serial_no": "010100000001",
      "token_status": "BLOCKED",
      "token_type": "CHALLENGE_RESPONSE",
      "success_counter": 0,
      "failed_counter": 0,
      "algorithm_parameters": {
          "suite": "SHA1",
          "challenge_format": {
              "encoding": "DECIMAL",
              "min": 6,
              "max": 6
          },
          "response_format": {
              "encoding": "DECIMAL",
              "length": 6
          }
      },
      "data": {
          "time": 0,
          "time_interval": 120000
      },
      "pin_policy": {
          "pin_usage_mode": "LOCAL",
          "max_failed_attempts": 5,
          "min_length": 4,
          "max_length": 4,
          "pin_encoding": "DECIMAL"
      },
      "created_at": "2019-04-06T00:12:49.000+0000",
      "updated_at": "2019-05-13T18:49:37.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 Datos del token.
policy object Politicas del 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": {
          "encoding": "DECIMAL",
          "min": 6,
          "max": 6
      },
      "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 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.

Response Format


  "response_format": {
      "encoding": "DECIMAL",
      "length": 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.
length 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.

Data


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

  
Nombre Tipo Descripción
time string 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, Preappend, 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 SEA 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 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.
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

EJEMPLO

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/1 \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  

ENCABEZADO DE LA PETICIÓN

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

CUERPO DE LA PETICIÓN


  {
      "token_type": "FOR_EVENT"
  }

  

CABERAS DE LA RESPUESTA

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

  

CUERPO DE LA RESPUESTA

{
      "id": 261,
      "serial_no": "010100000261",
      "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": "2019-06-13T17:20:22.463+0000",
      "updated_at": "2019-06-13T17:20:22.463+0000",
      "_links": {
          "self": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/261"
          },
          "enrollment-string": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/261/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.
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 Parámetros Avanzados

EJEMPLO

  curl -X POST \
  https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/ \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  -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"
        }
    }'
  

ENCABEZADOS DE LA PETICIÓN

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

  

CUERPO DE LA PETICIÓN


  {
      "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"
      }
  }

  

ENCABEZADOS DE LA RESPUESTA

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

  

CUERPO DE LA RESPUESTA


      {
      "id": 262,
      "serial_no": "010100000262",
      "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": "2019-06-13T18:48:08.270+0000",
      "updated_at": "2019-06-13T18:48:08.270+0000",
      "_links": {
          "self": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/262"
          },
          "enrollment-string": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/262/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 (opcional) object (opcional) Parametros del algoritmo implementado por el token.
data (opcional) object (opcional) Data del token.
policy (opcional) object (opcional) Politicas del token token.

Enrollment String

EJEMPLO


   curl -X GET \
   https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/262/enrollment-string \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  

ENCABEZADOS DE LA PETICIÓN

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

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA

{
  "enrollment_string": "MWUzMjZhNTg0MzhkNjRlNWQzYjJjYTI2MTBkMGUwOGMyMTlmNzc2OTQ4MWQzYmM0NDRhMmNkMTNmN2I0ZDFkZGRjYjMzNzg2MTg0NmViYjU4NzRiMjdjNTc3NDdlZjU5NzI0NzE5YjQ2NjAzZjNkNDFmMzk0ZTY4ZmI5OWUxZmU0NmI0ZWE2N2M4ZjRhYjczZTljOGYzMWY3YmQ3M2E2YTgzMjU5YzkwZThmYjYzN2Y5NTQ2MjIyZjA4ZmNjNDIzMDRhZjRlYmUxZWEwOGYxNTBiMGVhN2JjNjI4ZmRmYmU2NWMwMjkzODNlYWU2NWQ1MDQ4NjA5NTMwMDA3MmIwM2NlODJkMGEwYjYwNzBhZGQyZmI0NTI2MjVkMjZkZDFhYjk4ZjdhNjczNjNkNDU5MTZhZjdkMzdmYzFkMzE1MzE1YzBjZjVjNjE5ZmE4MjRmZTdkZDA0NTI3MDQ4ODY5OWFiMzAwOWMwM2NkNzE4ZDAxZjM2MzVkZGNjNTBmZTBjYmEzMThjMWQxM2YyYzIwOTA2YzZlZjExZjRhMmZhNzliZGIwMzVkN2ZjMmVmMmM1YWNlM2ZkNWMwNmEzYjQ3ZGZlNjE5MDdiNWMzMjE4Y2U="
  }
  

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

EJEMPLO

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/262/act-code \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  

ENCABEZADOS DE LA PETICIÓN

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

ENCABEZADOSS DE RESPUESTA


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

  

CUERPO DE RESPUESTA

{
  "act_code": "44141848"
  }
  

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

Ejemplo

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/licenses/1/tokens/262/challenge \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

ENCABEZADOS DE PETICIÓN

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

ENCABEZADOS DE RESPUESTA


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

  

CUERPO DE LA RESPUESTA

{
  "question": "99907755",
  "valid_from": "2019-06-13T21:56:34.759+0000",
  "valid_until": "2019-06-13T22:06:34.759+0000"
  }

  

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/267/validate \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

ENCABEZADOS DE LA PETICIÓN

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

  

CUERPO DE LA PETICIÓN


  {
  "result":"038431"
  }

  

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA


  {
  "failed_intents": 0,
  "max_intents": 5,
  "success": true
  }

  

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, en 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 defecto)tiempo que puede ser customizado, y cada vez que se solicita un nuevo desafío este reinicializa su validez.
FOR_EVENT Este token se basa en la sincronización para generar cada 30 seg (por defecto)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 de 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

EJEMPLO


  curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/apps \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

ENCABEZADOS DE LA PETICIÓN


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

  

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA


    {
      "_content": [
          {
              "id": 2,
              "name": "Application Access",
              "access_key_id": null,
              "secret_access_key": null,
              "enabled": true,
              "roles": [
                  "APP_ROLE",
                  "PARTITION_ROLE",
                  "ROLE_ROLE",
                  "AES_ROLE",
                  "AUTHORITY_ROLE",
                  "KEY_ROLE",
                  "AUTH_ROLE",
                  "DES_ROLE",
                  "RSA_ROLE",
                  "INSTITUTION_ROLE",
                  "LICENSE_ROLE",
                  "TOKEN_ROLE",
                  "CERTIFICATE_ROLE",
                  "HASH_ROLE"
              ],
              "created_at": "2019-04-05T15:52:28.000+0000",
              "updated_at": "2019-04-05T15:52:28.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/2"
                  }
              }
          },
          {
              "id": 12,
              "name": "Documentation Access",
              "access_key_id": null,
              "secret_access_key": null,
              "enabled": true,
              "roles": [
                  "APP_ROLE",
                  "PARTITION_ROLE",
                  "ROLE_ROLE",
                  "AES_ROLE",
                  "KEY_ROLE",
                  "AUTH_ROLE",
                  "DES_ROLE",
                  "RSA_ROLE",
                  "INSTITUTION_ROLE",
                  "LICENSE_ROLE",
                  "TOKEN_ROLE",
                  "CERTIFICATE_ROLE",
                  "HASH_ROLE"
              ],
              "created_at": "2019-06-11T17:18:49.000+0000",
              "updated_at": "2019-06-11T17:18:49.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/12"
                  }
              }
          }
      ],
      "_links": {
          "self": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/apps?page=0&size=20"
          }
      },
      "_page": {
          "size": 20,
          "total_elements": 3,
          "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
_content array Collección de objetos app.
_links object Contiene los links a recursos asociados.
_page object Objeto con la meta información de paginación.

Recuperar una Aplicación

EJEMPLO


  curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/apps/12 \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

ENCABEZADOS DE LA PETICIÓN


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

  

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA


      {
      "id": 12,
      "name": "Documentation Access",
      "access_key_id": null,
      "secret_access_key": null,
      "enabled": true,
      "roles": [
          "APP_ROLE",
          "PARTITION_ROLE",
          "ROLE_ROLE",
          "AES_ROLE",
          "KEY_ROLE",
          "AUTH_ROLE",
          "DES_ROLE",
          "RSA_ROLE",
          "INSTITUTION_ROLE",
          "LICENSE_ROLE",
          "TOKEN_ROLE",
          "CERTIFICATE_ROLE",
          "HASH_ROLE"
      ],
      "created_at": "2019-06-11T17:18:49.000+0000",
      "updated_at": "2019-06-11T17:18:49.000+0000",
      "_links": {
          "self": {
              "href": "https://sandbox.tesseract.mx/api/v2/institution/apps/12"
          }
      }
  }

  

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.
access_key_id string Llave única de acceso con la cual se realizarán las peticiones (véase Resguardo). Por seguridad este valor siempre sera null.
secret_access_key string Contraseña del usuario con la cual realizara las peticiones (véase Resguardo). Por seguridad este valor siempre sera null.
enabled boolean Boolean el cual indica false si la aplicación está desactivada y true si la aplicación se encuentra activa.
roles array Colección que indica todos los roles que 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.

Crear una nueva Aplicación

EJEMPLO


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

  

ENCABEZADOS DE LA PETICIÓN


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

  

ENCABEZADOS DE LA RESPUESTA


  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

EJEMPLO


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

  

ENCABEZADOS DE LA PETICIÓN


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

  

ENCABEZADOS DE LA RESPUESTA


  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 \
  https://sandbox.tesseract.mx/api/v2/institution/apps/14 \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \

  

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

EJEMPLO

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/partition \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  

ENCABEZADOS DE LA PETICIÓN


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

  

ENCABEZADOS DE LA RESPUESTA


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

  

RESPONSE BODY

  {
      "slot": 4,
      "serial_number": "11343267252291",
      "label": "HA_TESSERACT",
      "_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

EJEMPLO

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/partition/keys \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  

ENCABEZADOS DE LA PETICIÓN

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

RESPONSE HEADERS


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

  

CUERPO DE LA RESPUESTA

{
      "_content": [
          {
              "id": 1,
              "alias": "18832DE2F6EE26F9A0E5752D558CE342724E204FD03998FC4686EF5A2F6D7E28",
              "algorithm_encryption": "RSA_2048",
              "created_at": "2019-04-05T15:52:22.000+0000",
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/partition/keys/1"
                  }
              }
          },
          {
              "id": 3,
              "alias": "978877C478FB38D6D18FEF0CCE27311D9449DF754F75B5B4D167F672FDC18809",
              "algorithm_encryption": "AES_256",
              "created_at": null,
              "_links": {
                  "self": {
                      "href": "https://sandbox.tesseract.mx/api/v2/institution/partition/keys/3"
                  },
                  "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 object Colección de objectos link.
_page object Objeto con la meta información de paginación.

Key

EJEMPLO

curl -X GET \
  https://sandbox.tesseract.mx/api/v2/institution/partition/keys/1 \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  

ENCABEZADOS DE LA PETICIÓN

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

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA

    {
      "id": 1,
      "alias": "18832DE2F6EE26F9A0E5752D558CE342724E204FD03998FC4686EF5A2F6D7E28",
      "algorithm_encryption": "RSA_2048",
      "created_at": "2019-04-05T15:52:22.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.
_link 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 VmVWdFBwR2NCNnA0OWpndkpZUDQ6SHFaVHVvS3BtR24xcjBmbXpQSDlSYlpiNkdtZG5tb1JxNkJ1NEt6dQ==' \
  -H 'content-type: application/json' \
  -d '{
  "message": "SECRET",
  "algorithm": "SHA512"
  }'

  

CUERPO DE LA PETICIÓN

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

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA
`json

{
  "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 Mensaje de la operación.
MD5 Función HASH soportada.
SHA Función HASH soportada.
SHA224 Función HASH soportada.
SHA256 Función HASH soportada.
SHA384 Función HASH soportada.
SHA512 Función HASH soportada.

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"
      }'

  

ENCABEZADOS DE LA PETICIÓN


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

  

CUERPO DE LA PETICIÓN


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

  

ENCABEZADOS DE LA RESPUESTA


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

  

CUERPO DE LA RESPUESTA


  {
      "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.

en donde el body requerido es:

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, valores 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.

RSA

Ejemplo

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

  

ENCABEZADOS DE LA PETICIÓN

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

  

CUERPO DE LA PETICIÓN


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

  

ENCABEZADOS DE LA RESPUESTA

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

  

CUERPO DE LA RESPUESTA

{
      "message": "AxC2UntpJpK1II8LBMaImYNwBOz6sYZITYAyZfcG4njefg=="
  }

  

RSA es un algoritmo de cifrado asimétrico, o de clave pública, que trabaja con dos claves, una pública y una privada. Todo el contenido de texto plano, o contenido sin cifrar que sea hecho con la clave pública, podrá ser decifrado con la clave privada y viceversa. Todo el contenido cifrado con la clave privada podrá ser descifrado con la clave pública.

Para cifrar o descifrar es necesario enviar una petición POSTa la siguiente URL https://sandbox.tesseract.mx/api/v2/institution/rsa/{hexadecimal-label-rsa-key}

Nombre Tipo Descripción
hexadecimal-label-rsa-key string Identificador único del par de llaves RSA almacenada en el HSM, con una longitud de 64 caracteres en formato hexadecimal.

en donde el body requerido es:

Nombre Tipo Descripción
transformation string Transformación RSA a utilizar.
mode string Modo de la operación ENCRYPT ó DECRYPT
message string Mensaje de la operación
encode string Codificación de la entrada y salida, valores soportados BASE64 y HEXADECIMAL.

Tansformaciones RSA soportadas

Transformación Descripcion
RSA_NONE_NoPadding RSA Encryption without mode and No Padding
RSA_ECB_OAEPWithSHA1AndMGF1Padding RSA Electronic codebook (ECB) the message is separated in blocks and everyone is encrypted on independend way, Optimal Asymmetric Encryption Padding (OAEP) is a padding scheme it uses a pair random oracles G and H to process the plaintext prior to asymmetric encryption it can be used to buils an all-or-nothing transform.