Ficha del producto
Todos los datos de un producto, por id o por slug, con sus categorías, variantes, descripción, especificaciones y medidas.
Ver un producto
GET /api/v1/ecommerce/shop/products/{id}
No pide token.
| Parámetro | Dónde | Qué es |
|---|---|---|
id |
Ruta | El id del producto o su slug. Si es un número se busca por id; si no, por slug. Máximo 255 caracteres |
curl https://<dominio-de-la-empresa>/api/v1/ecommerce/shop/products/p-001-polo-algodon-premium \
-H "Accept: application/json"
Devuelve el producto si está marcado para la tienda virtual y no es un servicio. A diferencia del listado, no mira el almacén ni el ajuste «mostrar solo productos con stock»: un producto sin stock, o que no está en el almacén de la tienda, se sigue viendo aquí. Revisa stock antes de dejar comprarlo.
Respuesta
{
"data": {
"id": 45,
"description": "Polo algodón premium",
"slug": "p-001-polo-algodon-premium",
"categories": [
{ "id": 22, "name": "Ropa", "slug": "ropa", "products_count": null }
],
"brand": { "id": 1, "marca": "Textiles Andinos" },
"internal_id": "P-001",
"barcode": "7750000000011",
"has_igv": true,
"price": 49.9,
"in_offer": true,
"offer_price": 39.9,
"prices": [],
"stock": 60,
"has_variants": true,
"files": [
{
"id": 1828,
"description": null,
"is_cover": true,
"path": "https://miempresa.ejemplo.com/attach-files/1828/preview",
"preview": "https://miempresa.ejemplo.com/attach-files/1828/preview/small"
}
],
"variants": [
{
"id": 9,
"sku": "P-001-S-NEG",
"price": 49.9,
"in_offer": true,
"offer_price": 39.9,
"stock": 20,
"prices": [],
"values": [
{ "id": 17, "attribute": "Talla", "value": "S", "color": null, "is_main": true },
{ "id": 18, "attribute": "Color", "value": "Negro", "color": "#111111", "is_main": false }
],
"files": []
}
],
"currency": { "id": "PEN", "description": "Soles", "symbol": "S/" },
"unit_type": { "id": "NIU", "description": "Unidades" },
"additional": { "value": "<p>Algodón peruano 100 %.</p>" },
"specifications": [
{ "specification": "Material", "value": "Algodón" }
],
"custom_measurement": null,
"min_order": 0,
"weight": 0.3
},
"success": true,
"message": "Información procesada de forma correcta."
}
Tiene los mismos campos que cada producto del listado, con el mismo significado (precio, precios por cantidad, variantes, stock e imágenes), y además:
| Campo | Qué es |
|---|---|
categories |
Las categorías de la tienda a las que se asoció el producto. products_count llega siempre null aquí. No incluye la categoría principal de la ficha del ERP si no se asoció también desde las categorías de la tienda |
has_igv |
true si price ya incluye el IGV; false si el IGV se suma encima al comprar |
additional |
Descripción larga del producto, en HTML, en additional.value. null si no tiene |
specifications |
Lista de especificaciones: specification (nombre, por ejemplo «Material») y value. Lista vacía si no tiene |
custom_measurement |
Guía de medidas del producto, en HTML, o null |
weight |
Peso del producto en kg, o null. Es el que se usa para calcular el envío |
additional.value y custom_measurement son HTML escrito por la empresa en el ERP. Si los muestras como HTML, límpialos antes.
Si algo sale mal
| HTTP | code | Cuándo | Qué hacer |
|---|---|---|---|
| 404 | STORE_NOT_FOUND |
La tienda no está publicada | La empresa debe publicarla desde el ERP |
| 503 | STORE_PAUSED |
La tienda está pausada | Reintenta más tarde (Retry-After) |
| 404 | PRODUCT_NOT_FOUND |
No hay ningún producto de la tienda con ese id o slug, o no está marcado para la tienda virtual, o es un servicio | Revisa el id o el slug |
| 503 | STORE_NOT_CONFIGURED |
El ERP no tiene ningún almacén | Avisa a la empresa |
| 429 | RATE_LIMITED |
Se superó el límite | Espera lo que indica Retry-After |
| 500 | INTERNAL_ERROR |
Fallo del servidor | Reporta la reference |