Productos
Los endpoints de productos permiten listar el catálogo de la tienda y obtener el detalle completo de un producto por su slug.
Listar productos
GET /api/v1/products
Retorna una lista paginada de productos activos de la tienda.
Parámetros de consulta
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
page | number | No | Número de página (default: 1) |
limit | number | No | Resultados por página (default: 20) |
search | string | No | Búsqueda por nombre o SKU |
categoryId | UUID | No | Filtra productos por categoría |
sort | string | No | Campo de ordenamiento (default: -updatedAt). Prefija con - para orden descendente |
Ejemplo
GET /api/v1/products?page=1&limit=10&sort=-createdAt
x-api-token: sk_live_abc123
Respuesta 200 OK
{
"products": [ /* array de objetos Product */ ],
"total": 42,
"page": 1,
"limit": 10
}
Obtener producto por slug
GET /api/v1/products/:slug
Retorna el detalle completo de un producto, incluyendo variantes, precios, inventario, imágenes y opciones de configuración.
Parámetros de ruta
| Parámetro | Tipo | Descripción |
|---|---|---|
slug | string | Slug único del producto |
Ejemplo
GET /api/v1/products/polera-negra-basica
x-api-token: sk_live_abc123
Respuesta 200 OK
{
"id": "uuid",
"name": "Polera Negra Básica",
"slug": "polera-negra-basica",
"description": "Polera 100% algodón",
"body": "<p>Descripción larga en HTML</p>",
"options": { "Talla": ["S", "M", "L"], "Color": ["Negro"] },
"metadata": null,
"coverImageId": "uuid",
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-06-01T00:00:00.000Z",
"categories": [
{ "id": "uuid", "name": "Ropa", "slug": "ropa" }
],
"variants": [
{
"id": "uuid",
"sku": "POL-NEG-M",
"name": "Negro / M",
"options": { "Talla": "M", "Color": "Negro" },
"metadata": null,
"coverImageId": null,
"pricing": [
{
"saleChannelId": "uuid",
"saleChannelName": "Tienda Online",
"price": "9990.00",
"compareAtPrice": "12990.00"
}
],
"inventory": [
{
"locationId": "uuid",
"locationName": "Bodega Central",
"quantity": 50,
"reserved": 3,
"available": 47
}
]
}
],
"images": [
{
"id": "uuid",
"fileId": "uuid",
"productId": "uuid",
"status": "ready",
"orderIndex": 0,
"alt": null,
"bytes": 204800,
"width": 1200,
"height": 1200,
"contentType": "image/webp",
"storageThumbPath": "stores/.../processed/thumb.webp",
"storageCardPath": "stores/.../processed/card.webp",
"storageZoomPath": "stores/.../processed/zoom.webp",
"storageHeroPath": "stores/.../processed/hero.webp",
"createdAt": "2025-01-01T00:00:00.000Z"
}
],
"configOptions": [
{
"id": "uuid",
"name": "Grabado personalizado",
"type": "TEXT",
"required": false,
"minSelections": null,
"maxSelections": null,
"position": 0,
"values": []
},
{
"id": "uuid",
"name": "Color de hilo",
"type": "SELECT",
"required": true,
"minSelections": null,
"maxSelections": null,
"position": 1,
"values": [
{ "id": "uuid", "label": "Rojo", "priceAdjustment": "0.00", "position": 0 },
{ "id": "uuid", "label": "Dorado", "priceAdjustment": "1500.00", "position": 1 }
]
}
]
}
Errores
| Código | Descripción |
|---|---|
404 | El producto con ese slug no existe en la tienda |