NAV
bash

Introducción

Bienvenido a la documentación de Tesseract API v0.1

El API de Tesseract le permite administrar sus licencias y tokens en la nube de una manera sencilla, mediante la utilización de peticiones HTTP y HTTPS.

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

Request

EXAMPLE


curl -i -X POST -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    -d "{\"duration\": 365, \"stock\": 1000}" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses

REQUEST HEADERS


# POST https://sandbox.tesseract.mx/api/v0.1/institution/licenses
Content-Type: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

REQUEST BODY


{
    "duration": 365,
    "stock": 1000
}

REQUEST HEADERS


# POST https://sandbox.tesseract.mx/api/v0.1/institution/licenses
Content-Type: application/xml;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

REQUEST BODY


<License>
    <duration>365</duration>
    <stock>1000</stock>
</License>

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

Response

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1
Accept: application/json
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


Content-Type: application/hal+json
Status: 200 Ok

RESPONSE BODY


{
    "id": 1,
    "status": "ACTIVATED",
    "stock": 1000,
    "free_tokens": 939,
    "used_tokens": 61,
    "created_at": "2017-04-11",
    "activated_at": "2017-04-11",
    "expirated_at": "2017-07-20",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1"
        }
    }
}

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1
Accept: application/xml
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


Content-Type: application/xml
Status: 200 Ok

RESPONSE BODY


<_License>
    <id>1</id>
    <status>ACTIVATED</status>
    <stock>1000</stock>
    <free_tokens>939</free_tokens>
    <used_tokens>61</used_tokens>
    <created_at>2017-04-11</created_at>
    <activated_at>2017-04-11</activated_at>
    <expirated_at>2017-07-20</expirated_at>
    <links>
        <links>
            <rel>self</rel>
            <href>https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1</href>
        </links>
    </links>
</_License>

Tesseract API v0.1 tiene soporte para responder su solicitud HTTP y HTTPS en formato JSON ó XML, como se muestra en los siguientes ejemplos:

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


{
    ...

    "_links": {
        "first": {
              "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=0&size=15"
        },
        "prev": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=0&size=15"
        },
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=1&size=15"
        },
        "next": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=2&size=15"
        },
        "last": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=3&size=15"
        }
    },
    "page": {
        "size": 15,
        "totalElements": 60,
        "totalPages": 4,
        "number": 1
    }
}

Por defecto en el caso de colecciones se regresarán 15 elementos y como máximo 30, con la siguiente especificación:

Nombre Tipo Descripción
first object Link al primer recurso
prev object Link al recurso anterior
self object Link del recurso actual
next object Link al siguiente recurso
last object Link al último recurso

Adicionalmente es acompañado de meta información con el objeto page, el cual se describe a continuación:

Nombre Tipo Descripción
size number Elementos solicitados en la actual solicitud
totalElements number Total de elementos encontrados
totalPages number Total de páginas de elementos
number number Página actual (inicia en la página 0)

{
    ...

    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1"
        },
        "act_code": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/act-code"
        },
        "challenge": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/challenge"
        },
        "enrollment": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/enrollment"
        },
        "otp": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/otp"
        }
    }
}

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 object Link del recurso actual
act_code object Link para recuperar el código de activación
challenge object Link para recuperar un nuevo challenge
enrollment object Link para recuperar la cadena de enrolamineto
otp object Link para validar un OTP

Autorización

EXAMPLE


curl -i -X -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses
Accept: application/json
Authorization: Basic cmasefgtby5hcmVu123

Para que tu aplicación consuma en su totalidad ó parcialmente los recursos disponibles, debes generar un API_KEY desde el Panel de Control de Tesseract. Una vez obtenido el API_KEY deberás agregarlo en la cabezera de su petición, como se muestra en el siguiente ejemplo:

Por seguridad deberá resguardar esta API_KEY, ya que tras su generación, la interfaz web sólo mostrará el API_KEY una vez.

Authentication

Recuperar información de autenticación

REQUEST HEADERS


Authorization:Basic cmljYXJkby5hcmVuYXNAdGVzc2VyYWN0Lm14OmZVVkxlPTU/NTlMKVN
Content-Type: application/hal+json;charset=UTF-8

RESPONSE HEADERS


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

RESPONSE BODY


{
    "id": 1,
    "full_name": "Cristian Jaramillo",
    "email": "cristian.jaramillo@tesseract.mx",
    "enabled": false,
    "role": {
        "name": "TESSERACT_ADMIN_ROLE",
        "permissions": [
            "ADMIN_READ_USERS",
            "ADMIN_WRITE_INSTITUTION",
            "ADMIN_UPDATE_LICENSE",
            "ADMIN_READ_LICENSES",
            "ADMIN_READ_INSTITUTION",
            "ADMIN_WRITE_LICENSE",
            "ADMIN_DELETE_INSTITUTION",
            "ADMIN_ACTIVATED_LICENSE",
            "ADMIN_READ_INSTITUTIONS",
            "ADMIN_READ_LICENSE",
            "READ_AUTH",
            "ADMIN_UPDATE_INSTITUTION",
            "READ_PERMISSIONS",
            "READ_ROLES",
            "ADMIN_READ_TOKENS",
            "ADMIN_READ_TOKEN",
            "ADMIN_READ_USER",
            "READ_ROLE",
            "ADMIN_DELETE_LICENSE",
            "READ_PERMISSION"
        ]
    },
    "created_at": 1507250415315,
    "updated_at": 1507250415315,
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users/1"
        }
    }
}

Para recuperar información sobre la autenticación actual usaremos GET a la url https://sandbox.tesseract.mx/api/v0.1/authentication.
A continuación encontraras la información necesaria para crear tu Request.

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

Nombre Tipo Descripción
full name string nombre del usuario
e-mail string correo electrónico
activated boolean activado
Role_name string Rol que posee
permissions string permisos que posee
created_at date fecha de creación
updated_at date fecha de actualización

Roles

Recuperar todos los Roles

REQUEST HEADERS


Authorization:Basic cmljYXJkby5hcmVuYXNAdGVzc2VyYWN0Lm14OmZVVkxlPTU/NTlMKVN
Content-Type: application/hal+json;charset=UTF-8

RESPONSE HEADERS


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

RESPONSE BODY


{
    "_embedded": {
        "_Roles": [
            {
                "name": "TESSERACT_APPLICATION_ROLE",
                "permissions": []
            },
            {
                "name": "TESSERACT_ADMIN_ROLE",
                "permissions": [
                    "READ_PERMISSION",
                    "ADMIN_READ_INSTITUTIONS",
                    "ADMIN_READ_USERS",
                    "ADMIN_UPDATE_LICENSE",
                    "ADMIN_DELETE_LICENSE",
                    "ADMIN_WRITE_INSTITUTION",
                    "ADMIN_UPDATE_INSTITUTION",
                    "READ_ROLE",
                    "READ_AUTH",
                    "READ_ROLES",
                    "ADMIN_READ_TOKEN",
                    "ADMIN_READ_USER",
                    "READ_PERMISSIONS",
                    "ADMIN_WRITE_LICENSE",
                    "ADMIN_READ_TOKENS",
                    "ADMIN_READ_LICENSE",
                    "ADMIN_READ_LICENSES",
                    "ADMIN_ACTIVATED_LICENSE",
                    "ADMIN_READ_INSTITUTION",
                    "ADMIN_DELETE_INSTITUTION"
                ]
            },
            {
                "name": "INSTITUTION_APPLICATION_ROLE",
                "permissions": []
            },
            {
                "name": "INSTITUTION_ADMIN_ROLE",
                "permissions": [
                    "READ_PERMISSION",
                    "READ_LICENSES",
                    "READ_TOKEN_CHALLENGE",
                    "READ_LICENSE",
                    "WRITE_TOKEN",
                    "UPDATE_TOKEN_SERIAL",
                    "VALIDATE_TOKEN_OTP",
                    "READ_TOKEN",
                    "WRITE_USER",
                    "READ_ROLE",
                    "READ_TOKENS",
                    "READ_TOKEN_ENROLLMENT",
                    "READ_APPLICATIONS",
                    "READ_TOKEN_SERIAL",
                    "UPDATE_USER",
                    "READ_AUTH",
                    "READ_ROLES",
                    "READ_USERS",
                    "READ_USER",
                    "DELETE_USER",
                    "READ_PERMISSIONS",
                    "READ_TOKEN_ACT_CODE",
                    "READ_APPLICATION",
                    "READ_INSTITUTION"
                ]
            }
        ]
    },
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/roles"
        }
    },
    "page": {
        "size": 15,
        "totalElements": 4,
        "totalPages": 1,
        "number": 0
    }
}

Para recuperar todos los roles existentes procedemos a realizar una petición GET a la url https://sandbox.tesseract.mx/api/v0.1/roles/. A continuación encontraras la información necesaria para crear tu Request.

Por defecto recuperara los primeros 15 elementos (máximo 30) utilizando la url https://sandbox.tesseract.mx/api/v0.1/roles, algunos ejemplos:

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

Nombre Tipo Descripción
_embedded object Contenedor de recursos incrustados para Roles
_links object URL a recursos asociados
page object Meta información de paginación

Descripción del contenido de _embedded

Nombre Tipo Descripción
_Roles array Array de objetos Rol recuperados

Descripción del contenido de _links

Nombre Tipo Descripción
first object Link al primer recurso
prev object Link al recurso anterior
self object Link del recurso actual
next object Link al siguiente recurso
last object Link al ultimo recurso

Descripción del contenido de page

Nombre Tipo Descripción
size number Elementos solicitados en la actual solicitud
totalElements number Total de elementos encontrados
totalPages number Total de páginas de elemntos
number number Página actual (inicia en la página 0)

Recuperar un rol especifico

REQUEST HEADERS


Authorization:Basic cmljYXJkby5hcmVuYXNAdGVzc2VyYWN0Lm14OmZVVkxlPTU/NTlMKVN
Content-Type: application/hal+json;charset=UTF-8

RESPONSE HEADERS


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

RESPONSE BODY


{
    "id": 1,
    "name": "TESSERACT_ADMIN_ROLE",
    "permissions": [
        "ADMIN_WRITE_INSTITUTION",
        "ADMIN_DELETE_INSTITUTION",
        "ADMIN_READ_LICENSES",
        "ADMIN_READ_TOKEN",
        "ADMIN_READ_USER",
        "READ_ROLES",
        "READ_ROLE",
        "READ_AUTH",
        "ADMIN_UPDATE_INSTITUTION",
        "ADMIN_READ_INSTITUTIONS",
        "READ_PERMISSIONS",
        "READ_PERMISSION",
        "ADMIN_READ_USERS",
        "ADMIN_READ_INSTITUTION",
        "ADMIN_READ_LICENSE",
        "ADMIN_READ_TOKENS",
        "ADMIN_WRITE_LICENSE",
        "ADMIN_DELETE_LICENSE",
        "ADMIN_UPDATE_LICENSE",
        "ADMIN_ACTIVATED_LICENSE"
    ]
}

Para recuperar un rol especificamente, es necesario enviar un solicitud GET a
la url https://sandbox.tesseract.mx/api/v0.1/roles/{rol_id}, donde:

Nombre Tipo Descripción
rol_id number Identificador único para el rol

El Response obtenido de la solicitud es el siguiente:

Nombre Tipo Descripción
name string nombre del rol e identificador único para el recurso
permissions String permisos que posee el rol

Permisos

Recuperar todos los permisos

REQUEST HEADERS


Authorization:Basic cmljYXJkby5hcmVuYXNAdGVzc2VyYWN0Lm14OmZVVkxlPTU/NTlMKVN
Content-Type: application/hal+json;charset=UTF-8

RESPONSE HEADERS


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

RESPONSE BODY


{
    "_embedded": {
        "_Permissions": [
            {
                "id": 1,
                "name": "ADMIN_READ_INSTITUTION"
            },
            {
                "id": 2,
                "name": "ADMIN_READ_INSTITUTIONS"
            },
            {
                "id": 3,
                "name": "ADMIN_WRITE_INSTITUTION"
            },
            {
                "id": 4,
                "name": "ADMIN_UPDATE_INSTITUTION"
            },
            {
                "id": 5,
                "name": "ADMIN_DELETE_INSTITUTION"
            },
            {
                "id": 6,
                "name": "ADMIN_READ_LICENSES"
            },
            {
                "id": 7,
                "name": "ADMIN_READ_LICENSE"
            },
            {
                "id": 8,
                "name": "ADMIN_WRITE_LICENSE"
            },
            {
                "id": 9,
                "name": "ADMIN_UPDATE_LICENSE"
            },
            {
                "id": 10,
                "name": "ADMIN_ACTIVATED_LICENSE"
            },
            {
                "id": 11,
                "name": "ADMIN_DELETE_LICENSE"
            },
            {
                "id": 12,
                "name": "ADMIN_READ_TOKENS"
            },
            {
                "id": 13,
                "name": "ADMIN_READ_TOKEN"
            },
            {
                "id": 14,
                "name": "ADMIN_READ_USERS"
            },
            {
                "id": 15,
                "name": "ADMIN_READ_USER"
            },
            {
                "id": 16,
                "name": "READ_INSTITUTION"
            },
            {
                "id": 17,
                "name": "READ_APPLICATIONS"
            },
            {
                "id": 18,
                "name": "READ_APPLICATION"
            },
            {
                "id": 19,
                "name": "READ_LICENSES"
            },
            {
                "id": 20,
                "name": "READ_LICENSE"
            },
            {
                "id": 21,
                "name": "READ_TOKENS"
            },
            {
                "id": 22,
                "name": "READ_TOKEN"
            },
            {
                "id": 23,
                "name": "WRITE_TOKEN"
            },
            {
                "id": 24,
                "name": "READ_TOKEN_SERIAL"
            },
            {
                "id": 25,
                "name": "UPDATE_TOKEN_SERIAL"
            },
            {
                "id": 26,
                "name": "READ_TOKEN_ENROLLMENT"
            },
            {
                "id": 27,
                "name": "READ_TOKEN_ACT_CODE"
            },
            {
                "id": 28,
                "name": "READ_TOKEN_CHALLENGE"
            },
            {
                "id": 29,
                "name": "VALIDATE_TOKEN_OTP"
            },
            {
                "id": 30,
                "name": "READ_USERS"
            }
        ]
    },
    "_links": {
        "first": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/permissions?page=0&size=30"
        },
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/permissions"
        },
        "next": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/permissions?page=1&size=30"
        },
        "last": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/permissions?page=1&size=30"
        }
    },
    "page": {
        "size": 30,
        "totalElements": 39,
        "totalPages": 2,
        "number": 0
    }
}

Para recuperar todos los permisos existentes procedemos a realizar una petición GET a la url https://sandbox.tesseract.mx/api/v0.1/permissions/. A continuación encontraras la información necesaria para crear tu Request.

Por defecto recuperara los primeros 15 elementos (máximo 30) utilizando la url https://sandbox.tesseract.mx/api/v0.1/permissions, algunos ejemplos:

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

Nombre Tipo Descripción
_embedded object Contenedor de recursos incrustados para permissions
_links object URL a recursos asociados
page object Meta información de paginación

Descripción del contenido de _embedded

Nombre Tipo Descripción
_Permissions array Array de objetos permission recuperados

Descripción del contenido de _links

Nombre Tipo Descripción
first object Link al primer recurso
prev object Link al recurso anterior
self object Link del recurso actual
next object Link al siguiente recurso
last object Link al ultimo recurso

Descripción del contenido de page

Nombre Tipo Descripción
size number Elementos solicitados en la actual solicitud
totalElements number Total de elementos encontrados
totalPages number Total de páginas de elemntos
number number Página actual (inicia en la página 0)

Recuperar un permiso especifico

REQUEST HEADERS


Authorization:Basic cmljYXJkby5hcmVuYXNAdGVzc2VyYWN0Lm14OmZVVkxlPTU/NTlMKVN
Content-Type: application/hal+json;charset=UTF-8

RESPONSE HEADERS


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

RESPONSE BODY


{
    "id": 1,
    "name": "ADMIN_READ_INSTITUTION"
}

Para recuperar un permiso especificamente, es necesario enviar un solicitud GET a la url https://sandbox.tesseract.mx/api/v0.1/permissions/{permission_id}, donde:

Nombre Tipo Descripción
permission_id number Identificador único para el permiso

El Response obtenido de la solicitud es el siguiente:

Nombre Tipo Descripción
id number Identificador único para el recurso
name string nombre del permiso

Institution

GET

REQUEST HEADERS


Authorization:Basic cmljYXJkby5hcmVuYXNAdGVzc2VyYWN0Lm14OmZVVkxlPTU/NTlMKVN
Content-Type: application/hal+json;charset=UTF-8

RESPONSE HEADERS


Content-Type: application/hal+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": "Mexico City",
    "locality": "Cuauhtemoc",
    "email": "contacto@tesseract.mx",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution"
        },
        "applications": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/applications"
        },
        "licenses": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses"
        },
        "users": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users"
        }
    }
}

Para obtener la información de una institución vamos a realizar una petición GET a la url https://sandbox.tesseract.mx/api/v0.1/institution donde:

Nombre Tipo Descripción
id number Identificador único para la institución
country string Pais de la institución
domain string Dominio de la institución
email string Correo de la institución
city string Ciudad de la institución
name string Nombre de la institución
rfc string RFC de la institución

Usuarios

Recuperar todos los usuarios

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/users HTTP/1.1
Accept: application/json;charset=UTF-8

RESPONSE HEADERS


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

RESPONSE BODY


{
    "_embedded": {
        "_Users": [
            {
                "id": 1,
                "full_name": "Cristian Jaramillo",
                "email": "cristian.jaramillo@tesseract.mx",
                "enabled": false,
                "role": {
                    "name": "TESSERACT_ADMIN_ROLE",
                    "permissions": [
                        "ADMIN_ACTIVATED_LICENSE",
                        "ADMIN_READ_USER",
                        "ADMIN_DELETE_LICENSE",
                        "ADMIN_UPDATE_INSTITUTION",
                        "READ_PERMISSION",
                        "READ_ROLES",
                        "ADMIN_READ_INSTITUTION",
                        "ADMIN_READ_LICENSES",
                        "ADMIN_READ_INSTITUTIONS",
                        "ADMIN_DELETE_INSTITUTION",
                        "ADMIN_READ_USERS",
                        "ADMIN_WRITE_INSTITUTION",
                        "READ_ROLE",
                        "ADMIN_READ_TOKEN",
                        "READ_PERMISSIONS",
                        "ADMIN_UPDATE_LICENSE",
                        "ADMIN_READ_TOKENS",
                        "ADMIN_READ_LICENSE",
                        "ADMIN_WRITE_LICENSE",
                        "READ_AUTH"
                    ]
                },
                "created_at": 1507250415315,
                "updated_at": 1507250415315,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users/1"
                    }
                }
            },
            {
                "id": 2,
                "full_name": "Ricardo Arenas",
                "email": "ricardo.arenas@tesseract.mx",
                "enabled": false,
                "role": {
                    "name": "INSTITUTION_ADMIN_ROLE",
                    "permissions": [
                        "READ_TOKEN_ACT_CODE",
                        "READ_INSTITUTION",
                        "READ_TOKENS",
                        "READ_TOKEN_SERIAL",
                        "READ_USERS",
                        "READ_TOKEN_ENROLLMENT",
                        "READ_TOKEN_CHALLENGE",
                        "UPDATE_USER",
                        "READ_PERMISSION",
                        "READ_ROLES",
                        "READ_TOKEN",
                        "WRITE_USER",
                        "UPDATE_TOKEN_SERIAL",
                        "READ_LICENSES",
                        "READ_APPLICATIONS",
                        "READ_APPLICATION",
                        "VALIDATE_TOKEN_OTP",
                        "READ_ROLE",
                        "READ_LICENSE",
                        "READ_USER",
                        "DELETE_USER",
                        "READ_PERMISSIONS",
                        "WRITE_TOKEN",
                        "READ_AUTH"
                    ]
                },
                "created_at": 1507250415466,
                "updated_at": 1507250415466,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users/2"
                    }
                }
            },
            {
                "id": 3,
                "full_name": "Francisco Illescas",
                "email": "francisco.illescas@tesseract.mx",
                "enabled": false,
                "role": {
                    "name": "INSTITUTION_ADMIN_ROLE",
                    "permissions": [
                        "READ_TOKEN_ACT_CODE",
                        "READ_INSTITUTION",
                        "READ_TOKENS",
                        "READ_TOKEN_SERIAL",
                        "READ_USERS",
                        "READ_TOKEN_ENROLLMENT",
                        "READ_TOKEN_CHALLENGE",
                        "UPDATE_USER",
                        "READ_PERMISSION",
                        "READ_ROLES",
                        "READ_TOKEN",
                        "WRITE_USER",
                        "UPDATE_TOKEN_SERIAL",
                        "READ_LICENSES",
                        "READ_APPLICATIONS",
                        "READ_APPLICATION",
                        "VALIDATE_TOKEN_OTP",
                        "READ_ROLE",
                        "READ_LICENSE",
                        "READ_USER",
                        "DELETE_USER",
                        "READ_PERMISSIONS",
                        "WRITE_TOKEN",
                        "READ_AUTH"
                    ]
                },
                "created_at": 1507250415576,
                "updated_at": 1507250415576,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users/3"
                    }
                }
            },
            {
                "id": 4,
                "full_name": "Rodrigo Lara",
                "email": "mobile@tesseract.mx",
                "enabled": false,
                "role": {
                    "name": "INSTITUTION_ADMIN_ROLE",
                    "permissions": [
                        "READ_TOKEN_ACT_CODE",
                        "READ_INSTITUTION",
                        "READ_TOKENS",
                        "READ_TOKEN_SERIAL",
                        "READ_USERS",
                        "READ_TOKEN_ENROLLMENT",
                        "READ_TOKEN_CHALLENGE",
                        "UPDATE_USER",
                        "READ_PERMISSION",
                        "READ_ROLES",
                        "READ_TOKEN",
                        "WRITE_USER",
                        "UPDATE_TOKEN_SERIAL",
                        "READ_LICENSES",
                        "READ_APPLICATIONS",
                        "READ_APPLICATION",
                        "VALIDATE_TOKEN_OTP",
                        "READ_ROLE",
                        "READ_LICENSE",
                        "READ_USER",
                        "DELETE_USER",
                        "READ_PERMISSIONS",
                        "WRITE_TOKEN",
                        "READ_AUTH"
                    ]
                },
                "created_at": 1507250415682,
                "updated_at": 1507250415682,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users/4"
                    }
                }
            }
        ]
    },
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users"
        }
    },
    "page": {
        "size": 15,
        "totalElements": 4,
        "totalPages": 1,
        "number": 0
    }
}

Para recuperar todos los usuarios procedemos a realizar
una petición GET a la siguiente url https://sandbox.tesseract.mx/api/v0.1/institution/users.

Obteniendo como RESPONSE el siguiente contenido:

Nombre Tipo Descripción
_embedded object Contenedor de recursos incrustados para licenses
_links object Link’s a recursos asociados
page object Meta información de paginación

Descripción del contenido de _embedded

Nombre Tipo Descripción
_Users array Array de objetos User recuperados

Descripción del contenido de _links

Nombre Tipo Descripción
first object Link al primer recurso
prev object Link al recurso anterior
self object Link del recurso actual
next object Link al siguiente recurso
last object Link al ultimo recurso

Descripción del contenido de page

Nombre Tipo Descripción
size number Elementos solicitados en la actual solicitud
totalElements number Total de elementos encontrados
totalPages number Total de páginas de elemntos
number number Página actual (inicia en la página 0)

Recuperar un usuario

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/intitution/users/{user_id}
Accept: application/json;charset=UTF-8

RESPONSE HEADERS


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

RESPONSE BODY


{
    "id": 1,
    "full_name": "Cristian Jaramillo",
    "email": "cristian.jaramillo@tesseract.mx",
    "enabled": false,
    "role": {
        "name": "TESSERACT_ADMIN_ROLE",
        "permissions": [
            "ADMIN_ACTIVATED_LICENSE",
            "READ_PERMISSION",
            "ADMIN_READ_USER",
            "ADMIN_DELETE_INSTITUTION",
            "READ_ROLES",
            "ADMIN_UPDATE_INSTITUTION",
            "ADMIN_READ_USERS",
            "READ_AUTH",
            "ADMIN_READ_TOKENS",
            "READ_ROLE",
            "ADMIN_READ_LICENSE",
            "READ_PERMISSIONS",
            "ADMIN_WRITE_INSTITUTION",
            "ADMIN_READ_LICENSES",
            "ADMIN_WRITE_LICENSE",
            "ADMIN_READ_INSTITUTION",
            "ADMIN_READ_INSTITUTIONS",
            "ADMIN_READ_TOKEN",
            "ADMIN_UPDATE_LICENSE",
            "ADMIN_DELETE_LICENSE"
        ]
    },
    "created_at": 1507250415315,
    "updated_at": 1507250415315,
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/users/1"
        }
    }
}

Para recuperar un usuario es necesario enviar un petición GET a la
siguiente url https://sandbox.tesseract.mx/api/v0.1/intitution/users/{user_id}, donde:

Nombre Tipo Descripción
id number Identificador único para el usuario

A continuación se muestra la descripción de RESPONSE obtenido:

Nombre Tipo Descripción
id number Identificador único para el usuario
full_name string Nombre del usuario
email string correo electrónico del usuario
activated bool Estado del usuario
role object Roles que posee el usuario

Descripción del contenido de _links

Nombre Tipo Descripción
self object Link del recurso actual

Crear un nuevo usuario

REQUEST HEADERS


# POST https://sandbox.tesseract.mx/api/v0.1/institution/users HTTP/1.1
Accept: application/json;charset=UTF-8
Content-Type: application/json;charset=UTF-8

REQUEST BODY


{

}

RESPONSE HEADERS


Content-Type: application/hal+json;charset=UTF-8
Location: https://sandbox.tesseract.mx/api/v0.1/institution/users
Status: 201 Created

RESPONSE BODY


{

}

Para crear un nuevo usuario es necesario enviar un REQUEST a la siguiente url https://sandbox.tesseract.mx/api/v0.1/institution/users, con la siguiente información descrita a continuación:

Nombre Tipo Descripción
full_name string nombre del usuario
activated bool estado del usuario
email string correo del usuario
name string Rol que tiene el usuario
password string contraseña del usuario

License

Recuperar todas las licencias

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
        -H "Authorization: Basic cmasefgtby5hcmVu123" \
        https://sandbox.tesseract.mx/api/v0.1/institution/licenses

REQUEST HEADERS

# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses
Accept: application/json
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


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

RESPONSE BODY


{
    "_embedded": {
          "_Licenses": [
            {
                "id": 1,
                "status": "ACTIVATED",
                "stock": 1000,
                "free_tokens": 990,
                "used_tokens": 10,
                "created_at": "2017-04-11",
                "activated_at": "2017-04-11",
                "expirated_at": "2017-07-20",
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1"
                    }
                }
            },
            {
                "id": 2,
                "status": "DISABLED",
                "stock": 1000,
                "free_tokens": 0,
                "used_tokens": 0,
                "created_at": "2017-04-13",
                "activated_at": null,
                "expirated_at": null,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/2"
                      }
                }
            },
            {
                "id": 3,
                "status": "DISABLED",
                "stock": 1000,
                "free_tokens": 0,
                "used_tokens": 0,
                "created_at": "2017-04-13",
                "activated_at": null,
                "expirated_at": null,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/3"
                      }
                }
            },
            ...
        ]
    },
    "_links": {
        "first": {
              "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=0&size=15"
        },
        "prev": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=0&size=15"
        },
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=1&size=15"
        },
        "next": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=2&size=15"
        },
        "last": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses?page=3&size=15"
        }
    },
    "page": {
        "size": 15,
        "totalElements": 60,
        "totalPages": 4,
        "number": 1
    }
}

Para recuperar todas las licencias de tu institución procedemos a realizar una petición GET a la URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses. A continuación encontrarás la información necesaria para crear tu Request.

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
_embedded object Contenedor de recursos incrustados para licenses
_links object URL a recursos asociados
page object Meta información de paginación

Descripción del contenido de _embedded:

Nombre Tipo Descripción
_Licenses array Array de objetos License recuperados

Descripción del contenido de _links:

Nombre Tipo Descripción
first object Link al primer recurso
prev object Link al recurso anterior
self object Link del recurso actual
next object Link al siguiente recurso
last object Link al último recurso

Descripción del contenido de page:

Nombre Tipo Descripción
size number Elementos solicitados
totalElements number Total de elementos encontrados
totalPages number Total de páginas de elementos
number number Página actual (inicia en la página 0)

Recuperar una licencia específica

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
        -H "Authorization: Basic cmasefgtby5hcmVu123" \
        https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}

REQUEST HEADERS

# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}
Accept: application/json
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


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

RESPONSE BODY


{
    "id": 1,
    "status": "ACTIVATED",
    "stock": 1000,
    "free_tokens": 940,
    "used_tokens": 60,
    "created_at": "2017-04-11",
    "duration": 1095,
    "activated_at": "2017-04-11",
    "expirated_at": "2017-07-20",
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1"
        }
    }
}

Para recuperar una licencia específicamente, es necesario enviar un solicitud GET a la URL https://sandbox.tesseract.mx/api/v0.1/licenses/{licenseId}, donde:

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

El Response obtenido de la solicitud es el siguiente:

Nombre Tipo Descripción
id number Identificador único para el recurso
status string Estado de la licencia
stock number Número de tokens totales
free_tokens number Número de tokens libres
used_tokens number Número de tokens utilizados
created_at date Fecha de creación de la licencia
duration number Duración de la licencia en días
activated_at date Fecha de activación de la licencia
expirated_at date Fecha de expiración de la licencia
_links object Contiene los links a recursos asociados

Descripción del contenido de _links

Nombre Tipo Descripción
self object Link del recurso actual

Token

Recuperar todos los tokens

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
        -H "Authorization: Basic cmasefgtby5hcmVu123" \
        https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens HTTP/1.1
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


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

RESPONSE BODY


{
    "_embedded": {
        "_Tokens": [
            {
                "id": 1,
                "token_type": "CHALLENGE RESPONSE",
                "token_status": "UNASSIGNED",
                "created_at": 1491952822000,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1"
                    },
                    "act_code": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/act-code"
                    },
                    "challenge": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/challenge"
                    },
                    "enrollment": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/enrollment"
                    },
                    "otp": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/otp"
                    }
                }
            },
            {
                "id": 2,
                "token_type": "CHALLENGE RESPONSE",
                "token_status": "UNASSIGNED",
                "created_at": 1491952826000,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/2"
                    }
                }
            },
            {
                "id": 3,
                "token_type": "CHALLENGE RESPONSE",
                "token_status": "UNASSIGNED",
                "created_at": 1491952828000,
                "_links": {
                    "self": {
                        "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/3"
                    }
                }
            }
        ]
    },
    "_links": {
        "first": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens?page=0&size=15"
        },
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens?page=0&size=15"
        },
        "next": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens?page=1&size=15"
        },
        "last": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens?page=3&size=15"
        }
    },
    "page": {
        "size": 15,
        "totalElements": 60,
        "totalPages": 4,
        "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/v0.1/institution/licenses/{licenseId}/tokens,
donde licenseId es el identificador único de la licencia.

Obteniendo como RESPONSE el siguiente contenido:

Nombre Tipo Descripción
_embedded object Contenedor de recursos incrustados para licenses
_links object Links a recursos asociados
page object Meta información de paginación

Descripción del contenido de _embedded

Nombre Tipo Descripción
_Tokens array Array de objetos Token recuperados

Descripción del contenido de _links

Nombre Tipo Descripción
first object Link al primer recurso
prev object Link al recurso anterior
self object Link del recurso actual
next object Link al siguiente recurso
last object Link al último recurso

Descripción del contenido de page

Nombre Tipo Descripción
size number Elementos solicitados en la actual solicitud
totalElements number Total de elementos encontrados
totalPages number Total de páginas de elementos
number number Página actual (inicia en la página 0)

Recuperar un token

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}

REQUEST HEADERS


#GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


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

RESPONSE BODY


{
    "id": 1,
    "token_type": "CHALLENGE RESPONSE",
    "token_status": "UNASSIGNED",
    "created_at": 1491952822000,
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1"
        },
        "act_code": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/act-code"
        },
        "challenge": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/challenge"
        },
        "enrollment": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/enrollment"
        },
        "otp": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/otp"
        }
    }
}

Para recuperar un token es necesario enviar una petición GET a la
siguiente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}, donde:

Nombre Tipo Descripción
licenseId number Identificador único para licencia perteneciente a la institución
tokenId number Identificador único para el token de la licencia especificada

A continuación se muestra la descripción del RESPONSE obtenido:

Nombre Tipo Descripción
id number Identificador único para el token
token_type string Tipo de token (más información aquí)
token_status string Estado del token (más información aquí)
createdAt date Fecha de creación del token
_links object Links a recursos asociados

Descripción del contenido de _links:

Nombre Tipo Descripción
self object Link del recurso actual
act_code object Link para recuperar el código de activación (más información aquí)
challenge object Link para recuperar un nuevo challenge (más información aquí)
enrollment object Link para recuperar la cadena de enrolamineto (más información aquí)
otp object Link para validar un OTP (más información aquí)

Crear token

EXAMPLE


curl -i -X POST -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    -d "{\"token_type\": \"CHALLENGE_RESPONSE\"}" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens

REQUEST HEADERS


#POST https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens HTTP/1.1
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

REQUEST BODY


{
    "token_type": "CHALLENGE_RESPONSE"
}

RESPONSE HEADERS


Content-Type: application/hal+json;charset=UTF-8
Location: https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1
Status: 201 Created

RESPONSE BODY


{
    "id": 61,
    "serial": "030021B4",
    "token_type": "CHALLENGE_RESPONSE",
    "token_status": "UNASSIGNED",
    "attempt": 0,
    "created_at": 1491952822000,
    "updated_at": 1500595544541,
    "_links": {
        "self": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1"
        },
        "act_code": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/act-code"
        },
        "challenge": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/challenge"
        },
        "enrollment": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/enrollment"
        },
        "otp": {
            "href": "https://sandbox.tesseract.mx/api/v0.1/institution/licenses/1/tokens/1/otp"
        }
    }
}

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/create?token_type=FOR_EVENT

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/create?token_type=FOR_EVENT HTTP/1.1
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

Para crear un token es necesario enviar un REQUEST a la siguiente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licensesId}/tokens, con la información descrita a continuación:

Nombre Tipo Descripción
token_type string Tipo de token a crear: CHALLENGE_RESPONSE ó FOR_EVENT; consulta Tipos de Tokens para más información.

Obtendremos un RESPONSE con la siguiente información:

Nombre Tipo Descripción
id number Identificador único para el token
serial string Identificador único alfanumérico de 8 dígitos
token_type string Tipo de token (más información aquí)
token_status string Estado del token (más información aquí)
attempt number Número de intentos
createdAt date Fecha de creación del token
updated_at date Fecha de actualización del token
_links object Link’s a recursos asociados

Descripción del contenido de _links

Nombre Tipo Descripción
self object Link del recurso actual
act_code object Link para recuperar el código de activación (más información aquí)
challenge object Link para recuperar un nuevo challenge (más información aquí)
enrollment object Link para recuperar la cadena de enrolamineto (más información aquí)
otp object Link para validar un OTP (más información aquí)

Otra forma de realizar la creación de un token consta de enviar una petición GET a la siguente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/create?token_type=, con la información descrita a continuación:

Nombre Tipo Descripción
token_type string Tipo de token a crear: CHALLENGE_RESPONSE ó FOR_EVENT; consulta Tipos de Tokens para más información.

Recuperar cadena de enrolamiento

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/enrollment

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/enrollment
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


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

RESPONSE BODY


{
    "enrollment_string": "UbE5bQ9xujeu2T9GDoH5F4iXhqdS03+/Srdu2"
}

Una vez que se ha realizado la creación de un token, este se encuentra en estado UNASSIGNED ( para más información consulte aquí ).

Para recuperar la cadena de enrolamiento, la cual es utilizada por Tesseract SDK para el enrolamiento de un dispositivo, se procede a realizar una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/enrollment donde:

Nombre Tipo Descripción
licenseId number Identificador único para licencia perteneciente a la institución
tokenId number Identificador único para el token de la licencia especificada

A continuación se describe el contenido del RESPONSE devuelto:

Nombre Tipo Descripción
enrollment_string string Cadena con una codificación en Base64 la cual contiene la información necesaria para el enrolamiento con un dispositivo.

Recuperar clave de activación

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/act-code

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/act-code
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


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

RESPONSE BODY


{
    "act_code": "86263656"
}

Para recuperar la clave de activación de un token es necesario enviar una
petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/act-code donde:

Nombre Tipo Descripción
licenseId number Identificador único para licencia perteneciente a la institución
tokenId number Identificador único para el token de la licencia especificada

Si la respuesta es exitosa recibiremos un RESPONSE con el siguiente contenido:

Nombre Tipo Descripción
act_code number Clave para activar un único token

Activación de un token

La activación de un token solo es posible mediante Tesseract SDK, y suministrando a este tanto la cadena de enrolamiento como la clave de activación

Recuperar un nuevo challenge

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/challenge

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/challenge
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu12

RESPONSE HEADERS


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

RESPONSE BODY


{
    "challenge": "38639862",
    "valid_before": 1491952826000
}

Una vez que el token se encuentra activado, solo los tokens de tipo CHALLENGE RESPONSE requieren un desafío (más información aquí), con lo cual generan una respuesta.

Para solicitar un nuevo desafío es necesario enviar una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/challenge donde:

Nombre Tipo Descripción
licenseId number Identificador único para licencia perteneciente a la institución
tokenId number Identificador único para el token de la licencia especificada

Si la respuesta es exitosa recibiremos un RESPONSE con el siguiente contenido:

Nombre Tipo Descripción
challenge number Desafío único para un token
valid_before date Fecha antes de la cual es válido el desafío

Validar un OTP

EXAMPLE


curl -i -X POST -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    -d "{\"otp\": 875862}" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/otp

REQUEST HEADERS


# POST https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/otp
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

REQUEST BODY


{
    "otp": "875862"
}

RESPONSE HEADERS


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

RESPONSE BODY


{
    "success": false
}

Para validar un OTP de un token sin importar su tipo, es necesario enviar una petición POST a la siguiente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}/otp donde:

Nombre Tipo Descripción
licenseId number Identificador único para licencia perteneciente a la institución
tokenId number Identificador único para el token de la licencia especificada

Con el siguiente BODY:

Nombre Tipo Descripción
otp number Respuesta a validar generada por Tesseract SDK

Si la respuesta es exitosa obtendremos el siguiente RESPONSE:

Nombre Tipo Descripción
success boolean TRUE la respuesta al desafío actual es correcto, FALSE la respuesta al desafío actual es incorrecto

Cambiar status del token

EXAMPLE


curl -i -X PATCH -H "Accept: application/json" \
    -H "Authorization: Basic cmasefgtby5hcmVu123" \
    -d "{\"token_status\": \"BLOCKED\"}" \
    https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}

REQUEST HEADERS


# PATCH https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId}
Accept: application/json;charset=UTF-8
Authorization: Basic cmasefgtby5hcmVu123

REQUEST BODY


{
    "token_status": "BLOCKED"
}

RESPONSE HEADERS


Status: 204 No Content

Para modificar el estado de un token es necesario enviar una solicitud PATCH a la siguiente URL https://sandbox.tesseract.mx/api/v0.1/institution/licenses/{licenseId}/tokens/{tokenId} donde:

Nombre Tipo Descripción
licenseId number Identificador único para licencia perteneciente a la institución
tokenId number Identificador único para el token de la licencia especificada

Con el siguiente BODY:

Nombre Tipo Descripción
token_status string Estado al que se desea actualizar el token, los cuales únicamente pueden ser ACTIVATE, BLOCKED ó REVOKED.

Si la solicitud es éxitosa no se recibe contenido en el REQUEST BODY únicamente una respuesta con un estado 204 No Content.

Token Type

EXAMPLE


curl -i -X GET -H "Accept: application/json" \
        -H "Authorization: Basic cmasefgtby5hcmVu123" \
        https://sandbox.tesseract.mx/api/v0.1/token/types

REQUEST HEADERS


# GET https://sandbox.tesseract.mx/api/v0.1/token/types HTTP/1.1
Accept: application/json
Authorization: Basic cmasefgtby5hcmVu123

RESPONSE HEADERS


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

RESPONSE BODY


[
    {
        "id": 1,
        "name": "CHALLENGE_RESPONSE",
        "description": "challenge-response authentication..."
    },
    {
        "id": 2,
        "name": "FOR_EVENT",
        "description": "To create a time-based one-time ..."
    }
]

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, 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. un nuevo OTP.

A continuación se presenta como pueden obtenerse lo tipos de tokens soportados por Tesseract API. Para obtenerlos es necesario enviar una petición GET a la siguiente URL https://sandbox.tesseract.mx/api/v0.1/token/types en donde recibiremos el siguiente RESPONSE:

Nombre Tipo Descripción
id number Identificador único para este recurso
name string Nombre único de este tipo de token
description string Descripción del tipo de token

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. Puede ser asignado solamente por un administrador de tokens.
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 ÀSSIGNED. Sin embargo tras ser activado el token puede pasar a un estado REVOKED en el cual el token puede ser reactivado solo por un administrador de tokens.
REVOKED Estado al que únicamente se llega tras ser activado y haber fallado en más de 5 ocasiones con la respuesta OTP. Tambien puede pasar a este estado si el administrador de tokens realiza la petición correspondiente.
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.

Errores

Se listan los siguientes códigos de error:

Códigos de error Descripción
400 Request erroneo
401 No autorizado
403 Prohibido
404 No encontrado
405 Método no permitido
406 No aceptable
429 Demaciados requests
500 Error interno del servidor
503 Servicio no disponible