Para facilitar la interconexión entre sistemas de forma automática, es posible utilizar los servicios web que usan el estándar REST.
URLs de acceso
La URL que debemos utilizar está compuesta por la URL host + Ruta del servicio
Ejemplo:
URL Host:
•https://apps.eglobalprojects.com/Titano/APIQA/
Ruta del Servicio:
•/Auth/AuthTokens/TokenCreate
URL Final:
•https://apps.eglobalprojects.com/Titano/APIQA/Auth/AuthTokens/TokenCreate
La URL Host cambia si deseamos usar el ambiente productivo o el de pruebas (QA)
Para ambiente PROD
•https://apps.eglobalprojects.com/Titano/APIQA/
Para ambiente QA
•https://apps.eglobalprojects.com/Titano/API/
Llamados (Request) con estructura JSON
•Los servicio REST pueden hacer llamados GET o POST
•Los cuerpos a los llamados de los servicios POST deben estar estructurados mediante JSON
Obtener TOKEN de seguridad
El uso de los servicios requiere autenticación mediante un encabezado BEARER con un TOKEN, por lo que el primer paso es generar un token, el cual tiene un tiempo de vida medio, por lo que un mismo token puede ser utilizado durante toda su vida en múltiples llamadas a los servicios y no es necesario crear un nuevo token para cada llamada en tanto el tiempo de vida del token no haya vencido.
El servicio TokenCreate es el único que no requiere enviar la autenticación bearer ya que este servicio es el responsable de crear el primer token.
Ejemplo para crear el Token:
Servicio: Auth/AuthTokens/TokenCreate
Ruta del Servicio: *url_host*/Auth/AuthTokens/TokenCreate
Metodo: POST
URL: https://apps.eglobalprojects.com/Titano/APIQA/Auth/AuthTokens/TokenCreate
Body:
{
"TokenType": "UserAPI",
"MasterPIN": "",
"User": "APIKey",
"Password": "*valor de la api key*",
"EntityId": "*valor de Entity Id*",
"CompanyId": "*valor de Company Id*"
}
Los valores de "TokenType": "UserAPI" y "User": "APIKey" son valores fijos para solicitar un Token para uso de los webservices.
Los valores de Password, EntityId, CompanyId podrán ser consultados en TitanoERP en el módulo de seguridad de grupos para cada una de las empresas.
El servicio responderá en caso de error :
{
"error": {
"code": "Exception",
"message": "XML del CFDI mal formado"
}
}
El servicio responderá en caso correcto:
{
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTc2ODk5NjQsIlRva2VuVHlwZSI6IlNFUlZFUiIsIlVzZXIiOiIiLCJVc2VySWQiOiIiLCJVc2VyRW1haWwiOiIiLCJVc2VyTmFtZSI6IiIsIlVzZXJMYW5ndWFnZSI6IiIsIlVzZXJBZG1pbiI6ZmFsc2UsIlVzZXJTdXBlclVzZXIiOmZhbHNlLCJFbnRpdHlJZCI6IiIsIkVudGl0eURhdGFiYXNlIjoiIiwiQ29tcGFueUlkIjoiIiwiQ29tcGFueU5hbWUiOiIiLCJCdXNpbmVzc1VuaXRJZCI6IiIsIlRlc3QiOmZhbHNlLCJBUElTZXJ2aWNlRW1haWwiOnRydWUsIkFQSVNlcnZpY2VGaWxlIjp0cnVlLCJBUElTZXJ2aWNlVGVzdC5EQkNvbm5lY3Rpb24iOnRydWUsIkFQSVNlcnZpY2VMb2dpbiI6dHJ1ZSwiQVBJU2VydmljZURlYnVnIjp0cnVlLCJBUElTZXJ2aWNlU2VjdXJpdHkiOnRydWUsIkFQSVNlcnZpY2VDZmRpLkJvdmVkYSI6dHJ1ZSwiQVBJU2VydmljZVBTIjp0cnVlfQ.gOnYc1EWBPtbEn7YcJaP9O8jYr0tSDa28CnHKZQfnvg"
}
Usando el TOKEN en todos los servicios
Para consumir cualquier servicio será necesario agregar el valor "Bearer " + TOKEN en los parámetros/Authentication de los encabezados de la solicitud
name= authorization
Value = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTc2ODk5NjQsIlRva2VuVHlwZSI6IlNFUlZFUiIsIlVzZXIiOiIiLCJVc2VySWQiOiIiLCJVc2VyRW1haWwiOiIiLCJVc2VyTmFtZSI6IiIsIlVzZXJMYW5ndWFnZSI6IiIsIlVzZXJBZG1pbiI6ZmFsc2UsIlVzZXJTdXBlclVzZXIiOmZhbHNlLCJFbnRpdHlJZCI6IiIsIkVudGl0eURhdGFiYXNlIjoiIiwiQ29tcGFueUlkIjoiIiwiQ29tcGFueU5hbWUiOiIiLCJCdXNpbmVzc1VuaXRJZCI6IiIsIlRlc3QiOmZhbHNlLCJBUElTZXJ2aWNlRW1haWwiOnRydWUsIkFQSVNlcnZpY2VGaWxlIjp0cnVlLCJBUElTZXJ2aWNlVGVzdC5EQkNvbm5lY3Rpb24iOnRydWUsIkFQSVNlcnZpY2VMb2dpbiI6dHJ1ZSwiQVBJU2VydmljZURlYnVnIjp0cnVlLCJBUElTZXJ2aWNlU2VjdXJpdHkiOnRydWUsIkFQSVNlcnZpY2VDZmRpLkJvdmVkYSI6dHJ1ZSwiQVBJU2VydmljZVBTIjp0cnVlfQ.gOnYc1EWBPtbEn7YcJaP9O8jYr0tSDa28CnHKZQfnvg"
Style: HEADER
Level: METHOD
Ejemplo, consumiendo el primer servicio
Podemos verificar que estamos listos para consumir los servicios enviando una consulta para verificar el token y verificar que el token de seguridad funciona de forma correcta en la configuración de nuestro cliente que consume los servicios del web service.
Servicio: Auth/AuthTokens/TokenCheck
Ruta del Servicio: *url_host*/Auth/AuthTokens/TokenCheck
Metodo: GET
URL: https://apps.eglobalprojects.com/Titano/APIQA/Auth/AuthTokens/TokenCheck
name= authorization
Value = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTc2ODk5NjQsIlRva2VuVHlwZSI6IlNFUlZFUiIsIlVzZXIiOiIiLCJVc2VySWQiOiIiLCJVc2VyRW1haWwiOiIiLCJVc2VyTmFtZSI6IiIsIlVzZXJMYW5ndWFnZSI6IiIsIlVzZXJBZG1pbiI6ZmFsc2UsIlVzZXJTdXBlclVzZXIiOmZhbHNlLCJFbnRpdHlJZCI6IiIsIkVudGl0eURhdGFiYXNlIjoiIiwiQ29tcGFueUlkIjoiIiwiQ29tcGFueU5hbWUiOiIiLCJCdXNpbmVzc1VuaXRJZCI6IiIsIlRlc3QiOmZhbHNlLCJBUElTZXJ2aWNlRW1haWwiOnRydWUsIkFQSVNlcnZpY2VGaWxlIjp0cnVlLCJBUElTZXJ2aWNlVGVzdC5EQkNvbm5lY3Rpb24iOnRydWUsIkFQSVNlcnZpY2VMb2dpbiI6dHJ1ZSwiQVBJU2VydmljZURlYnVnIjp0cnVlLCJBUElTZXJ2aWNlU2VjdXJpdHkiOnRydWUsIkFQSVNlcnZpY2VDZmRpLkJvdmVkYSI6dHJ1ZSwiQVBJU2VydmljZVBTIjp0cnVlfQ.gOnYc1EWBPtbEn7YcJaP9O8jYr0tSDa28CnHKZQfnvg"
Style: HEADER
Level: METHOD
El servicio responderá en caso de error :
{
"error": {
"code": "Unauthorized",
"message": "Auth Bearer Token (JWT)"
}
}
El servicio responderá en caso correcto:
{
"value": "OK Bearer Token (JWT) eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTc2ODk5NjQsIlRva2VuVHlwZSI6IlNFUlZFUiIsIlVzZXIiOiIiLCJVc2VySWQiOiIiLCJVc2VyRW1haWwiOiIiLCJVc2VyTmFtZSI6IiIsIlVzZXJMYW5ndWFnZSI6IiIsIlVzZXJBZG1pbiI6ZmFsc2UsIlVzZXJTdXBlclVzZXIiOmZhbHNlLCJFbnRpdHlJZCI6IiIsIkVudGl0eURhdGFiYXNlIjoiIiwiQ29tcGFueUlkIjoiIiwiQ29tcGFueU5hbWUiOiIiLCJCdXNpbmVzc1VuaXRJZCI6IiIsIlRlc3QiOmZhbHNlLCJBUElTZXJ2aWNlRW1haWwiOnRydWUsIkFQSVNlcnZpY2VGaWxlIjp0cnVlLCJBUElTZXJ2aWNlVGVzdC5EQkNvbm5lY3Rpb24iOnRydWUsIkFQSVNlcnZpY2VMb2dpbiI6dHJ1ZSwiQVBJU2VydmljZURlYnVnIjp0cnVlLCJBUElTZXJ2aWNlU2VjdXJpdHkiOnRydWUsIkFQSVNlcnZpY2VDZmRpLkJvdmVkYSI6dHJ1ZSwiQVBJU2VydmljZVBTIjp0cnVlfQ.gOnYc1EWBPtbEn7YcJaP9O8jYr0tSDa28CnHKZQfnvg"
}
El servicio responderá en caso correcto si el Token expiró:
Token expired
The JWT is no longer valid
|