infopiezas.net enviará los eventos a un endpoint que ustedes indiquen para recibir notificaciones. Estas notificaciones serán una llamada POST de HTTP cada uno con la data correspondiente.
Cada mensaje, traerá la siguiente información en el header:
| Variable | Descripción |
|---|---|
| X-Infopiezas-Hmac-Sha256 | Esta variable contiene un hash del mensaje creado con una llave para que pueda validar que el mensaje vino de infopiezas.net. |
| X-Infopiezas-Topic | Indica el tipo de mensaje que se está enviando |
Este es un ejemplo de código en C# que hace el cálculo del Hmac. Esta función recibe como entrada la llave que utiliza el sistema (le será proporcionada por infopiezas) y el contenido completo cuerpo del mensaje recibido. El resultado de la llamada a esta función debe dar igual al contenido de la variable del header X-Infopiezas-Hmac-Sha256.
xxxxxxxxxxpublic static string CalculateHMacDigest(string sharedKey, string contents){ System.Text.ASCIIEncoding encoding = new ASCIIEncoding(); byte[] keyBytes = encoding.GetBytes(sharedKey); byte[] messageBytes = encoding.GetBytes(contents); System.Security.Cryptography.HMACSHA256 cryptographer = new System.Security.Cryptography.HMACSHA256(keyBytes);
byte[] bytes = cryptographer.ComputeHash(messageBytes);
string digest = BitConverter.ToString(bytes).Replace("-", ""); return digest.ToUpper();}
A continuación un listado de los eventos disponibles.
| Evento | Descripción |
|---|---|
| Notificación de cierre de licitación | Se envía al momento que cierra el proceso de licitación. |
| Notificación de cambio de estatus de orden de servicio | Se envía al momento de recepción del vehículo en el taller y al momento de la entrega del vehículo al cliente. |
Esta notificación se envía al momento que cierra el proceso de licitación. En el cuerpo de la notificacion se envía un objeto con información de la licitación.
El sistema hará una llamada a una URL especificada por ustedes con los datos correspondientes. Para esta notificación, la variable del header X-Infopiezas-Topic llega con el valor requestsForQuotes/tracking.
El campo RequestStatusId tendrá el valor de 2 que corresponde a Pendiente de orden de compra el cual indica que el proceso de licitación ha cerrado
A continuacion un detalle de la estructura del objeto recibido en el body del mensaje.
public class RequestStatusChangedEvent { /// <summary> /// Número de licitación /// </summary> public int RequestId { get; set; }
/// <summary> /// Id unico de la notificación /// </summary> public Guid NotificationEventId { get; set; }
/// <summary> /// Fecha y hora de creación (UTC) /// </summary> public DateTime EventCreatedOnUtc { get; set; }
/// <summary> /// Id estatus de la licitación /// </summary> public int RequestStatusId { get; set; }
/// <summary> /// Estatus de la licitación (descripción) /// </summary> public string RequestStatusDisplayName { get; set; }
public RequestStatusChangedEvent() { this.NotificationEventId = Guid.NewGuid(); } }
A continuación un ejemplo de un mensaje de notificación.
xxxxxxxxxx{ "requestId": 129719, "notificationEventId": "5f45b5e1-50f7-4215-9c81-f7ae8e66637d", "eventCreatedOnUtc": "2021-10-12T22:03:35.307929Z", "requestStatusId": 1, "requestStatusDisplayName": "Licitación abierta"}Se puede obtener toda la informacion de la licitación haciendo una llamada al endpoint GET /RequestsForQuotes/{requestId} con el RequestId suministrado en la notificación.
Esta notificacion se envía en diferentes etapas del proceso:
Cuando se recibe el vehículo en el taller, indicando fecha de recepción y fecha estimada de entrega.
Cuando se entrega el vehículo al cliente, indicando la fecha de entrega.
El sistema hará una llamada a una URL especificada por ustedes con los datos correspondientes. Para esta notificación, en el header, en la variable X-Infopiezas-Topic llega con el valor serviceOrders/tracking.
A continuación, un detalle de la estructura del objeto recibido:
xxxxxxxxxx public class ServiceOrderTrackingEvent { /// <summary> /// Numero de orden de servicio /// </summary> public int ServiceOrderId { get; set; }
/// <summary> /// Id del taller asignado a la orden de servicio /// </summary> public int WorkshopPersonId { get; set; }
/// <summary> /// RNC del taller asignado a la orden de servicio /// </summary> public string WorkshopPersonTaxId { get; set; }
/// <summary> /// Nombre del taller asignado a la orden de servicio /// </summary> public string WorkshopPersonName { get; set; }
/// <summary> /// Número de reclamo /// </summary> public string InsuranceClaimNumber { get; set; }
/// <summary> /// Número de licitación /// </summary> public int? RequestId { get; set; }
/// <summary> /// Fecha y hora de creación (UTC) del evento de notificación /// </summary> public DateTime CreatedOnUtc { get; set; }
/// <summary> /// Eventos de notificación asociados /// </summary> public List<ServiceOrderEvent> NotificationEvents { get; set; }
/// <summary> /// Evento de notificación /// </summary> public class ServiceOrderEvent { /// <summary> /// Tipo de evento /// </summary> public int EventTrackingTypeId { get; set; }
/// <summary> /// Fecha/hora del evento /// </summary> public DateTime EventTrackingDateTime { get; set; }
} }
El campo EventTrackingTypeId puede tener uno de estos valores:
| Id | Descripción |
|---|---|
| 1 | Recepción de vehículo |
| 2 | Fecha estimada de entrega |
| 3 | Entrega vehículo |
Un ejemplo de una notificación cuando se recibe el vehículo. En este caso, notificationEvents trae dos elementos, ya que la fecha de recepción del vehículo y la fecha estimada de entrega se indican al mismo tiempo en infopiezas.net. En caso de que fuera una notificación de fecha de entrega del vehículo (eventTrackingTypeId: 3) esta propiedad solo tendría un registro.
xxxxxxxxxx{ "serviceOrderId" : 1028, "workshopPersonId" : 2299, "workshopPersonTaxId" : "101637781", "workshopPersonName" : "Auto Gil Pintura, SRL", "insuranceClaimNumber" : null, "requestId" : 128606, "createdOnUtc" : "2018-05-17T23:02:13.2291977Z", "notificationEvents" : [{ "eventTrackingTypeId" : 1, "eventTrackingDateTime" : "2018-05-17T00:00:00" }, { "eventTrackingTypeId" : 2, "eventTrackingDateTime" : "2018-05-18T00:00:00" } ]}