Principios generales
Métodos API
Esta sección describe los detalles de trabajar con los siguientes métodos de API de historial:
/api/v3/orders/packs/history
/api/v4/orders/packs/history
/api/v4/customers/history
/api/v4/orders/history
/api/v5/orders/packs/history
/api/v5/customers/history
/api/v5/orders/history
Nota
Tenga en cuenta que trabajar con el método
/api/v3/orders/history
se basa en principios diferentes.
Principios generales para trabajar con métodos de API de historial
Los métodos de la API del historial de cambios están diseñados para aplicar los cambios realizados en el sistema en el lado de otro sistema de información. Un ejemplo son los siguientes casos:
Aplicación de cambios a pedidos en el lateral de la tienda online para su visualización en la cuenta personal del cliente
Aplicar cambios a la preparación de pedidos en el lateral del sistema de almacén para la reserva automática de productos para pedidos.
Sincronización de la información del cliente con el sistema de fidelización
El algoritmo para trabajar con el historial de cambios es el siguiente (por ejemplo, /api/v4/orders/packs/history
):
-
Si llamamos al método de la API de historial por primera vez, llamamos al método sin parámetros adicionales. Si no lo llamamos en el primero, entonces agregamos el parámetro
sinceId
con la indicaciónid
guardado durante el último procesamiento. -
Leemos el historial de cambios y los aplicamos.
-
Mire el contenido del parámetro
pagination
en la respuesta, si el número de páginaspagination.totalPageCount
es mayor que 1 (por ejemplo, 5), luego llame secuencialmente al método con el parámetropage=N
, omitiendo los cambios restantes de 2 a 5 y aplicándolos. -
Guardamos el
id
del último registro del historial para usarlo en el posterior procesamiento del historial en el parámetrosinceId
.
Configuramos este algoritmo para que se ejecute periódicamente en 5-15 minutos.
Descripción de los campos del historial
Fuente de cambio
El campo source
almacena el código fuente del cambio. Valores posibles:
api
cambió mediante API
code
cambiado automáticamente por el sistema
user
modificado por el usuario
rule
cambio realizado como parte de un trigger
combine
cambio realizado al fusionar
split
cambio realizado en la división
Si el campo source
tiene un valor igual a user
, entonces el campo user
se muestra en el registro del historial.
Formato de campo user
:
"user": {
"id": 123, // ID de usuario interno
}
Información sobre la clave bajo la cual se realizó el cambio
El campo apiKey
almacena un objeto con información sobre la clave bajo la cual se realizó el cambio. Solo está presente para los cambios realizados por api
.
"apiKey": {
"current": true, // El cambio se realizó bajo la clave actual
}
Información de consolidación de pedidos
El campo combinedTo
contiene información sobre el orden en el que se fusionó el pedido actual. Solo está presente para /api/v4/orders/history
y para pedidos que se eliminan al fusionar pedidos.
"combinedTo": {
"id": 123,
"externalId": "ee-22-xx",
"site": "decathlon",
}
Información sobre cómo copiar y dividir pedidos
El campo ancestor
contiene información sobre el pedido a partir del cual se realizó la copia o división.
"ancestor": {
"id": 123,
"externalId": "ee-22-xx",
"site": "decathlon",
"managerId": 6,
"status": "availability-confirmed"
}
Valores antiguos y nuevos
Los valores de cambio antiguos y nuevos se encuentran en los campos oldValue
y newValue
respectivamente. Es posible que falte uno de los dos campos si falta el valor del campo que se está cambiando o si se eliminó cuando se cambió.
El formato de los valores de los campos oldValue
y newValue
depende del tipo de campo field
para el que se registra el cambio en el historial. A continuación se muestran los posibles tipos de campos y el formato de los valores en el historial para ellos.
Línea
Ejemplos de campos de cadena: calle street
, teléfono phone
, comentario de estado statusComment
.
{
...
"field": "statusComment",
"newValue": "Los productos llegan mañana",
...
}
Número
Esto incluye campos que almacenan tanto enteros como de coma flotante. Ejemplos de campos: precio del producto price
, descuento del pedido discount
, cantidad del producto quantity
.
{
...
"field": "discount",
"oldValue": 25,
"newValue": 26,
...
}
Booleano
Esto incluye campos que almacenan los valores true
/ false
. Ejemplos de campos: envío del embalaje del producto shipped
, envío del pedido shipped
, pedido vencido expired
.
{
...
"field": "expired",
"oldValue": false,
"newValue": true,
...
}
Fecha y hora
Ejemplos de tales campos son la fecha de entrega deliveryDate
, la fecha de envío shipmentDate
.
{
...
"field": "deliveryDate",
"newValue": "2015-03-25 12:15:00", // en formato yyyy-MM-dd HH:MM:SS
...
}
Objeto de referencia
Esto incluye objetos de los siguientes directorios:
"Estado del pedido" status
"Tipo de pedido" orderType
"Método de pedido" orderMethod
"Tipo de publicación" deliveryType
"Servicio de entrega" deliveryService
"Tipo de pago" paymentType
'Estado de pago' paymentStatus
"Tienda" site
'Segmento de clientes' segments
'Estado del artículo' status
'Almacén' store
Para los campos del tipo de objeto de directorio en oldValue
/ newValue
, se devuelve una estructura, dentro de la cual se transfiere el código simbólico del objeto code
.
{
...
"field": "status",
"oldValue": {
"code": "new"
},
"newValue": {
"code": "completed"
},
...
}
Para la búsqueda de 'Estado del artículo', el parámetro cancel: true
se puede indicar adicionalmente, si se estableció el estado de cancelación:
{
...
"field": "status",
"oldValue": {
"code": "new"
},
"newValue": {
"code": "out-of-stock",
"cancel": true
},
...
}