You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@fineract.apache.org by VICTOR MANUEL ROMERO RODRIGUEZ <vi...@fintecheando.mx> on 2021/11/27 21:23:27 UTC
banorte
*De:* JESUS ALEJANDRO ROSALES TRUJILLO
*Enviado el:* miércoles, 10 de noviembre de 2021 07:45 p. m.
*Para:* Area de Integracion <ar...@banorte.com>; JORGE RAMON
CARRANZA VELEZ <jo...@banorte.com>; Abertan Rodriguez <
abertan@ibm.com>; Yasmin Pinales <Ya...@ibm.com>
*CC:* Christian Alvarez V <al...@mx1.ibm.com>; EIMEEN SCHULZ GUERRERO <
eimeen.schulz.guerrero@banorte.com>; ANDRES ALBERTO AGUILAR RODRIGUEZ <
andres.aguilar.rodriguez@banorte.com>; GERARDO RODRIGUEZ ARBALLO <
gerardo.rodriguez.arballo@banorte.com>; EDUARDO TERRAZO SEGURA <
eduardo.terrazo@banorte.com>
*Asunto:* RE: Apoyo para documentación de las APIS
Hola que tal buenas tardes Abertan, equipo de área de integración,
Les comparto el análisis para el nuevo oauth que se utilizara en el
proyecto *F-95617 Proyecto Mttos Bem/Entrega de Tokens*
Núm.
Nombre
Tipo
Long
Entrada/
Salida
Consideraciones
Atributos
Adicional
Tipo de Petición
POST
Parámetros en la URL
N/A
Campos del Header -Entrada
1
Authorization
X
N/A
E
Con los valores para el ID de cliente y el secreto del cliente obtenidos de
una app de desarrollador registrada (en este ejemplo, los valores se
codifican en Base64 )
Basic
Requerido
2
Content-Type
X
50
E
Es la propiedad que indica al servidor que tipo de dato es enviado.
Valores posibles:
*application/x-www-form-urlencoded*
Opcional
3
Accept
X
50
E
Indica que tipo de contenido el cliente puede procesar. Usando para la
negociación de contenido, el servidor selecciona una de las propuestas, la
utiliza e informa al cliente de la elección a través de la cabecera de
respuesta Content-Type .
Valores posibles:
*application/json*
***
Opcional
4
Accept-Language
X
10
E
Indica el idioma natural y la configuración regional que prefiere el
cliente.
Valores Posibles:
es_MX
en_US
Opcional
5
Host
X
20
E
especifica el nombre de dominio del servidor (para hosting virtual), y
(opcionalmente) el número de puerto TCP en el que el servidor está
escuchando.
Nota: Este campo solo se utiliza para ambientes previos y se tienen los
siguientes valores:
1. *api-dev.banorte.com <http://api-dev.banorte.com/>*
2. *api-qa.banorte.com <http://api-qa.banorte.com/>*
Opcional
Campos del Body -Entrada
1
grant_type
string
20
E
Indica a la política dónde 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
Valor fijo:
client_credentials
Requerido
2
scope
string
50
E
Se usa para especificar qué permisos otorgar el token o el código
Valores posibles:
Mensajerias:update
Requerido
Salida HTTP Status 200
Campos del Header -Salida
1
Strict-Transport-Security
X
N/A
S
Es una característica de seguridad que permite indicar a los consumidores
que sólo se debe comunicar con HTTPS en lugar de usar HTTP
Valor por default:
max-age=31536000;
Requerido
2
Cache-Control
X
N/A
S
Especifica directivas (instrucciones) para almacenar temporalmente
(caching) tanto en peticiones como en respuestas.
Valor por default:
no-store
Requerido
3
X-Frame-Options
X
N/A
S
puede ser usado para indicar si debería permitírsele a un navegador
renderizar una página en un <frame>, <iframe> o <object> Usarlo para evitar
ataques de clickjacking
Valor por default:
DENY
Requerido
4
X-Content-Type-Options
X
N/A
S
Es un marcador utilizado por el servidor para indicar que los tipos MIME
anunciados en los encabezados Content-Type no se deben cambiar.
Valor por default:
nosniff
Requerido
5
Content-Type
X
N/A
S
Es la propiedad usada para indicar el media type (en-US) del recurso.
Valor por default: application/json; charset=utf-8
Requerido
Campos del Body -Salida
1
status
N
3
S
Contiene el código de respuesta de la petición http:
Valores posibles:
200
Opcional
2
codigo
X
100
S
Identificador del código de error para la aplicación cliente.
{código-http}.{identificador-de-api}.{identificador-del-errorbackend}.
Valores posible:
1-Exitoso
Opcional
3
mensaje
X
500
S
Descripción para el desarrollador.
Opcional
4
folio
X
36
S
Identificador global único generado automáticamente para cada petición
recibida por el backend.
Opcional
5
resultado
Objeto
N/A
S
Objeto de respuesta en el cual se puede incluir cualquier particularidad de
atributos del backend.
Opcional
6
access_token
X
2000
S
El token de acceso que se generó y se utilizara para autenticar una
petición a un recurso protegido.
Opcional
7
expires_in
X
10
S
El valor de vencimiento del token. Ten en cuenta que en la respuesta,
expires_in se expresa en segundos.
Valor a configurar
1200 segunndos
Opcional
8
scope
X
50
S
Se usa para especificar qué permisos otorgar el token o el código
Valores posibles:
Mensajerias:update
Opcional
9
token_type
X
30
S
Tipo de token
Valores posibles:
Bearer
Opcional
Salida HTTP Status 40X o 50X
Campos del Header -Salida
1
Strict-Transport-Security
X
N/A
S
Es una característica de seguridad que permite indicar a los consumidores
que sólo se debe comunicar con HTTPS en lugar de usar HTTP
Valor por default:
max-age=31536000;
Requerido
2
Cache-Control
X
N/A
S
Especifica directivas (instrucciones) para almacenar temporalmente
(caching) tanto en peticiones como en respuestas.
Valor por default:
no-store
Requerido
3
X-Frame-Options
X
N/A
S
puede ser usado para indicar si debería permitírsele a un navegador
renderizar una página en un <frame>, <iframe> o <object> Usarlo para evitar
ataques de clickjacking
Valor por default:
DENY
Requerido
4
X-Content-Type-Options
X
N/A
S
Es un marcador utilizado por el servidor para indicar que los tipos MIME
anunciados en los encabezados Content-Type no se deben cambiar.
Valor por default:
nosniff
Requerido
5
Content-Type
X
N/A
S
Es la propiedad usada para indicar el media type (en-US) del recurso.
Valor por default: application/json; charset=utf-8
Requerido
Campos del Body -Salida
1
status
N
3
S
Contiene el código de respuesta de la petición http:
Valores posibles:
400
Opcional
3
codigoError
X
20
S
Identificador del código de error para la aplicación cliente.
{código-http}.{identificador-de-api}.{identificador-del-errorbackend}.
Valores posibles.
*Errores de esquema:*
*ERRESQ002*
*ERRESQ003*
*ERRESQ004*
*ERRESQ005*
*ERRESQ006*
*ERRESQ008*
*Errores de seguridad:*
*ERRSEG004*
*ERRSEG005*
*ERRSEG006*
*ERRSEG007*
*ERRSEG008*
*ERRSEG009*
*ERRSEG010*
*ERRSEG011*
*ERRSEG012*
*Errores X Apis inactivas:*
*ERROFF001*
Opcional
4
mensaje
X
500
S
Descripción para el desarrollador.
Opcional
5
folio
X
36
S
Identificador global único generado automáticamente para cada petición
recibida por el backend.
Opcional
6
detalles
Objeto
N/A
S
Objeto de respuesta en el cual se incluyen los mensajes de error.
Opcional
7
enlace
X
300
S
URL de la documentación asociada para solucionar el error.
Opcional
8
propiedad
X
300
S
Lista de errores generados en la petición.
Opcional
9
valorIncorrecto
X
50
S
Elemento que contiene el campo que está generando un error.
Opcional
La Api deberá realizar los siguientes pasos:
1. Se realiza la petición para Actualizar el estatus de la entrega.
2. Se realizan las siguientes validaciones con respecto al esquema del
mensaje.
1. Se deberá validar que en el body el contenido sea en formato
*application/x-www-form-urlencoded*, en caso contrario contestar lo
siguiente:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options *con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 400
2. El campo *codigoRespuesta *con el valor del 0
3. El campo *codigoError* con el valor *ERRESQ008*
4. El campo *mensaje*
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Datos de entrada incorrectos, por favor
revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
*Incorrect input data, please check the submitted content.*
5. El campo *folio *este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
6. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad *
i. Si el campo Accept-Language es igual es_MX o esta Vacio o nulo se
responderá *x-www-form-urlencoded Invalido.*
ii. Si el campo Accept-Language es igual en_US se
responderá *x-www-form-urlencoded
Invalid*.
1. Se deberá que no estén enviando campos vacíos o nulos en caso
contrario contestar lo siguiente:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type *con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 400
2. El campo *codigoRespuesta *con el valor del 0
3. El campo *codigoError* con el valor *ERRESQ002*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Datos de entrada vacio o nulo, por favor
revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
*Input data null or empty, please check the submitted content.*
5. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
6. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene un campo vacío o nulo.*
ii. Si el campo *Accept-Language* es igual *en_US* se responderá
*The request contains an empty or null
field.*
1. El campo *valorIncorrecto* con el campo que marco error.
1. Se deberá que no estén enviando campos que no estén definidos en el
boceto, en caso contrario contestar lo siguiente:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type *con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 400
2. El campo *codigoRespuesta *con el valor del 0
3. El campo *codigoError* con el valor *ERRESQ003*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Datos de entrada incorrectos, por favor revisa
no enviar campos adicionales.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
*Incorrect input data, please check not to send additional
fields.*
5. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
6. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene un campo que no está definido en
el servicio.*
ii. Si el campo *Accept-Language* es igual *en_US* se responderá
*The request contains a field that is not
defined in the service.*
1. El campo *valorIncorrecto* con el campo que marco error.
1. Si la longitud de un campo sobre pasa lo que esta definido en el
esquema se contestara los siguiente:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options *con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status *con el valor 400
2. El campo *codigoRespuesta *con el valor del 0
3. El campo *codigoError* con el valor *ERRESQ004*
4. El campo *mensaje*
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Datos de entrada incorrectos, por favor revisa
longitud de los campos.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
*Incorrect input data, please check length of fields.*
1. El campo *folio *este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad*
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene la longitud de un campo
incorrecta.*
ii. Si el campo *Accept-Language* es igual *en_US* se responderá
*The request contains the wrong field
length.*
1. El campo *valorIncorrecto* con el campo que marco error.
1. Si en un campo envían un tipo de dato incorrecto:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type * con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 400
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERRESQ005*
4. El campo *mensaje* con el valor *Tipo de dato
de entrada incorrectos, por favor revisa el contenido enviado.*
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Tipo de dato de entrada incorrectos, por favor
revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Wrong data type, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/24
2. El campo *propiedad *con el valor *El tipo de
dato de un campo es incorrecta.*
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene el tipo de dato incorrecto en
un campo.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request contains the wrong data type in a field.
1. El campo *valorIncorrecto* con el campo que marco error.
1. Se validan la cardinalidad de los campos.
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status * con el valor 400
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERRESQ006*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* El numero de ocurrencias es incorrecta, por
favor revisa el contenido enviado*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
The number of occurrences is incorrect , please check the submitted
content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/25
2. El campo *propiedad* con el valor *Faltan campos
de entrada Requeridos.*
3. El campo *valorIncorrecto* con el campo que marco error.
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición le faltan campos requeridos.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request is missing required fields.
1. Se realizan las validaciones de seguridad.
1. Se valida si el valor del Basic no es correcto o inexiste:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 403
2. 3
3. El campo *codigoRespuesta* con el valor del 0
4. El campo *codigoError* con el valor *ERRSEG008*
5. El campo *mensaje *con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La autenticación es incorrecta, por favor
revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Incorrect authentication , please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene una autenticación incorrecta.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
*The request contains an incorrect authentication.*
1. Se valida si usuario ya esta vencido:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 403
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERRSEG009*
4. El campo *mensaje *con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Usuario invalido, por favor revisa el
contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Invalid user, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene usuario invalido.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request contains an invalid user.
1. Se valida si scope enviado por el cliente es incorrecto:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 403
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERRSEG010*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Scope Incorrecto acceso denegado, por favor
revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Access denied incorrect scope, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene un scope invalido.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request contains an invalid scope.
1. Se valida si scope enviado por el cliente es diferente a los que
tiene permisos:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 403
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERRSEG011*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Acceso denegado , por favor revisa el
contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Access denied, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene un scope invalido.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request contains an invalid scope.
1. Se valida si el campo grant_type contiene un valor diferente a
client_credentials:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 403
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERRSEG012*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Tipo de *Autenticación incorrecta*, por favor
revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Incorrect authentication type, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene un tipo de autenticación
incorrecta.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request contains an incorrect authentication type.
1. Si envían un método diferente al *POST* se deberá contestar lo
siguiente:
Header
1. El campo *Strict-Transport-Security *con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 405
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError *con el valor *ERRSEG004*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Método no permitido, por favor revisa el
contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Method not allowed, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad *con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* El metodo no es permitido.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The method is not allowed.
1. Si el valor del campo *Accept* es diferente de application/json se
contestara lo siguiente*, nota si el campo Accept* *es vacío o no
está informado o contiene el valor * se considera por default el valor
application/json y no aplicara esta validación*:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status *con el valor 406
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError * con el valor *ERRSEG005*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Encabezado de aceptación no válido, por favor
revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Invalid accept header, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición tiene un valor incorrecto en el
encabezado de aceptación.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request has an incorrect value in the accept header.
1. Cuando las peticiones sobre pasen un cierto número de invocaciones
por usuario, se contestara lo siguiente:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type *con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor *429*
2. El campo *codigoRespuesta* con el valor del *0*
3. El campo *codigoError* con el valor *ERRSEG006*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Limite de peticiones excedido.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Limit of requests exceeded.
3.
5. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
6. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad* con el valor
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Has solicitado este recurso con demasiada
frecuencia.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
You have requested this resource too often.
1. Se deberá de contestar lo siguiente cuando en los Header sobre pase
el límite permitido, se contestara lo siguiente:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status* con el valor 431
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERRSEG007*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Limite excedido en los campos del cabecero,
por favor revisa el contenido enviado.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Limit exceeded in header fields, please check the submitted content.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad *con el valor* Los campos del
encabezado de la petición son demasiado grandes.*
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* La petición contiene encabezados que superan el
limite permitido.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
The request contains headers that exceed the allowed limit.
1. Se realizan las validaciones para validar si la API está disponible:
1. Se deberá de tener la variable *Oauth002* y cuando esta variable
tenga el valor de *FALSE*, contestara lo siguiente:
Header
1. El campo *Strict-Transport-Security *con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el
valor *no-store*
3. El campo *X-Frame-Options *con el
valor *DENY*
4. El campo *X-Content-Type-Options* con el valor
*nosniff*
5. El campo *Content-Type* con el
valor *application/json; charset=utf-8*
Body
1. El campo *status * con el valor 503
2. El campo *codigoRespuesta* con el valor del 0
3. El campo *codigoError* con el valor *ERROFF001*
4. El campo *mensaje* con el valor
1. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Servicio no disponible, favor de intentar más
tarde.*
2. Si el campo *Accept-Language* es igual *en_US *se
responderá
Service not available, please try later.
1. El campo *folio* este campo se
genera de la siguiente manera, *08 + API +timestamp en milisegundos*
2. *detalles*
1. El campo *enlace* con el valor
https://developers.banorte.com/es/api/23
2. El campo *propiedad *con el valor* El servicio no
está disponible temporalmente.*
i. Si el campo *Accept-Language* es igual *es_MX* o esta Vacio o
nulo se responderá* Servicio no disponible, favor de intentar más tarde.*
ii. Si el campo *Accept-Language* es igual *en_US *se
responderá
Service not available, please try later.
1. Una vez realizada las validaciones se realizara la generación del
Access token:
Header
1. El campo *Strict-Transport-Security* con el valor
*max-age=31536000*
2. El campo *Cache-Control* con el valor
*no-store*
3. El campo *X-Frame-Options *con el valor *DENY*
4. El campo *X-Content-Type-Options* con el valor *nosniff*
5. El campo *Content-Type* con el valor
*application/json;
charset=utf-8*
Body
1. El campo *status* con el valor *200*
2. El campo *código* con el valor *1*
3. El campo *mensaje* con el valor *Proceso Correcto*
4. El campo *folio* con el valor *08 + API +timestamp
en milisegundos*
5. resultado
1. El campo *access*_*token* con el valor generado por el servidor
de autenticación
2. El campo *expires*_*in* con el valor de *1200*.
3. El campo *scope* con el valor *Mensajerias:update*
4. El campo *token_type* con el valor *Bearer*
1. Una vez generada la respuesta a los canales se ejecutara el servicio
MW229:
Campos del Header:
i.
Locale
1. Si el campo Accept-Language es esta Vacio o nulo se enviara por
default el valor de es_MX.
2. Si el campo Accept-Language contiene información se enviara
el valor informado.
ii.
codIdioma
Con el valor fijo UTF-8
iii.
Despliegue
1. Dispositivo Con el valor fijo Servidor
2. MarcaDispositivo Con el valor fijo APIGEE
iv. Acceso
1. IdUsuario Usuario que ejecuta la API
2. ClaveAcceso Se envía el valor de un UUID.
3. IdSesion Se envía el valor de un
UUID.
4. IdOperacion Este campo se genera de la
siguiente manera:
El valor *08 + API +timestamp en milisegundos+ IdServicio*
Se espera que llegue de la siguiente manera:
08API12123141312ALR23
1. TokenOperacion Se envía el valor de un UUID.
2. Sic Con el valor
fijo 0
v.
Consumidor
1. IpServer Ip que recibió la petición
2. IpCliente Ip que realizo la
invocación de la api.
3. TipoCanal Valor Fijo 08
4. IdAplicacion Valor Fijo API
vi.
DatosPeticion
1. IdServicio Valor Fijo ALR23
2. VersionServicio Valor Fijo 1.0
3. VersionEndpoint Valor Fijo 1.0
4. CodEmpresa Valor Fijo 1
5. CodCR Valor Fijo 0
vii.
DatosVariables
1. Propiedad
1. Nombre Valor Fijo ID_FLUJO
2. Valor Valor Fijo 08APIActLog001
2. Propiedad
1. Nombre
2. Valor
NOTA: Se debe de validar que datos se tiene en APIGEE que puedan ser útiles
y enviarlos en los datos de la propiedad.
Campos del Body:
1. Tran_NombreMetodo con el valor fijo *Oauth2*
2. Tran_IdServicio con el valor fijo *ACTLOG*
3. CamposResgistrarReq/Campo/Tran_NombreCampo con el valor fijo
*Tran_Alcance*
4. CamposResgistrarReq/Campo/Tran_NombreValor se asgina el valor del
campo *scope*
5. CamposResgistrarReq/Campo/Tran_NombreCampo con el valor fijo
*Tran_TipoAutentifacion*
6. CamposResgistrarReq/Campo/Tran_NombreValor se asgina el valor del
campo *grant_type*
1. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo
*Tran_CodigoHttp*
2. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *status*
3. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo Tran_
*CodigoRespuesta*
4. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *codigoRespuesta*
5. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo
*Tran_**CodigoError*
6. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *codigoError*
7. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo
*Tran_Mensaje*
8. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *mensaje*
9. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo
*Tran_Folio*
10. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *folio*
11. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo
*Tran_**Enlace*
12. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *enlace*
13. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo
*Tran_**Propiedad*
14. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *propiedad*
15. CamposResgistrarResp/Campo/Tran_NombreCampo con el valor fijo
*Tran_**ValorIncorrecto*
16. CamposResgistrarResp/Campo/Tran_NombreValor se asgina el valor del
campo *valorIncorrecto*
NOTA:ANTES DE CREAR UN ELEMENTO DE LAS LISTAS ANTERIORES ES IMPORTANTE QUE
SE VALIDEN QUE SE TENGA UN VALOR EN LOS CAMPOS PARA EVITAR CREAR ELEMENTOS
VACIOS, POR EJEMPLO SI NO SE TIENE UN VALOR EN EL CAMPO *codigoError
NO *DEBERIA
CREAR EL ELEMENTO *Tran_CodigoError.*
De antemano gracias.
Saludos…
[image: pleca_20firmas_04]
*Jesús Alejandro Rosales Trujillo*
*Especialista de Aplicaciones (Servicios Multicanal)*
Dirección General Adjunta de Tecnología
*jesus.rosales.trujillo@banorte.com
(8183196500 Ext. 8800 1263