6.3 KiB
Objenious
Interaccion y particularidades de la API de objenious, el swagger con la documentacion de Objenious se encuentra en https://api-getway.objenious.com/ws/swagger-ui/index.html Entrar solo desde Edge, no funciona con chrome
Procesos testados
1. Auth
Para todas las peticiones hace la api de Objenoius hace falta añadir un token JWT en la cabecera de Authentication estilo "Bearer". Para ello nos proporcionan el propio token de autenticacion, que expira en 5 min, y un token de refresco que dura 30min, pero a dia de hoy se puede pedir otro token en vez de refrescar el original. Para ambas peticiones se usa la misma direccion pero con distinto body:
Para ambas peticiones sera necesiario enviar un token JWT firmado por nosotros con nuestra clave privada para añadirlo al campo. El algoritmo de firma es RS256 que en node:crypto aparece como sha256 (solo nos interesa la parte de firmar)
La estructura del JWT firmado es:
- Header:
- alg: algoritmo de firma (RS256)
- typ: tipo de token (JWT)
- kid: id de nuestra clave (valor fijo, hay que pedirla, aparece en el .env)
- Body:
- sub: quien lo manda ("savefamily_rest_ws")
- iss: quien lo firma ("savefamily_rest_ws")
- aud: destino ("https://idp.docapost.io/auth/realms/GETWAY")
- jti: timestamp de creacion
- iat: timestamp en segundos
- exp: timestamp de expiracion en segundos (+5min) (De momento no lo usamos)
- Firma: Header.Body en
base64url
El body se envia como application/x-www-form-urlencoded, con el token en el campo client_assertion no como Bearer
POST https://idp.docapost.io/auth/realms/GETWAY/protocol/openid-connect/token
Para obtener un nuevo token:
grant_type=client_credentials&
client_id=savefamily_rest_ws&
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&
client_assertion=[JWT firmado]
Para refrescar el token:
grant_type=refresh_token&
client_id=savefamily_rest_ws&
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&
client_assertion=[JWT firmado]&
refresh_token=[JWT de refresco]
2. Listar Lineas
Los parametros de la query se pasan como parametros de URL, el token de auth como Bearer en el header Authorization
Para una busqueda por ICCID se hace añadiendo los campos:
identifier.identifierType:ICCID
identifier.identifiers:[lista de ICCID]
3. Estado de una peticion
Las petciones (preactivacion, activacion, cancelacion etc.) tienen 2 partes
La primera indica el estado de la generacion de la peticion de massAction para aplicar cambios sobre una serie de lienas.
GET https://api-getway.objenious.com/ws/actions/requests/{{requestid}}>
Esta peticion deberia tener un campo actionRequestReports con el resultado de las acciones y el iccid de las lineas afectadas, de momento vuelve vacio.
Mientras está en proceso no vamos a tener un id de massAction para comprobar y la respuesta será tal que:
{
"created": "2026-02-03T07:37:47.922+00:00",
"status": "RUNNING",
"statusDate": "2026-02-03T07:37:50.153+00:00",
"actionType": "PREACTIVAION",
"actionRequestReports": [],
"massActionIds": []
}
Cuando el mass action se haya creado aparecera la id:
{
"created": "2026-02-03T07:37:47.922+00:00",
"status": "CLOSED",
"statusDate": "2026-02-03T07:38:04.131+00:00",
"actionType": "PREACTIVAION",
"actionRequestReports": [],
"massActionIds": [
5187118
]
}
Importante destacar que el CLOSED de la segunda respuesta no indica que las tarjetas se hayan preactivado, sino que se ha hecho la solicitud.
La segunda es la informacion del massAction que si indica cuando las tarjetas están cambaindo de estado.
GET https://api-getway.objenious.com/ws/actions/massActions/{{massid}}
Esta peticion si que devuelve el estado real de la petición, el campo ended y status son los que realmente indican si se ha completado la accion y okActionNumber si la petición ha tenido exito.
Falta por comprobar si al fallar alguna peticion devuelve informacion de cuál ha fallado y no el numero.
Mientras se hace la peticion aparece asi:
{
"id": 5187320,
"loginCreator": "savefamily_rest_ws",
"loginCanceller": null,
"actionType": "Pré-activation et Activation",
"dueDate": "2026-02-03T09:08:26.000+00:00",
"targetActionNumber": 1,
"created": "2026-02-03T09:03:26.000+00:00",
"started": "2026-02-03T09:03:26.000+00:00",
"ended": null,
"status": "En cours",
"info": "Offre : MONTHLY OFFER, \n Code pré-activation : -, \n CF : 9.49411.10",
"pendingEntitiesNumber": 1,
"failedEntitiesNumber": 0,
"completedEntitiesNumber": 0,
"okActionsNumber": 0,
"koActionsNumber": 0,
"cancelledActionsNumber": 0,
"sentActionsNumber": 0,
"waitingActionsNumber": 1,
"inprogressActionsNumber": 0
}
Después de cancelarla aparece asi, la petición se ha anulado pero no se da mas información:
{
"id": 5187320,
"loginCreator": "savefamily_rest_ws",
"loginCanceller": "alvarsanmartin@savefamilygps.com",
"actionType": "Pré-activation et Activation",
"dueDate": "2026-02-03T09:08:26.000+00:00",
"targetActionNumber": 1,
"created": "2026-02-03T09:03:26.000+00:00",
"started": "2026-02-03T09:03:26.000+00:00",
"ended": "2026-02-03T09:20:27.540+00:00",
"status": "Annulé",
"info": "Offre : MONTHLY OFFER, \n Code pré-activation : -, \n CF : 9.49411.10",
"pendingEntitiesNumber": 0,
"failedEntitiesNumber": 0,
"completedEntitiesNumber": 2,
"okActionsNumber": 1,
"koActionsNumber": 0,
"cancelledActionsNumber": 1,
"sentActionsNumber": 0,
"waitingActionsNumber": 0,
"inprogressActionsNumber": 0
}
Para tener una lista de todas las operaciones:
GET https://api-getway.objenious.com/ws/actions/massActions/
Devuelve una lista con opcion de paginacion (default 10), no se especifica ninguna informacion sobre el contenido de las peticiones.
{
"id": 5187320,
"loginCreator": "savefamily_rest_ws",
"loginCanceller": "alvarsanmartin@savefamilygps.com",
"actionType": "Pré-activation et Activation",
"dueDate": "2026-02-03T09:08:26.000+00:00",
"targetActionNumber": 1,
"created": "2026-02-03T09:03:26.000+00:00",
"started": "2026-02-03T09:03:26.000+00:00",
"ended": "2026-02-03T09:20:27.540+00:00",
"status": "Annulé",
"info": "Offre : MONTHLY OFFER, \n Code pré-activation : -, \n CF : 9.49411.10"
},