Sincronizar el catálogo

Alta y actualización de productos desde un ERP sin duplicados, y sincronización en ambos sentidos.

En esta página

El catálogo de Chainlink debe contener los mismos productos que el ERP: el almacén recibe, acomoda y surte por código de producto (item_code). Esta guía describe el alta y la actualización de productos sin duplicados.

Alcances: products:read y products:write.

1. Carga inicial

Para cientos o miles de productos, use la carga masiva (un archivo, una validación). Para pocos productos, cree cada uno con POST /products.

2. Alta o actualización de un producto

Busque el producto por su código y aplique la operación que corresponda:

  1. GET /products?item_code=P-1004. Si data está vacío, el producto no existe.
  2. Si no existe: POST /products con Idempotency-Key. Guarde el id de la respuesta.
  3. Si existe: PATCH /products/{id} solo con los campos que cambiaron.

Lotes y series

man_btch_num (lotes) y man_ser_num (series) determinan lo que el operador captura al recibir y surtir. Defínalos al crear el producto y evite cambiarlos mientras haya existencias en almacén.
Buscar por código
curl "https://empresa.chainlink.mx/api/v1/products?item_code=P-1004" \
  -H "Authorization: Bearer $CHAINLINK_TOKEN" \
  -H "Accept: application/json"
Crear
curl -X POST "https://empresa.chainlink.mx/api/v1/products" \
  -H "Authorization: Bearer $CHAINLINK_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"item_code": "P-1004", "name": "Frijol negro 900 g", "barcode": "7501234567904", "man_btch_num": true, "sales_unit": "PZA"}'
Actualizar
curl -X PATCH "https://empresa.chainlink.mx/api/v1/products/101" \
  -H "Authorization: Bearer $CHAINLINK_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name": "Aceite comestible 1 L (caja 12)"}'

3. Sincronización continua

  • Del ERP a Chainlink: cuando un producto cambie en el ERP, aplique el paso 2.
  • De Chainlink al ERP: si también se dan de alta productos en la web, suscríbase a product.created y product.updated, o consulte GET /products?updated_since=… periódicamente.

4. Bajas

DELETE /products/{id} da de baja el producto; su historial se conserva y su código no se puede reutilizar. Si el producto solo deja de venderse, conviene mantenerlo para conservar su trazabilidad.

Errores comunes

RespuestaCausa
422, error.field = "item_code"El código ya existe: busque el producto y actualícelo.
422, error.field = "name"Falta el nombre.
403 missing_scopeEl token no tiene products:write.