openapi: "3.0.3" info: title: "API Valida Credenciales" description: API de seguridad que se utiliza para autenticar a los consumidores de API utilizando OauthV2 a través del flujo de client_credentials. version: "1.0.0" servers: - url: https://api-sandbox.banorte.com/api/esb/ValidaCredenciales/ description: Servidor de Sandbox Tokens paths: /accesstoken: post: tags: - "Tokens" summary: Generar y renovar description: Recurso encargado de generar un token y renovar las llaves rsa del cliente. parameters: - $ref: "#/components/parameters/Authorization-Basic" - $ref: "#/components/parameters/ContentType-X-WWW" - $ref: "#/components/parameters/Accept" - $ref: "#/components/parameters/AcceptLanguage" requestBody: content: application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/be-accestoken" required: true responses: 200: description: Regresa el resultado de la actualización de la entrega de token. headers: Strict-Transport-Security: $ref: "#/components/headers/Strict-Transport-Security" Cache-Control: $ref: "#/components/headers/Cache-Control" X-Frame-Options: $ref: "#/components/headers/X-Frame-Options" X-Content-Type-Options: $ref: "#/components/headers/X-Content-Type-Options" Content-Type: $ref: "#/components/headers/Content-Type" content: application/json: schema: $ref: "#/components/schemas/bs-accestoken" 400: description: Se regresa cuando la petición no cumple con especificado en el api. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 401: description: Se regresa este mensaje cuando envían un token inválido. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 403: description: Se regresa cuando no se envía un token expirado o sin privilegios. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 405: description: Se regresa cuando envían un método diferente especificado en la API. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 406: description: Se regresa cuando envían un valor incorrecto en el encabezado de aceptación. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 408: description: Se regresa cuando las peticiones generan timeout. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 429: description: Se regresa cuando el recurso se ejecuta con demasiada frecuencia. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 431: description: Se regresa cuando envían demasiada información en los encabezados. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 500: description: Se regresa cuando sucede un error Interno en el servidor. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" 503: description: Se regresa cuando las APIS están inactivas. content: application/json: schema: $ref: "#/components/schemas/bodyResponseTokenError" components: securitySchemes: oAuth2ClientCredentials: type: oauth2 description: | La API debe requerir un encabezado de autorización en la solicitud http un token web JSON (JWT) emitido por el servidor de autorización Oauth2 aprobado por la empresa para la autenticación del servicio. flows: clientCredentials: tokenUrl: "/api/esb/ValidaCredenciales/accesstoken" scopes: update: Scope generico para solicitar un token. schemas: bodyResponseTokenError: allOf: - $ref: "#/components/schemas/resultadoGenerico" - $ref: "#/components/schemas/resultadoGenericoError" be-accestoken: type: object required: - grant_type properties: grant_type: type: string description: "Indica a la política donde buscar el parámetro de tipo de concesión que se pasa en una solicitud. Según la especificación OAuth 2.0, el tipo de concesión debe proporcionar solicitudes para tokens de acceso y códigos de autorización." example: "client_credentials" enum: - "client_credentials" maxLength: 20 scope: type: string description: "Se usa para especificar que permisos otorgan el token o el código." example: "update" minLength: 1 maxLength: 50 client_id: type: string description: "Obtenido de una app de desarrollador registrada. Este campo solo será enviado en caso de no hacer uso del header Authorization (Basic Auth)." example: "djxiwejowexdc12decc" minLength: 1 maxLength: 100 client_secret: type: string description: "Obtenido de una app de desarrollador registrada. Este campo solo será enviado en caso de no hacer uso del header Authorization (Basic Auth)." example: "xmedcporekcoe49fjemede4fr" minLength: 1 maxLength: 100 bs-accestoken: type: object required: - status - codigoRespuesta - folio - access_token - expires_in - scope - token_type - issued_at properties: status: type: number description: "Contiene el código de respuesta de la petición http: Valores posibles: 200" example: 200 codigoRespuesta: type: string description: "Identifica si el servicio se ejecutó con éxito o sucedió un error de negocio. Valores posibles: 1- Exitoso 0- Error de Negocio" example: "1" mensaje: type: string description: "Descripción para el desarrollador." example: "Proceso Correcto" folio: type: string description: "Identificador global único generado automáticamente para cada petición recibida por el backend." example: "08API1661291226737" access_token: type: string description: "El token de acceso que se generó y se utilizará para autenticar una petición a un regurso protegido." example: "eyJraWQiOiI3M2FjOGMyOS0zNzFiLTRiMDQtOTAwZi1k" expires_in: type: string description: "El valor de vencimiento del token. La respuesta se expresa en segundos." example: "1200" scope: type: string description: "Se usa para especificar que permisos otorgan el token o el código." example: "" token_type: type: string description: "Tipo de token. Valores posibles: Bearer." example: "TokenTestAPP" issued_at: type: string description: "Fecha timestamp en la que se generó el token." example: "8586968438393" resultadoGenerico: type: object properties: status: title: Status description: Contiene el código de respuesta. type: integer maximum: 999 minimum: 0 example: 200 enum: - 200 - 400 - 401 - 403 - 405 - 406 - 408 - 429 - 431 - 500 - 503 codigoRespuesta: title: Codigo de Respuesta. description: Identifica si la petición se ejecutó con éxito o error 0-Error de Negocio. 1-Proceso correcto. type: integer maximum: 9 minimum: 0 example: 0 enum: - 0 - 1 codigoError: title: Codigo de Respuesta. description: Identificador del código de error para la aplicación cliente. type: string maxLength: 20 minLength: 1 example: ERRNEG001 enum: - "ERRNEG001 -Error de Negocio." - "ERRESQ001 -Cuando el JSON que viaje en el body no es válido." - "ERRESQ002 -Cuando envían campos vacíos o nulos." - "ERRESQ003 -Cuando se envían campos que no están definidos en la API." - "ERRESQ004 -Cuando la longitud de un campo es mayor o menor a lo establecido en la API." - "ERRESQ005 -Cuando en la petición envían un tipo de dato diferente en los campos de la API." - "ERRESQ006 -Cuando no envían campos requeridos de la API." - "ERRSEG001 -Cuando en la petición envían un token invalido." - "ERRSEG002 -Cuando en la petición envían un token expirado." - "ERRSEG003 -Cuando en la petición envían un token sin privilegios." - "ERRSEG004 -Cuando envían un método diferente especificado en la API." - "ERRSEG005 -Cuando envían un valor incorrecto en el encabezado de aceptación." - "ERRSEG006 -Cuando el recurso se ejecuta con demasiada frecuencia." - "ERRSEG007 -Cuando envían demasiada información en los encabezados." - "ERRSER001 -Cuando las peticiones generan timeout." - "ERRSER002 -Cuando las peticiones generan un error en los equipos de Banorte." - "ERRSER003 -Cuando los equipos de APIS no tienen conexión con Banorte." - "ERROFF001 -Cuando se apaga la funcionalidad de una API." - "ERROFF002 -Cuando se apaga la funcionalidad de todas las API." mensaje: title: Mensaje de la operación. description: Contiene la descripción del resultado de ejecución de la API. type: string maxLength: 500 minLength: 1 example: Proceso de Entrega. folio: title: Folio type: string description: Identificador global único generado automáticamente para cada petición recibida. maxLength: 36 minLength: 1 example: 08API1642005180146 resultadoGenericoError: description: Contiene los campos de resultado de la ejecución del api. type: object properties: detalles: title: Detalles del error description: Elemento que contiene los campos que explican el error sucedido. type: object properties: enlace: title: Enlace URL. description: URL que indica donde se puede obtener solución del error. type: string maxLength: 300 minLength: 1 example: https://developers.banorte.com/es/faq propiedad: title: Mensaje. description: Mensaje de error. type: string maxLength: 300 minLength: 1 example: Json Inválido. valorIncorrecto: title: Valor Incorrecto. description: Campo que utiliza para indicar que campo contiene información incorrecta la petición. type: string maxLength: 50 minLength: 1 example: Campo1. parameters: Accept-LanguageId: name: accept-Language in: header required: false schema: type: string maxLength: 5 minLength: 1 enum: - "es_MX" - "en_US" description: "Indica el idioma natural y la configuración regional que prefiere el cliente. Valores Posibles: es_MX, en_US" example: "es_MX" Authorization: name: Authorization in: header required: true schema: type: string description: "El Bearer es el Token de autenticación, es una cadena genera por el servidor en respuesta a una solicitud de autenticación al ejecutar el recurso de oauth 2.0." example: "Bearer token" Authorization-Basic: name: Authorization in: header required: true schema: type: string description: "El Bearer es el Token de autenticación, es una cadena genera por el servidor en respuesta a una solicitud de autenticación al ejecuta el recurso de oauth 2.0." example: "Basic Auth" ContentType: name: Content-Type in: header required: false schema: type: string maxLength: 50 description: "Es la propiedad que indica al servidor que tipo de dato enviado. Valores posibles: `application/json`; `charset=utf-8`" example: "application/json`; `charset=utf-8" ContentType-X-WWW: name: Content-Type in: header required: false schema: type: string maxLength: 50 description: "Es la propiedad que indica al servidor que tipo de dato enviado. Valores posibles: application/x-www-form-urlencoded" example: "application/x-www-form-urlencoded" Accept: name: Accept in: header required: false schema: type: string maxLength: 50 description: "Indica que tipo de contenido el cliente puede procesar Usan para la negociación de contenido, el servidor selecciona una propuesta, la utiliza e informa al cliente de la elección a través de la cabecera de respuesta Content-Type. Valores posibles: `application/json`" example: "application/json" AcceptLanguage: name: Accept-Language in: header required: false schema: type: string maxLength: 10 enum: - "es_MX" - "en_US" description: "Indica el idioma natural y la configuración región que prefiere el cliente. Valores Posibles: `es_MX` (default) `en_US`" example: "es_MX" headers: Strict-Transport-Security: description: "Es una característica de seguridad que permite indicar a consumidores que solo se debe comunicar con HTTPS en lugar de usar HTTP `Va por default: max-age=31536000 segundos`" schema: type: string example: "max-age=31536000" Cache-Control: description: "Especifica directivas (instrucciones) para almacenar temporalmente (caching) tanto en peticiones como en respuestas. `Valor por default -store`" schema: type: string example: "no-store" X-Frame-Options: description: "Puede ser usado para indicar si debería permitírsele a navegador renderizar una página en un frame, iframe u object Usarlo para evitar ataques de clickjacking `Valor por default:DENY`" schema: type: string example: "DENY" X-Content-Type-Options: description: "Es un marcador utilizado por el servidor para indicar que tipos MIME anunciados en los encabezados Content-Type no se deben cambiar `Valor por default:nosniff`" schema: type: string example: "nosniff" Content-Type: description: "Es la propiedad usada para indicar el media type (en-US) recurso. `Valor por default: application/json; charset=utf-8`" schema: type: string example: "application/json; charset=utf-8"