banca-movil-schemas
v1.2.61
Published
JSON Schemas compartidos para la banca móvil (CoDi WebApp y Servicios)
Downloads
3
Readme
Banca Móvil y CoDi SPEI
Este repositorio contiene las definiciones para los servicios de Banca Móvil y CoDi SPEI, estos estan escritos en OpenAPI 3 y a su vez se provee de la definición de interfaces para ser usadas en TypeScript, tanto para el Front como el Middleware.
Documentación
La documentación OpenAPI se encuentra disponible en los siguientes links:
https://multiva-codi.gitlab.io/banca-movil-schemas/
Esta se actualizará cada que se haga un cambio en este repositorio.
Ejecución de Mocks
Los mocks de servicios pueden ser usados para hacer la integración con el front end sin tener que pegarle al servicio real, para ejecutarlos hay que correr:
npm run start
Esto ejecutará los mocks en el puerto 3051
Las rutas expuestas son:
| Ruta | descripción | |-----|----------------| | /docs | Redoc OpenAPI | | /swagger | Swagger | | / | Panel mocks | | * | El resto de los paths son los de los servicios, con su método correspondiente |
Desde el panel de mocks se puede configurar la respuesta que va a retornar cada servicio cuando sea invocado, no es necesario ejecutar el proyecto nuevamente cuando se cambia cada respuesta (switch):
Ejemplo configuración:
Ejemplo petición:
Subir a dependencia a Nexus:
Para esto hay que registrar estas 2 variables de entorno:
export [email protected]
export NPM_NEXUS_PUBLISHER_AUTH=YWRtaW46YWRtaW4xMjM=
cambiando el correo y la autenticación de ser necesario, la autenticación esta dada por: base64(user:pass)
una vez hecho esto solo ejecutar:
Para subir al nexus de multiva:
npm run publish:nexus-mtv
para subirlo al nexus local:
npm run publish:nexus-local
Validando Schema con ajv
Para usar los JSON Schema dentro de los servicios, solo hay que instalar este repositorio desde NPM y ya una vez instalado podemos importarlo en Typescript mediante la instrucción:
import * as schemas from 'banca-movil-schemas';
Una vez ya importados todos, podemos hacer la validación de un request con ajv, aquí un ejemplo:
const ajv = new Ajv({allErrors: true});
const validate = ajv.compile(schemas.requests.RegistroInicialRequest);
const valid = validate(req.body);
if(valid){
// OK
} else {
// NOT OK
// Errors are on validate.errors
}
TypeScript Interfaces:
Estos se ubican en el archivo /types/all.d.ts de este repositorio, estos se deben de regenerar cada que se hace un cambio a algún servicio o a algún modelo de datos.
Para generar de nuevo estos tipos solo hay que ejecutar:
npm run gentypes
Esto creará el directorio ./types si no existe y ahí generará/actualizará el archivo all.d.ts
Ejemplo de interfaz creada a partir de un JSONSchema:
JSONSchema
{
"type": "object",
"title": "Deviceinfo",
"description": "Información del dispositivo Android/iOS en el que se está ejecutando la APP",
"required": [
"osName",
"osVersion",
"manufacturer",
"model"
],
"properties": {
"osName": {
"type": "string",
"description": "Sistema Operativo del dispositivo del usuario. Solo existen dos posibles valores para este campo: “android” o “ios”.",
"maxLength": 50,
"pattern": "^(.*)$"
},
"osVersion": {
"type": "string",
"description": "Versión del sistema operativo del dispositivo.",
"pattern": "^(.*)$"
},
"manufacturer": {
"type": "string",
"description": "Fabricante del dispositivo del usuario.",
"pattern": "^(.*)$"
},
"model": {
"type": "string",
"description": "Modelo del dispositivo del usuario.",
"pattern": "^(.*)$"
}
}
}
TypeScript Interface:
/**
* Información del dispositivo Android/iOS en el que se está ejecutando la APP
*/
export interface Deviceinfo {
/**
* Sistema Operativo del dispositivo del usuario. Solo existen dos posibles valores para este campo: “android” o “ios”.
*/
osName: string;
/**
* Versión del sistema operativo del dispositivo.
*/
osVersion: string;
/**
* Fabricante del dispositivo del usuario.
*/
manufacturer: string;
/**
* Modelo del dispositivo del usuario.
*/
model: string;
[k: string]: any;
}