Descripción general
Las tiendas que usan una plataforma con una integración ya preparada no necesitan la API: Merchandiser escribe por ellas el orden de los productos en la plataforma. La API es para todo lo demás.
- API de colecciones
- Acceso de lectura a tus colecciones y a los productos ordenados de cada una. Para plataformas a medida y tiendas headless. Sin token; las solicitudes se identifican con el UID de tu cuenta.
- API de métricas de producto
- Acceso de escritura a las métricas de ventas de tus productos. Para enviar las ventas online y en tienda física desde un ERP o un almacén de datos. Requiere un token.
Todas las direcciones siguientes empiezan por la URL base. El UID de tu cuenta y la dirección de cada colección, lista para copiar, se muestran en la página Integración API del panel.
URL base
https://api.merchandiser.com.tr/v1
API de colecciones
Listar las colecciones de un tipo
GET https://api.merchandiser.com.tr/v1/accounts/{account_uid}/collections/{type}
{type} es uno de estos valores: category, brand, list, page, widget u other. La respuesta lista las colecciones activas de ese tipo:
Ejemplo de respuesta (abreviado)
{
"type": "category",
"total_records": 2,
"collections": [
{
"id": 1042,
"name": "Women > Jackets",
"type": "category",
"code": "women-jackets",
"path": "/women-jackets",
"smart": false,
"sort_type": {"id": 7, "uid": "0b0c…", "name": "Merchandiser AI"},
"updated": 1760000000.0
}
]
}
code es el identificador que tu tienda usa para la colección. updated es el momento de la última ordenación como marca de tiempo Unix; compáralo con el último valor que viste para saber si hay que volver a obtener una colección.
Obtener los productos ordenados de una colección
GET https://api.merchandiser.com.tr/v1/accounts/{account_uid}/collections/{type}/{code}?page=1&size=50
También se puede acceder a una colección por su propio UID:
GET https://api.merchandiser.com.tr/v1/collections/{collection_uid}
- page
- La página que se devuelve, empezando por 1.
- size
- El número de productos por página. 50 si se omite.
- expand
- true devuelve cada producto con su nombre, marca, precios, valoración, dirección e imagen. Sin él, un producto es su SKU y su posición.
- ws_code
- true devuelve el código ERP de cada producto en el campo sku en lugar de su SKU.
- color, gender
- Devuelve solo los productos de esos colores o géneros. Ambos se pueden repetir.
- sort_by
- El UID de un tipo de ordenación. Devuelve la colección ordenada según ese tipo de ordenación en lugar de su orden guardado.
Ejemplo de respuesta
{
"collection": "Women > Jackets",
"code": "women-jackets",
"type": "category",
"id": 1042,
"page": 1,
"size": 50,
"total_pages": 3,
"total_records": 128,
"has_next": true,
"has_prev": false,
"products": [
{"sku": "AB-123", "position": 1},
{"sku": "AB-124", "position": 2}
]
}
Los productos se devuelven en su orden, pines incluidos. Solo se devuelven los productos que están en stock. Solicita la página siguiente mientras has_next sea true.
Con expand=true, cada producto incluye además estos campos: name, brand, sale_price, list_price, discount_rate, currency, rating, reviews, url e image_url.
Límites y errores
Las solicitudes tienen un límite de frecuencia por dirección IP. Cada respuesta incluye una cabecera X-Api-Call-Limit con el número de solicitudes que te quedan en la ventana actual. Indícanos las direcciones de tus servidores y las eximiremos del límite.
- 400
- Un parámetro no es válido; por ejemplo, un page o un size que no es un número.
- 404
- La cuenta o la colección no existe o no está activa.
- 429
- Demasiadas solicitudes. Inténtalo de nuevo más tarde.
API de métricas de producto
Esta solicitud actualiza de forma masiva las métricas de ventas de tus productos. Se autentica con un token de métricas de producto, que se emite para tu cuenta si lo solicitas.
POST https://api.merchandiser.com.tr/v1/products/metrics
Content-Type: application/json
Authorization: Bearer <YOUR-PRODUCT-METRICS-TOKEN>
El cuerpo es una lista de hasta 1.000 objetos. Cada objeto necesita un sku y al menos una métrica. Las métricas se pueden enviar como números o como cadenas numéricas y no deben ser negativas. Una métrica que no envías queda intacta. Los SKU que no existen en tu cuenta se notifican en la respuesta y nunca se crean.
- sku
- El SKU del producto que se actualiza. Obligatorio.
- daily_purchase, weekly_purchase, monthly_purchase
- Ventas online del último día, la última semana y el último mes.
- daily_offline_purchase, weekly_offline_purchase, monthly_offline_purchase
- Ventas offline (en tienda física) del último día, la última semana y el último mes.
- total_daily_purchase, total_weekly_purchase, total_monthly_purchase
- Ventas online y offline juntas.
Cómo se mantienen sincronizados los totales
- Enviar una métrica online la sobrescribe y recalcula el total de ese periodo como online más offline, con el valor offline ya almacenado (o 0 si no hay ninguno).
- Enviar una métrica offline funciona igual, con el valor online almacenado.
- Enviar un total sobrescribe ese total. Si envías un total junto con la métrica online u offline del mismo periodo, prevalece el total que enviaste.
Ejemplo de solicitud
[
{"sku": "AB-123", "daily_purchase": 4, "daily_offline_purchase": 6},
{"sku": "AB-124", "weekly_purchase": 18, "monthly_purchase": 63},
{"sku": "AB-125", "total_weekly_purchase": 42}
]
La misma solicitud con cURL
curl -X POST https://api.merchandiser.com.tr/v1/products/metrics \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR-PRODUCT-METRICS-TOKEN>" \
-d '[{"sku": "AB-123", "daily_purchase": 4, "daily_offline_purchase": 6}]'
Ejemplo de respuesta
{
"status": 200,
"elapsed": 0.14,
"message": "Given product metrics processed successfully",
"errors": ["1 SKU(s) were not found for this account: AB-999"],
"data": {
"received": 4,
"updated": 3,
"skipped": 1,
"unknown_skus": ["AB-999"]
}
}
- data.received
- El número de elementos de la solicitud.
- data.updated
- El número de productos cuyas métricas se actualizaron.
- data.skipped
- El número de elementos que no se aplicaron: elementos no válidos y SKU desconocidos.
- data.unknown_skus
- Los SKU que no existen en tu cuenta (los 50 primeros).
- errors
- El motivo de cada elemento omitido o parcialmente no válido. Una respuesta con errores sigue siendo un 200: los elementos válidos se aplican.
Errores
- 400
- Falta el token o el cuerpo no es una lista de objetos.
- 403
- La cuenta está suspendida.
- 404
- El token no es válido.
- 413
- Se enviaron más de 1.000 elementos en una sola solicitud.
- 415
- La cabecera Content-Type no es application/json.
Para qué se usan las ventas
Las métricas que envías se convierten en señales de ranking. Una regla puede clasificar solo por las ventas online o por los totales, de modo que los productos que se venden bien en tus tiendas físicas también puedan subir en tu sitio web. Merchandiser AI aprende de los totales cuando están disponibles.