VTOL - Documentación de Webservices


REVISIONES


Fecha

Revisión

Cambios

13/11/2023

1.0

Creación del documento


CONTENIDO

1.    Introducción

1.1.  Propósito y audiencia

Especificar los webservices de tipo REST implementados en VTOL, en los cuales se definen todos los métodos utilizados para la creación, modificación, búsqueda y eliminación de Compañía, Sucursal, Caja y Terminales. Los webservices de VTOL que se deberán exponer a los clientes para realizar el intercambio de información necesaria. El documento está dirigido al equipo de producto VTOL.

1.2.  Vocabulario común y acrónimos


1.3.  Referencias

Referencia

Documento

Link

Catálogo de requerimientos de los Webservices de VTOL

2. Webservices de VTOL

Los webservices que se expondrán a los clientes (internos y externos) serán de tipo REST, intercambiando información con sus consumidores a través del envío de información en formato JSON. A continuación, se definen todos los servicios web disponibles en VTOL: 

2.1 Webservice Obtener Token - Método POST

API de VTOL:

Donde: <pathServer> corresponde al path del server en el que se encuentra corriendo el servidor Director Server, por ejemplo: “localhost”. El <port> corresponde al puerto en el que estará escuchando el servidor para el consumo del webService.

Ejemplo: https://127.0.0.1:8100/director/oauth/token


Importante

Obtención token: La API de Director Server para cualquier cliente está securitizada bajo token OAuth. Este token se obtiene utilizando Usuario y Clave.

Requerimiento Cliente - Director Server "Ejemplo Postman":

  • En la solapa “Body” seleccionar la opción “x-www-form-urlencoded” para ingresar la siguiente información:
    1. username:         vtol-service-user
    2. password:          Sts1288MY2017


Descripción y referencia de los parámetros:

M = Obligatorio
O = Opcional

SolapaParámetroValue

Tipo de dato

Referencia

Bodyusername vtol-service-userstringM
passwordSts1288MY2017stringM

companyCode
SMB
string
O

Importante:

El campo “username” y "password" ya estan definidos en el sistema de Director Server cuando se realiza la instalación del mismo.

Por último, se envía el requerimiento haciendo clic en el botón SEND para obtener la respuesta con el token.

Respuesta Director Server - Cliente

Se obtiene la respuesta con el token que será utilizado para gestionar los demás servicios:

Descripción y referencia de los parámetros del body de la respuesta:

M = Obligatorio

O = Opcional

D = Deprecado

Parámetro

Descripción

Tipo de dato

Referencia

companyCode
Se puede enviar siempre y cuando la compañia ya este creada en el sistema.
string
O
access_tokenSe necesita para realizar la autenticación de las solicitudes a los servicios web de Director Server.stringM
refresh_token

El "refresh_token" es un token de seguridad utilizado para obtener un nuevo "access_token" después de que el actual haya expirado.

Cuando un usuario se autentica en un servicio web, se le proporciona un "access_token" que se utiliza para autorizar sus solicitudes al servicio web. Este "access_token" tiene un tiempo de vida útil limitado por motivos de seguridad. Cuando el "access_token" expira, el usuario ya no puede acceder al servicio web hasta que obtiene un nuevo "access_token".

En lugar de hacer que el usuario inicie sesión de nuevo para obtener un nuevo "access_token", el servicio web puede proporcionar al usuario un "refresh_token" después de que se haya autenticado correctamente. El "refresh_token" tiene una vida útil más larga que el "access_token" y se puede utilizar para obtener uno nuevo después de que el "access_token" haya expirado. Esto significa que el usuario no tiene que volver a ingresar sus credenciales cada vez que el "access_token" expire.

El "refresh_token" se debe almacenar de forma segura, ya que permite que alguien obtenga un nuevo "access_token" sin necesidad de ingresar credenciales. Si el "refresh_token" cae en manos equivocadas, un atacante podría obtener acceso no autorizado a los recursos protegidos por el servicio web.

stringD
expires_inExpira el token cada xxxxxxx
numberM
scope
Alcance del token.
string
M
expUnit
Unidad de medida de expiración del token.

M

Respuesta HTTP correcta Director Server - Cliente

HTTP Code

HTTP Description

Descripción

200

OK

Respuesta correcta. Informa el acces_token para utilizar en los servicios.

Respuesta HTTP de Error Director Server - Cliente

El token se tiene que actualizar, ya que expira. El cual se informa mediante el siguiente código:

HTTP Code

HTTP Description

Descripción

401

No Autorizado

Access token does not exists.


2.2 Webservices de Compañía

  2.1.1 Método POST - "Crear compañía"

El servicio addCompany permitirá crear una compañía y también un usuario administrador con todos los permisos (excepto el acceso al menú de seguridad de la consola de VTOL), el cual estará asociado a la nueva compañía, la información del administrador (usuario y contraseña) se deberá enviar en el body request del servicio.


  • API de VTOL: https://<webVtol>/register/addCompany

Ejemplo: https://localhost:8787/register/addCompany


  • Requerimiento Cliente - VTOL

Referencia de parámetros:

M = Obligatorio
O = Opcional

A continuación, se especifican los parámetros que deberá enviar el cliente a VTOL al consumir la API "Crear Compañía" utilizando el método POST:

Parámetro

Descripción

Tipo de dato

Referencia

companyNameNombre de la compañíastringM
companyCodeCódigo de la compañíastringM
countryId

Id del País al que pertenecerá la compañía que se desea crear. Para Argentina es el id 1.

numberM
adminUser

Nombre del usuario Administrador que se genera al realizar la creación de la compañía. Si el usuario ya existe entonces se realiza la creación de la compañía y se le asigna al adminUser enviado en el parámetro.

Nota: al ingresar a la consola de Vtol con este usuario se deberá visualizar la compañía creada.

stringM
adminPass

Contraseña del usuario Administrador. Con la contraseña enviada en el parámetro adminPass se puede ingresar a la consola de Vtol. No solicita cambio de contraseña.

Nota: si el usuario que se envía en el adminUser ya existe, entonces no se muestra la password en el body response.

stringM
relateUsers

Usuario existente que se desea relacionar con la nueva compañía. Si se necesita agregar más de un usuario en el parámetro "relateUsers" se deben separar por coma. Por ejemplo: "relateUsers": "Usuario1, Usuario2"

stringO

Importante:

En el parámetro "relateUsers" del servicio addCompany  se deberán enviar los usuarios que fueron creados previamente desde el addUser con el fin de relacionarlos a la nueva compañía. El parámetro "relateUsers" del body es opcional, es decir, si no se envía un valor en dicho campo no se asocia ningún usuario de los que ya están creados en la base de datos. La definición del servicio addUser se encuentra disponible en: 23V_WEBSERVICESVTOL_RE_013_Gestionar usuario - Napse - P&D - Linx Share

Ejemplo en Postman: 


  • Respuesta VTOL - Cliente

Referencia de parámetros:

M = Obligatorio
O = Opcional

ParámetroSub-parámetroDescripciónTipo de datoReferencia
CompanycompanyNameNombre de la compañíastringM
companyCodeCódigo de la compañíastringM
countryId

Id del País al que pertenecerá la compañía que se desea crear. Para Argentina es el id 1.

numberM
UserAdminuser

Nombre del usuario Administrador. 

stringM
password

Contraseña del usuario Administrador. Con la contraseña generada en el servicio se puede ingresar a consola de VTOL.

Importante: la password se visualiza en la respuesta del body solo si el usuario administrador es creado por primera vez.  Si el usuario que se envía en el adminUser del request ya existe, no se muestra la password en el body response.

stringO


Add Company Response Message:

{
     "Company":
           {
            "name": "COMPANYV2",
            "code": "CMPv2",
            "countryId": "1"
           }
     "UserAdmin":
           {
            "user": "administrador",
            "password": "Napse1234"
           }
}

Ejemplo en Postman: 

  • Respuesta HTTP correcta VTOL - Cliente

Si se crea correctamente la compañía solicitada por el cliente, se debe enviar en la respuesta HTTP el siguiente código:

HTTP Code

HTTP Description

Descripción

200

OK

La petición se ha procesado correctamente y como resultado se ha creado una nueva compañía.

  • Respuesta HTTP de Error VTOL:

CódigoTipoDescripción
400 BAD_REQUESTINVALID company name

El company name debe ser único. Company Name already exists

INVALID company codeEl company code debe ser único. Company Code already exists
INVALID relateUsers

El users debe existir y estar habilitado. Esta validación se realiza solo si se envía el parámetro relateUsers en el request, ya que es un parámetro opcional.

INVALID country IdEl countryId es nulo o inválido. CountryId is null or invalid
INVALID adminUserEl adminUser debe tener mínimo 5 caracteres. Wrong name length - Min:5
INVALID adminPass

Se realizan las siguientes validaciones en el parámetro:

  • El adminPass debe contener letras. passwordMustContainAlphabetical.
  • El adminPass debe ser alfanumérico. passwordMustBeAlphanumerical.
  • El adminPass debe tener mínimo 7 caracteres. minPasswordSize.
  • El adminPass debe tener máximo 15 caracteres. maxPasswordSize.
  • El adminPass debe tener minúsculas. minLowerCaseQty.
INVALID fieldsLos campos countryId, company name, company code, adminUser y adminPass deben ser obligatorios.

  2.2.2 Método GET - "Buscar Compañía"

Ejemplo enviando el parámetro companyName: https://localhost:8787/register/getCompany?companyCode=VTP

  • Requerimiento Cliente - VTOL

A continuación, se especifica el parámetro que le deberá enviar el cliente a VTOL para consumir la API "Buscar compañía" utilizando el método GET: 

Parámetro

Descripción

Tipo de dato

Referencia

companyCode

Código de la compañía.

stringM
companyName

Nombre de la compañía. 

stringM

Importante:

En el servicio getCompany se puede buscar tanto por el parámetro "companyCode" como por el "companyName", pero si se envían ambos parámetros en el request, entonces la información deberá estar correcta, es decir, debe coincidir con lo que está cargado en la base de datos para dicha compañía. Si no se envía ningún parámetro en la sección "params" del request, entonces el servicio deberá responder con una lista con todas las compañías que existen en la base de datos.

Ejemplo en Postman:

  • Respuesta VTOL - Cliente:

Según el parámetro del mensaje de requerimiento, se envían los siguientes parámetros de respuesta:

Parámetro

Descripción

Tipo de dato

Referencia

idId de la compañíanumberM
companyName

Nombre de la compañía.

stringM
companyCode

Código de la compañía.

stringM
countryAbbreviation

Abreviación del país al que pertenece la compañía. AR: Argentina.

stringM
enabledIndica si la compañía se encuentra habilitada (true) o deshabilitada (false)true/ falseM


Ejemplo en Postman:


  • Respuesta HTTP correcta VTOL - Cliente

Si la búsqueda de la compañía requerida por el cliente se realiza de forma correcta, entonces se deberá enviar en la respuesta HTTP el siguiente código:

HTTP Code

HTTP Description

Descripción

200

OK

Respuesta correcta. Indica que la búsqueda de la compañía se realizó correctamente según el parámetro que se envía en el requerimiento.


Response Message en Postman:

{  
"id": 10,
"companyName": "VTOLPRUEBA",
"companyCode": "VTP",
"countryAbbreviation": "AR",
"enabled": true
}


  • Respuesta HTTP de Error VTOL - Cliente:

Código

Tipo

Descripción

400 BAD_REQUESTINVALID companyCode

El companyCode debe existir. Company not found.


INVALID companyName

El companyName debe existir. Company not found.

  2.2.3 Método PUT - "Modificar Compañía"

Ejemplo: https://localhost:8787/register/modifyCompany?refresh_token=0bcd62bda0185b6ea72c3bc33b8fa4b6 


  • Requerimiento Cliente - VTOL

A continuación, se especifican los parámetros que el cliente le deberá enviar a VTOL al consumir la API para "Modificar compañía" utilizando el método PUT:

ParámetroDescripciónTipo de datoReferencia 
companyName

Nombre de la compañía.

Nota: es obligatorio si no se envía el companyCode.

stringM

companyCode

Código de la compañía.

Nota: es obligatorio si no se envía el companyName.

stringM

countryId

Id del País al que pertenecerá la compañía que se desea crear. Para Argentina es el id 1.

numberM
newCompanyNameIndica el nuevo nombre de la compañíastringO

newCompanyCode

Indica el nuevo código de la compañía

stringO
enabled

Indica el estado de la compañía. Si la compañía se encuentra habilitada (true) o deshabilitada (false).

Nota: si se envía el parámetro en el mensaje de requerimiento, entonces se realiza la actualización solicitada, de lo contrario, no se aplican cambios.

true/ falseO

Nota:

Los parámetros newCompanyName y newCompanyCode se definen como opcionales. Si se envían ambos parámetros en el body entonces se modifica el nombre y el código de la compañía. De lo contrario, no se aplican cambios. Para el caso del parámetro "enabled" que también es opcional, en caso de enviarlo en el body se puede habilitar o deshabilitar la compañía, según el valor que tome dicho campo.

Ejemplo en Postman:


  • Respuesta VTOL - Cliente

ParámetroDescripciónTipo de datoReferencia
companyNameNombre de la compañíastringM

companyCode

Código de la compañía

stringM

countryId

Id del País al que pertenecerá la compañía que se desea crear. Para Argentina es el id 1.

numberM
newCompanyNameNombre de la compañíastringO

newCompanyCode

Código de la compañía

stringO
enabledIndica el estado de la compañía. Si la compañía se encuentra habilitada (true) o deshabilitada (false). true/ falseO

Ejemplo log VTOL:

  • Respuesta HTTP correcta VTOL - Cliente

Si se actualiza correctamente la información de la compañía requerida por el cliente, entonces se deberá enviar en la respuesta HTTP el siguiente código:

HTTP CodeHTTP DescriptionDescripción

200

OK

Respuesta correcta. Indica que los datos de la compañía han sido modificados correctamente.

  • Respuesta HTTP Error VTOL - Cliente:

CódigoTipoDescripción
400 BAD_REQUESTINVALID newCompanyName
  • El companyName debe ser único. New company name is in use
  • El companyName es obligatorio si no se envía el companyCode. Invalid company params.
INVALID newCompanyCode
  • El companyCode debe ser único. New company code is in use
  • El  companyCode es obligatorio si no se envía el companyName. Invalid company params.
INVALID countryIdEl countryId es obligatorio. countryId es null or invalid


  2.2.4 Método DELETE - "Eliminar Compañía"

Ejemplo: https://localhost:8787/register/deleteCompany?companyCode=OMVBQ1

  • Requerimiento Cliente - VTOL

A continuación, se especifica el parámetro que le deberá enviar el cliente a VTOL para consumir la API "Eliminar compañía" utilizando el método DELETE: 

ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la compañía

stringM


  • Respuesta VTOL - Cliente

 Si los parámetros de requerimiento son correctos, entonces VTOL deberá enviar el siguiente mensaje de respuesta: Se eliminó correctamente la compañía requerida.

  • Respuesta HTTP correcta VTOL - Cliente

Si se elimina correctamente la compañía solicitada por el cliente, se deberá enviar en la respuesta HTTP el siguiente código:

HTTP CodeHTTP DescriptionDescripción

200

OK

Respuesta correcta. La compañía ha sido eliminada.

  • Respuesta HTTP Error VTOL - Cliente:

HTTP Código

Tipo

Descripción

400 BAD_REQUESTINVALID CompanyCode
  • El companyCode no existe. Invalid Company.
  • El company code es obligatorio. Invalid or null params.
  • La compañía no se puede eliminar porque tiene elementos asociados. Por ejemplo: sucursales. This company still has stores and can't be removed !!!

  2.2.5 Detalles técnicos

  • Tabla country: en donde se visualizan todos los países con su respectivo id a los cuales puede pertenecer una compañía

  • Tabla userCompanies: para poder visualizar en la consola de VTOL todas las compañías creadas desde el servicio AddCompany, es necesario asignar el único usuario (userId: 1) a las compañías que existen, mediante la base de datos. INSERT INTO UserCompanies (userId, companyId) VALUES(1, 3); tiene los usuarios que existen.
  • Tabla rs_user: tiene los usuarios creados.


2.3 Webservices de Sucursal

  2.3.1 Método POST - "Crear Sucursal"

Ejemplo: https://localhost:8787/register/addStore

  • Requerimiento Cliente - VTOL

Referencia de parámetros:

M = Obligatorio
O = Opcional

A continuación, se especifican los parámetros que deberá enviar el cliente a VTOL al consumir la API "Creación de Sucursal" utilizando el método POST:

Parámetro

Descripción

Tipo de dato

Referencia

companyCodeCódigo de la compañía a la que pertenecerá la sucursalstringM

storeCode

Código de la Sucursal

stringM
storeNameNombre de la SucursalstringM
storeIdentifierIdentificador de la SucursalstringO
virtualCorresponde a una sucursal cargada en VTOL que puede ser física o virtual.true/ falseO
relateUsers

Usuario que se desea relacionar con la nueva sucursal. Si se desea agregar más de un usuario en el parámetro "users", se deben separar por coma.  Por ejemplo: "users": "Usuario1, Usuario2".

Importante: al realizar la creación de la sucursal se deberá enviar en este parámetro el usuario administrador creado desde el addCompany para que pueda visualizar la nueva sucursal a la que pertenece la compañía.

stringM

Ejemplo en Postman:

  • Respuesta VTOL - Cliente

Parámetro

Descripción

Tipo de dato

Referencia

companyCodeCódigo de la compañía a la que pertenecerá la sucursalstringM

storeCode

Código de la Sucursal

stringM
storeNameNombre de la SucursalstringM
storeIdentifierIdentificador de la SucursalstringO
virtualCorresponde a una sucursal cargada en VTOL que puede ser física o virtual.true/ falseO
relateUsers

Usuario que se relaciona con la nueva sucursal. Si se desea agregar más de un usuario en el parámetro "relateUsers", se deben separar por coma.  Por ejemplo: "relateUsers": "Usuario1, Usuario2"

stringM
  • Respuesta HTTP correcta de VTOL - Cliente

Si VTOL crea correctamente la sucursal solicitada por el cliente deberá enviar en la respuesta HTTP el siguiente código:

HTTP Code

HTTP Description

Descripción

200

OK

La petición se ha procesado correctamente y como resultado se ha creado una nueva sucursal. The store: storeName was added.

  • Respuesta HTTP de Error VTOL:

CódigoTipoDescripción
400 BAD_REQUESTINVALID storeName

El storeName ya existe. StoreName already exist:

INVALID storeCode

El storeCode ya existe. No se puede crear la nueva sucursal con el store code ingresado, ya que existe una sucursal con el mismo código. StoreCode already exist:

INVALID companyCodeEl companyCode debe existir. Company not found.
INVALID fieldsLos campos company name, store name y store code  son obligatorios. CompanyCode, StoreName, StoreCode and relateUsers are required.

2.3.2 Método GET - "Buscar Sucursal"

Ejemplo enviando el parámetro storeCode: https://localhost:8787/register/getStore?storeCode=0000000002

E

  • Requerimiento Cliente - VTOL

A continuación, se especifica el parámetro que le deberá enviar el cliente a VTOL para consumir la API "Buscar sucursal" utilizando el método GET: 

ParámetroDescripciónTipo de datoReferencia

storeCode

Código único de la Sucursal

numberM


Ejemplo en Postman:


Importante:

Para el servicio del método GET "Buscar sucursal" se puede enviar en el parámetro "storeCode" el código de la sucursal que se desea buscar (para esto se deberá completar el campo Value y seleccionar el checkbox que se muestra resaltado en rojo en la imagen). En caso de no seleccionar dicho parámetro, el servicio deberá responder una lista con todas las sucursales que existen en la base de datos.

  • Respuesta VTOL - Cliente:

Según los parámetros del mensaje de requerimiento, VTOL deberá enviar los siguientes parámetros de respuesta:

ParámetroDescripciónTipo de datoReferencia
storeIdId de la sucursalnumberM
storeNameNombre de la SucursalstringM

storeCode

Código de la Sucursal

numberM
virtualCorresponde a una sucursal cargada en VTOL que puede ser física o virtualtrue/ falseO
idId de la compañíanumberM
companyNameNombre de la compañíastringM
countryIdId del País al que pertenece la compañía. Para Argentina es el id 1.numberM
enabledIndica si la compañía se encuentra habilitada (true) o deshabilitada (false)true/ falseM


  • Respuesta HTTP correcta VTOL - Cliente

Si la búsqueda requerida por el cliente se realiza de forma correcta, entonces se deberá enviar en la respuesta HTTP el siguiente código:

HTTP CodeHTTP DescriptionDescripción

200

OK

Respuesta correcta.

  • Respuesta HTTP de Error VTOL - Cliente:

CódigoTipoDescripción
400 BAD_REQUESTINVALID_store code
  • El store code debe existir en la base de datos. Store code is invalid
  • El store code debe ser numérico. Store code is invalid

2.3.3 Método PUT - "Modificar Sucursal"

Ejemplo: https://localhost:8787/register/modifyStore


  • Requerimiento Cliente - VTOL

A continuación, se especifican los parámetros que el cliente le deberá enviar a VTOL al consumir la API para "Modificar una sucursal" utilizando el método PUT:

ParámetroDescripciónTipo de datoReferencia 

storeCode

Indica el código actual de la Sucursal. Al enviar este campo se indica el código del local actual al cual se le necesita realizar alguna modificación. 

stringM
newStoreNameIndica el nuevo nombre de la SucursalstringO

newStoreCode 

Indica el nuevo código de la Sucursal

stringO
newIdentifierIndica el nuevo IdentificadorstringO
virtualCorresponde a una sucursal cargada en VTOL que puede ser física o virtual. Si no es virtual toma el valor de 0.true/ falseO

Nota:

Los parámetros newStoreName, newStoreCode y newIdentifier son definidos como opcionales, debido a que, si no se cambia el valor de estos parámetros, se deberá enviar la información que se encuentra guardada en el servicio.


Ejemplo en Postman: 

En este caso se está modificando el storeCode 6 que es el actual por el valor 3 en el campo newStoreCode.


  • Respuesta VTOL - Cliente

ParámetroDescripciónTipo de datoReferencia
storeCodeCódigo de sucursal. Luego de enviar la solicitud de modificación y se realiza correctamente, este no es el código actual, si no el anterior.stringM
newStoreName Nuevo nombre de la SucursalstringM

newStoreCode 

Nuevo código de sucursal

numberM
newIdentifierNuevo IdentificadorstringM
virtualCorresponde a una sucursal cargada en VTOL que puede ser física o virtualtrue/ falseM


Response Message:
{
  "storeCode": "6",
  "newStoreName": "STOREPRUEBA3",
  "newStoreCode": "3",
  "virtual": "false",
  "newIdentifier": "sp3"
}


  • Respuesta HTTP correcta de VTOL - Cliente

Si se actualiza correctamente la información de la sucursal requerida por el cliente, entonces se deberá enviar en la respuesta HTTP el siguiente código:

HTTP CodeHTTP DescriptionDescripción

200

OK

Respuesta correcta. Indica que los datos de la sucursal han sido modificados correctamente.

  • Respuesta HTTP Error VTOL - Cliente:

CódigoTipoDescripción
400 BAD_REQUESTINVALID storeCode
  • El storeCode debe ser numérico. storeCode- must be a numeric value.
  • El storeCode no existe. Store not found.
  • El storeCode debe ser obligatorio. storeCode is mandatory
INVALID newStoreCode
  • El store code debe ser numérico. -newStoreCode- must be a numeric value

2.3.4 Método DELETE - "Eliminar Sucursal"

Ejemplo: https://localhost:8787/register/deleteStore?storeCode=6

  • Requerimiento Cliente - VTOL

A continuación, se especifica el parámetro que le deberá enviar el cliente a VTOL para consumir la API "Eliminar sucursal" utilizando el método DELETE: 

ParámetroDescripciónTipo de datoReferencia

storeCode

Código de la Sucursal

numberM


  • Respuesta VTOL - Cliente

 Si el parámetro del requerimiento es correcto, entonces VTOL deberá enviar el siguiente mensaje de respuesta: Se eliminó correctamente la sucursal requerida.

  • Respuesta HTTP correcta VTOL - Cliente

Si VTOL elimina correctamente la sucursal solicitada por el cliente se deberá enviar en la respuesta HTTP el siguiente código:

HTTP CodeHTTP DescriptionDescripción

200

OK

Respuesta correcta. Indica que la sucursal ha sido eliminada correctamente. The store: was deleted.

  • Respuesta HTTP Error VTOL - Cliente:

HTTP CódigoTipoDescripción
400 BAD_REQUESTINVALID_storeCode
  • El store code debe existir. Store can't be deleted
  • El store code no se puede eliminar porque tiene elementos asignados. Store can't be deleted

2.4 Webservices de Cajas

  2.4.1 Método POST - "Crear Caja"

  • API POST: https://<webVtol>/register/addNode

Ejemplo: https://localhost:8787/register/addNode


  • Requerimiento Cliente - VTOL

Referencia de parámetros:

M = Obligatorio
O = Opciona

A continuación, se especifican los parámetros que deberá enviar el cliente a VTOL al consumir la API/REST "Alta de cajas" utilizando el método POST:

Parámetro

Descripción

Tipo de dato

Referencia

companyCode

Código de la compañía a la que pertenecerá la caja

string

M

storeCode

Código de la Sucursal a la que pertenecerá la caja

string

M

nodeFrom

Número de la caja

number

M

nodeTo

Para agregar solo una caja, no se debe enviar el parámetro nodeTo o enviarlo con el mismo valor que nodeFrom.

number

O


Ejemplo en postman:


  • Respuesta VTOL - Cliente

Parámetro

Descripción

Tipo de dato

Referencia

companyCode

Código de la compañía a la que pertenecerá la caja

string

M

storeCode

Código de la Sucursal a la que pertenecerá la caja

string

M

nodeFrom

Número de la caja 

number

M

nodeTo

Para agregar solo una caja, no enviar el parámetro nodeTo o enviarlo con el mismo valor que nodeFrom.

number

O


  • Respuesta HTTP correcta VTOL - Cliente

Si VTOL crea correctamente la caja solicitada por el cliente deberá enviar en la respuesta el siguiente código:

HTTP Code

HTTP Description

Descripción

200

OK

La petición se ha procesado y como resultado se ha creado la(s) caja(s).

Por ejemplo: The nodes: 1 - 4 from store: 2606PRUEBA was add with success.


  • Respuesta HTTP de Error VTOL - Cliente

Código

Tipo

Descripción

400 BAD_REQUEST

INVALID nodeFrom

  • El nodeFrom debe ser numérico. The from parameter must be numeric value
  • No se puede crear la caja porque ya existe una caja con el mismo código para el local. The range of nodes already in use.

INVALID nodeTo

  • El nodeTo debe ser numérico. Se valida si se envía un valor en dicho campo. The TO parameter must be numeric value

INVALID companyCode

  • El companyCode es obligatorio. The Company field from request is wrong
  • El companyCode no existe. Company not found

INVALID storeCode

  • El storeCode es obligatorio. The store field from request is wrong
  • El storeCode no existe para el companyCode enviado. Store not found

2.4.2 Método GET - "Buscar Caja"

Ejemplo: https://localhost:8787/register/getNode?companyCode=VTP


  • Requerimiento Cliente - VTOL

Referencia de parámetros:

M = Obligatorio
O = Opcional

A continuación, se especifica el parámetro que le deberá enviar el cliente a VTOL para consumir la API "Obtener caja" utilizando el método GET: 

Parámetro

Descripción

Tipo de dato

Referencia

companyCodeCódigo de la compañía a la que pertenece la cajastringM
storeCodeCódigo de la Sucursal a la que pertenece la cajastringO

node

Código de caja

numberO
enabledHabilitado o deshabilitadotrue/ falseO


  • Respuesta VTOL - Cliente

Parámetro

Descripción

Tipo de dato

Referencia

companyCodeCódigo de la compañía a la que pertenece la sucursalstringM
companyNameNombre de la compañía a la que pertenece la sucursalstringM
storeNameNombre de la Sucursal a la que pertenece la cajastringM
storeCodeCódigo de la Sucursal a la que pertenece la cajanumberM
storeIdId de la Sucursal a la que pertenece la cajanumberM

node

Código de la caja

numberM

nodeId

Id de la caja

numberM
enabled
  • True: habilitado.
  • False: deshabilitado.
true/ falseM
virtualCorresponde a una sucursal cargada en VTOL que puede ser física o virtualtrue/ falseM


GETNode Response Message Postman: 

{
        "companyCode": "CMP1A",
        "companyName": "COMPANY1A",
        "storeName": "LOCAL1CMP1A",
        "storeId": 51,
        "storeCode": "2606PRUEBA",
        "node": "0000000001",
        "nodeId": 114,
        "enabled": "true",
        "virtual": "false"
    },


Ejemplo en Postman enviando solo el parámetro companyCode:


  • Respuesta HTTP correcta VTOL - Cliente

Si se encuentra de forma correcta la información de la caja, entonces se deberá enviar en la respuesta HTTP el siguiente código:

HTTP Code

HTTP Description

Descripción

200

OK

Respuesta correcta.


  • Respuesta HTTP de Error VTOL - Cliente

Código

Tipo

Descripción

400 BAD_REQUESTINVALID companyCode
  • El companyCode debe ser obligatorio. Param -companyCode- is required
  • El companyCode debe existir en la base de datos. Company is invalid

2.4.3 Método PUT - "Modificar Caja"

Ejemplo: https://localhost:8787/register/modifyNode


  • Requerimiento Cliente - VTOL

Referencia de parámetros:

M = Obligatorio.
O = Opcional.

A continuación, se especifican los parámetros que le tiene que enviar el cliente a VTOL al consumir la API para "Modificar una caja" utilizando el método PUT:

Parámetro

Descripción

Tipo de dato

Referencia 

node

Código de la caja actual que se desea modificar.

numberM

newNode

Nuevo código de la caja.

Nota: si es enviado el parámetro “newNode”, entonces se modifica el código de la caja.

numberO
storeCode

Código de la sucursal actual que se desea modificar.

alfanuméricoM
newStoreCode

Nuevo código de la Sucursal. Se envía un storeCode que se encuentre en la base de datos, es decir que esté previamente cargado.

Nota: si se envía el parámetro "newStoreCode", entonces se modifica el local al que pertenece la caja.

alfanuméricoO
enabled

Si es enviado el parámetro “enabled” puede habilitar o deshabilitar la caja según el valor que tome:

  • True: habilitado.
  • False: deshabilitado.
true/ falseO


Ejemplo en Postman:

En el siguiente ejemplo solo se cambia el node 1 por el 5

En el siguiente ejemplo se cambia el node 6 del local 2606PRUEBA al local 2706PRUEBA, es decir, se modifica el local de la caja/node.


  • Respuesta VTOL - Cliente

Si el parámetro del requerimiento es enviando correctamente, entonces se deberá recibir el mensaje de respuesta informando que la caja (node) solicitada fue modificada.


  • Respuesta HTTP correcta VTOL - Cliente

Si la modificación se realizó correctamente se deberá enviar en la respuesta HTTP el siguiente código:

HTTP Code

HTTP Description

Descripción

200

OK

Respuesta correcta. 

Ejemplo: The node: 0000000003 was edited with success.


  • Respuesta HTTP Error VTOL - Cliente:
CódigoTipoDescripción
400 BAD_REQUESTINVALID node
  • El node debe existir en la base de datos. Node not found.
  • El node debe ser numérico. Node must be numeric.
INVALID newNode
  • El newNode debe ser numérico. newNode must be numeric.
  • El newNode existe para el storeCode requerido. Node already exists.

INVALID fieldsEl node y storeCode son obligatorios. node and storeCode are required

2.4.4 Método DELETE - "Eliminar Caja"


  • Requerimiento Cliente - VTOL

A continuación, se especifica el parámetro que le deberá enviar el cliente a VTOL para consumir la API "Eliminar caja" utilizando el método DELETE: 

Parámetro

Descripción

Tipo de dato

Referencia

nodeCódigo de la cajanumberM
storeCodeCódigo del LocalnumberM


  • Respuesta VTOL - Cliente

Si el parámetro del requerimiento es correcto, entonces VTOL deberá enviar el siguiente mensaje de respuesta: Se eliminó correctamente la caja.


  • Respuesta HTTP correcta VTOL - Cliente

Si VTOL elimina correctamente la caja solicitada por el cliente deberá enviar en la respuesta HTTP el siguiente código:

HTTP Code

HTTP Description

Descripción

200

OK

Respuesta correcta. Indica que la caja ha sido eliminada correctamente.

Ejemplo: The POS for storeCode: 0000122112 node: 0000000003 was deleted.


  • Respuesta HTTP Error VTOL - Cliente:

CódigoTipoDescripción
400 BAD_REQUESTINVALID node
  • El node es obligatorio. Param -node- is required
  • El node no puede ser eliminado, porque tiene elementos asignados. The POS can't be deleted because it has elements associated with it.
INVALID storeCodeEl storeCode es obligatorio. Param -storeCode- is required

2.4.5 Detalles técnicos

  • Al realizar el cambio del nombre en el servicio editNode por modifyNode se ejecutó el siguiente script en la base de datos de la instalación de VTOL:

INSERT INTO RequestMap (description, config_attribute, url, category) VALUES('Servicio de modificación de cajas en VTOL', 'Operativo, Admin', 'register/modifyNode', 'SERVICE');

La prueba interna de VTOL para validar los cambios del servicio modifyNode se realizó aplicando el parche: rs-vtol-module-cd-ar-ha-service-3.8.0.15-SNAPSHOT-120423.jar


2.5 Webservices de la configuración por Local de VTOL - Terminales

El terminal es una identificación lógica de una caja física, según una definición de lote, desde el punto de vista de un determinado centro autorizador. Por lo cual, una caja física puede poseer uno o más números de terminales, según las definiciones de lote que existan. Cada Terminal se corresponde con una única definición de lote y posee un identificador propio (número de serie de terminal).

A continuación, se especifican los siguientes servicios tipo REST disponibles para Terminales:

2.5.1 Método POST – “Crear Terminal”:

Ejemplo: https://localhost:8787/register/addTerminal

  • Requerimiento Cliente - VTOL

Referencia de parámetros:

M = Obligatorio
O = Opcional

ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la Compañía a la que pertenece el Local

String

M

storeCode

Código del Local

Number

M

lotDefinitionId

Es el agrupamiento de uno o más opciones de pago para una determinada tarjeta. Nota: el parámetro debe estar previamente creado mediante otro servicio de VTOL.

Number

M

serialFrom

Número de Terminal que se desea agregar. Solo se guardan la cantidad de terminales que se puedan asignar según las cajas que estén disponibles. Indica desde que valor de la serie del terminal se desea configurar. Por ejemplo, si se desean configurar desde la 1 a la 5, se debe enviar en este campo el valor 1. 

Para agregar una sola terminal el valor de este parámetro debe ser igual al del serialTo.

Number

M

serialTo

Si se desea agregar un rango de terminales se deberá enviar en este parámetro el valor hasta el número de terminal que se desea agregar. Por ejemplo, si se desean configurar 5 terminales, se debe enviar en este campo el valor 5. 

Para agregar solo una terminal, se deberá enviar en el parámetro serialTo el mismo valor ingresado en el parámetro serialFrom.

Number

M

newPinMKP

Posición llave maestra PIN, el dato es numérico de un dígito. 

Number

O

newDataMK

Posición llave maestra DATA, el dato es numérico de un dígito.

Number

O


Importante:

Si se eliminan los parámetros "newPinMKP" y "newDataMK" del body, se asigna en la consola de VTOL por defecto lo siguiente:

  • En el campo "newPinMKP":
    • El valor de 1 si el canal es PrismaMC o Visa.
    • El valor de 0 si el canal es Posnet,
    • En blanco si el canal es FiservQr y Amex.
  • En el campo "newDataMK" el campo vacío para todos los canales.


  • Ejemplo en Postman con todos los campos en el body:


  • Ejemplo en postman, en donde los campos opcionales no se envían en el body:


  • Respuesta VTOL - Cliente

Referencia de parámetros:

M = Obligatorio
O = Opcional

ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la Compañía a la que pertenece el Local

String

M

storeCode

Código del Local

Number

M

lotDefinitionId

Id de la definición de lote. Es el agrupamiento de uno o más opciones de pago para una determinada tarjeta. Nota: el parámetro debe estar previamente creado mediante otro servicio de VTOL.

Number

M

serialFrom

Número de Terminal que se desea agregar. Solo se guardan la cantidad de terminales que se puedan asignar según las cajas que estén disponibles. Indica desde que valor de la serie del terminal se desea configurar. Por ejemplo, si se desean configurar desde la 1 a la 5, se debe enviar en este campo el valor 1. 

Para agregar una sola terminal el valor de este parámetro debe ser igual al del serialTo.

Number

M

serialTo

Si se desea agregar un rango de terminales se deberá enviar el valor hasta de la serie de terminal, Por ejemplo, si se desean configurar 5 terminales, se debe enviar en este campo el valor 5. 

Para agregar solo una terminal, se deberá enviar en el parámetro serialTo el mismo valor ingresado en el parámetro serialFrom.

Number

M

newPinMKP

Posición llave maestra PIN, el dato es numérico de un dígito. 

Number

O

newDataMK

Posición llave maestra DATA, el dato es numérico de un dígito.

Number

O


Add Terminal Response Message: 
{
  "companyCode": "OMVBQ1",
  "storeCode": "123",
  "lotDefinitionId": "3",
  "serialFrom": "1",
  "serialTo": "12",
  "newPinMKP": "1",
  "newDataMKP": "0"
}


  • Respuesta HTTP correcta de VTOL - Cliente

Si se realiza correctamente el alta del Terminal solicitada por el cliente, se deberá enviar en la respuesta HTTP el siguiente código:

HTTP CódigoHTTP DescripciónDescripción

201

Created

La petición se ha procesado correctamente y como resultado se ha creado una nueva terminal.


  • Respuesta HTTP de Error VTOL

Código

Tipo

Descripción

400 BAD_REQUEST

INVALID fields

Company code, store code y Lot Definition id son obligatorios.

INVALID company code

  • La compañía debe ser del tipo de dato string.
  • La compañía debe existir y estar habilitada.

INVALID store code

  • El Local debe ser numérico.
  • El Local debe existir para la compañía ingresada.
  • El Local no tiene cajas creadas para configurar una nueva terminal.

INVALID SerialFrom y SerialTo

  • El rango de códigos ingresado de las terminales se solapa con códigos existentes.
  • El número de serie de Terminal debe ser numérico.
  • Ya existe otra terminal con el mismo número de serie para el canal seleccionado.
  • El número de serie de terminal debe tener 8 o menos caracteres.

2.5.2 Método GET - "Buscar Terminal"

Ejemplo: https://localhost:8787/register/getTerminal?companyCode=1&pendingConfiguration=false&storeCode=1&lotDefinitionId=1&serialNumber=99

  • Requerimiento Cliente - VTOL

A continuación, se especifican los parámetros que le deberá enviar el cliente a VTOL para consumir la API "Buscar Terminal" utilizando el método GET, este servicio tiene Body: 

ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la Compañía a la que pertenece el Local

String

M

storeCode

Código del Local

Number

O

serialNumber

Corresponde al número de serie del terminal que se desea buscar. El terminal es una identificación lógica de una caja física, según una definición de lote.

String

O

lotDefinitionId

Id de la definición de Lote. Agrupamiento de uno o más opciones de pago para una determinada tarjeta. Se pueden buscar todas las opciones de definición de lote cargadas y también solo las pendientes de configuración.

Number

O

pendingConfiguration

El parámetro "Pending configuration" puede tomar los siguientes valores:

  • True: informa las cajas que están pendiente de configuración de terminal. 
  • False: informa las cajas que tienen configurada las terminales.

True/ False

M


Nota:

En el servicio getTerminal se envían de forma obligatoria los parámetros "companyCode" y "pendingConfiguration". Con respecto al parámetro "serialNumber" se encuentra definido como opcional, es decir, que si no se envía dicho parámetro se deberá mostrar una lista de todas las Terminales que existen con su respectivo código de caja.


Ejemplo del body en postman:


  • Respuesta VTOL - Cliente
ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la Compañía a la que pertenece el Local

String

M

storeCode

Código del Local

String

M

lotDefinitionId

Id de la definición de lote. Es el agrupamiento de uno o más opciones de pago para una determinada tarjeta.

Number

M

channelId

Vía lógica por la cual VTOL se comunica con el centro autorizador y envía a este las transacciones pertenecientes a ciertas tarjetas. Cada canal (definición de lote) maneja su propio número de lote

String

M

node

Código de la caja

Number

M

serialNumber

Número del terminal

String

M

newPinMKP

Posición llave maestra PIN, el dato es numérico de un dígito.  La posición de la llave maestra depende de la definición de lote y es utilizada por EMVKIT para saber de qué posición obtener el PIN dentro del pinpad.

Number

M

newDataMK

Posición llave maestra DATA, el dato es numérico de un dígito.

Number

M


GetTerminal Response Message Postman: 
{
        "companyCode": "OMVBQ1",
        "storeCode": "0000000123",
        "lotDefinitionId": 2,
        "channelId": 17,
        "node": "0000000001",
        "serialNumber": "00000001",
        "pinMKP": "1",
        "dataMKP": "0"
    },



  • Respuesta HTTP correcta VTOL - Cliente

Si VTOL encuentra de forma correcta la información del “terminal” asociado a la caja, entonces se deberá enviar en la respuesta HTTP el siguiente código:

HTTP CodeHTTP DescriptionDescripción

200

OK

Respuesta correcta.

  • Respuesta HTTP de Error VTOL - Cliente:
CódigoTipoDescripción
400 BAD_REQUESTINVALID company codeEl company code es obligatorio y debe existir.
INVALID store code
  • El store code es obligatorio y debe existir.
  • El store code debe pertenecer a la compañía.

INVALID lot Definition Id

  • El lot Definition Id debe existir.
  • El lot Definition Id debe pertenecer a la compañía.
INVALID Pending configurationEl campo Pending configuration es obligatorio.

INVALID serial number

  • El número de serie de terminal debe existir en la base de datos y estar asociado a una caja, que pertenece a un Local de una Compañía.

2.5.3 Método PUT - "Modificar Terminal"

 Ejemplo: https://localhost:8787/register/modifyTerminal

  • Requerimiento Cliente - VTOL

ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la Compañía a la que pertenece el Local. Este parámetro no se actualiza, pero se envía en el mensaje para relacionar con la terminal que se desea eliminar.

String

M

storeCode

Código del Local. Este parámetro no se actualiza, pero se envía en el mensaje para relacionar con la terminal que se desea actualizar.

Number

M

node

Código de la caja

Number

M

lotDefinitionId

Definición de lote. Agrupamiento de uno o más opciones de pago para una determinada tarjeta. Este parámetro no se actualiza, pero se envía en el mensaje para relacionar con la terminal que se desea eliminar.

Number

M

newSerialNumber

Nuevo número de terminal.

Nota: el parámetro es obligatorio en el body solo si la terminal no está configurada, de lo contrario, es opcional.

String

M/ O

newPinMKP

Posición llave maestra PIN, el dato es numérico de un dígito. 

Number

O

newDataMK

Posición llave maestra DATA, el dato es numérico de un dígito.

Number

O

Ejemplo en Postman:

Importante:

Los parámetros newPinMKP y newDataMK son definidos como opcionales. Por lo cual, si no se envían en el body no se actualizan los campos y de igual forma la respuesta es 200 OK. En caso de enviarlos se modifica el valor de los parámetros.

El parámetro newSerialNumber:

  • Se define como Obligatorio solo si la terminal no está configurada, debido a que si no se envía el campo para este caso aparece en la respuesta el error "500 Internal Server Error".
  • Se define como Opcional si la terminal se encuentra previamente configurada, ya que si no se envía muestra en la respuesta "200 OK" porque existe y no es requerido.


  • Respuesta VTOL - Cliente
ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la Compañía a la que pertenece el Local. Este parámetro no se actualiza, pero se envía en el mensaje para relacionar con la terminal que se desea eliminar.

String

M

storeCode

Código del Local. Este parámetro no se actualiza, pero se envía en el mensaje para relacionar con la terminal que se desea actualizar.

Number

M

node

Código de la caja

Number

M

lotDefinitionId

Definición de lote. Agrupamiento de uno o más opciones de pago para una determinada tarjeta. Este parámetro no se actualiza, pero se envía en el mensaje para relacionar con la terminal que se desea eliminar.

String

M

newSerialNumber

Nuevo número de terminal.

String

M/ O

newPinMKP

Posición llave maestra PIN, el dato es numérico de un dígito.

Number

O

newDataMK

Posición llave maestra DATA, el dato es numérico de un dígito.

Number

O

Edit Terminal Response Message: 
{
  "companyCode": "OMVBQ1",
  "storeCode": 123,
  "node": 6,
  "lotDefinitionId": 2,
  "newSerialNumber": "16",
  "newPinMKP": 1,
  "newDataMK": 0
}
  • Respuesta HTTP correcta de VTOL - Cliente
HTTP CodeHTTP DescriptionDescripción

200

OK

Respuesta correcta. Indica que los datos han sido actualizados correctamente.


  • Respuesta HTTP Error VTOL - Cliente
CódigoTipoDescripción
400 BAD_REQUESTINVALID fieldsCompanyCode, storeCode, lotDefinitionId y node deben existir en la base de datos.
INVALID storeCodeDebe pertenecer a la compañía.
INVALID lotDefinitionIdDebe pertenecer a la compañía.

INVALID newSerialNumber

  • Debe ser alfanumérico.
  • Ya existe otra terminal con el mismo número de serie para el canal.
  • La terminal debe tener 8 o menos caracteres.

INVALID newPinMKP

La posición llave maestra para DATA debe ser numérica de un digito.
INVALID newDataMK

La posición llave maestra PIN debe ser numérica de un digito.

2.5.4 Método DELETE - "Eliminar Terminal"

Ejemplo: https://localhost:8787/register/deleteTerminal?companyCode=OMVBQ1&storeCode=133&node=1&serialNumber=231&lotDefinitionId=2


  • Requerimiento Cliente - VTOL 

ParámetroDescripciónTipo de datoReferencia

companyCode

Código de la Compañía

string

M

storeCode

Código del Local

number

M

node

Código de la caja,

  • Nota: el parámetro "node" es obligatorio si no se envía en el body el serialNumber.

number

M

lotDefinitionId

Definición de Lote que se refiere l agrupamiento de uno o más opciones de pago para una determinada tarjeta. 

number

M

serialNumber

Número de terminal que se desea eliminar.

Nota: el parámetro "serianNumber" es obligatorio si no se envía en el body el node.

string

M


Importante:

En el body se puede enviar como obligatorio el parámetro "node" o "serialNumber", es suficiente con que se envíe uno de estos dos para poder eliminar la terminal. Por lo cual:

  • El parámetro "node" es obligatorio si no se envía en el body el serialNumber.
  • El parámetro "serianNumber" es obligatorio si no se envía en el body el node.

Ejemplo en Postman:

  • Respuesta VTOL - Cliente

 Si los parámetros de requerimiento son correctos, entonces VTOL deberá enviar el siguiente mensaje de respuesta que se eliminó correctamente la terminal solicitada.

Actualmente informa lo siguiente:

  • Respuesta HTTP correcta de VTOL - Cliente

Si VTOL elimina correctamente la Terminal solicitada por el cliente deberá enviar en la respuesta HTTP el siguiente código:

HTTP CódigoHTTP DescripciónDescripción

200

OK

Respuesta correcta. Indica que la Terminal ha sido eliminada correctamente

  • Respuesta HTTP Error VTOL - Cliente:
CódigoTipoDescripción
400 BAD_REQUEST

INVALID

número de serie de terminal

El número de serie de terminal no se encuentra asignado a una caja

INVALID lotDefinitionIdEl lotDefinitionId es obligatorio.
INVALID companyCodeEl companyCode es obligatorio.
500 Internal Server ErrorBad arguments in json Body
  • Sem rótulos