Catálogo de productos
Empuja y mantén tu catálogo por SKU desde tu propio sistema (ERP, PIM, tienda).
Endpoints
| Endpoint | Qué hace |
|---|---|
GET /v1/products | Lista 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/products | Upsert 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 }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.