bruxel.aiDevelopers

Catálogo de productos

Empuja y mantén tu catálogo por SKU desde tu propio sistema (ERP, PIM, tienda).

Endpoints

EndpointQué hace
GET /v1/productsLista paginada (limit ≤ 200, offset, q de búsqueda, status). Scope catalog:read.
GET /v1/products/{id}Detalle de un producto, incluido su source_data. Scope catalog:read.
POST /v1/productsUpsert masivo por SKU, hasta 500 por request. Scope catalog:write.
PATCH /v1/products/{id}Edición parcial de sku, name, brand o category. Scope catalog:write.
DELETE /v1/products/{id}Borrado suave (204). Conserva el historial; se oculta de listas y export. Scope catalog:write.

Upsert masivo por SKU

El POST es idempotente por (organización, SKU): re-enviar el mismo lote deja el catálogo igual, y un SKU previamente borrado se revive. La respuesta desglosa cuántos se crearon, actualizaron u omitieron.

POST /v1/products
{
  "products": [
    {
      "sku": "CAMISA-001",
      "name": "Camisa de lino",
      "brand": "Acme",
      "category": "Ropa/Camisas",
      "source_data": { "color": "azul", "talla": "M" }
    }
  ]
}

{ "total": 1, "created": 1, "updated": 0, "skipped": 0 }
Un re-upsert REEMPLAZA el producto entero por SKU (incluido su source_data). Manda siempre el producto completo, no solo los campos que cambiaron — para ediciones puntuales usa PATCH.

source_data

source_data es tuyo: un objeto JSON libre con los atributos extra de tu producto (color, talla, material, especificaciones…). El motor de generación lo usa como contexto para escribir mejores descripciones — entre más rico, mejor el resultado.

Editar y borrar

PATCH edita campos sueltos sin tocar el resto. El status del producto NO se edita por API (lo maneja el ciclo de generación). Si el SKU nuevo ya existe en otro producto, responde 409.

DELETE es un borrado suave: el producto desaparece de listas y del export pero su historial se conserva, y un upsert posterior con el mismo SKU lo revive. Repetir el DELETE responde 404.

Catálogo de productos — Bruxel