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