Ir al contenido

Listar los productos de una tienda

GET
/stores/{storeKey}/products

Devuelve los productos de la tienda, con sus variantes y los productos no disponibles (is_available en false). Los resultados van ordenados por nombre y luego por identificador, y la respuesta está paginada.

parent_ids lista los productos de los que este producto es modificador. is_modifier es true cuando parent_ids no está vacío. variant_of es el producto del que es variante. main_category_id es la categoría raíz de category_id.

prices trae un precio por catálogo y moneda. price es el precio con impuestos y net_price el precio sin impuestos.

storeKey
required
string format: uuid

Identificador (UUID) de la tienda.

Example
2b7d9e40-c1a3-4f58-8e06-5a4d3c7b9f12
type
string
Allowed values: product variant service topping combo

Filtra por tipo de producto.

Example
product
paginate
integer
default: 15 >= 1 <= 100

Cantidad de registros por página. Por defecto 15.

Example
15
page
integer
default: 1 >= 1

Número de página, empezando en 1. Por defecto 1.

Example
1

Una página del catálogo de la tienda, con sus variantes, modificadores y productos no disponibles. Sirve para mantener al día el catálogo y los precios en su sistema.

  • Van ordenados por nombre y luego por identificador. Los registros llegan en data, los enlaces de navegación en links y los totales en meta; siga links.next hasta que sea null.
  • Los productos no disponibles llegan con is_available en false: no los descarte sin revisar ese campo.
  • price y net_price son cadenas de texto, con 2 y 5 decimales, no números.
  • sku, external_id, category_id y variant_of pueden ser null.
object
data
required

Productos de esta página, ordenados por nombre y luego por identificador.

Array<object>
object
id
required

Identificador del producto.

string format: uuid
sku
required

Código del producto. Es null si no tiene.

string | null
external_id
required

Código externo del producto. Es null si no tiene.

string | null
name
required

Nombre del producto.

string
type
required

Tipo de producto.

string
Allowed values: product variant service topping combo
category_id
required

Identificador de la categoría del producto.

string | null format: uuid
main_category_id
required

Identificador de la categoría raíz de category_id.

string | null format: uuid
is_available
required

Indica si el producto está disponible para la venta.

boolean
is_modifier
required

true cuando el producto es modificador de al menos otro producto (parent_ids no está vacío).

boolean
parent_ids
required

Identificadores de los productos de los que este producto es modificador.

Array<string>
variant_of
required

Identificador del producto del que este producto es variante. Es null si no es una variante.

string | null format: uuid
prices
required

Precios del producto, uno por catálogo y moneda.

Array<object>
object
catalog_id
required

Identificador del catálogo de precios.

string format: uuid
currency
required

Nombre de la moneda, por ejemplo PEN o USD.

string
price
required

Precio con impuestos. string (2 dec).

string
net_price
required

Precio sin impuestos. string (5 dec).

string
links
required

Enlaces de la paginación. Conservan los parámetros de consulta de la petición.

object
first
required

URL de la primera página.

string
last
required

URL de la última página.

string
prev
required

URL de la página anterior. Es null en la primera página.

string | null
next
required

URL de la página siguiente. Es null en la última página.

string | null
meta
required

Información de la paginación.

object
current_page
required

Número de la página actual.

integer
from
required

Posición del primer registro de la página dentro del total. Es null si no hay registros.

integer | null
last_page
required

Número de la última página.

integer
links
required

Enlaces para armar un paginador.

Array<object>
object
url
required

URL de la página. Es null cuando no hay página anterior o siguiente.

string | null
label
required

Texto del enlace.

string
active
required

true en la página actual.

boolean
path
required

URL de la operación, sin parámetros de consulta.

string
per_page
required

Cantidad de registros por página.

integer
to
required

Posición del último registro de la página dentro del total. Es null si no hay registros.

integer | null
total
required

Cantidad total de registros.

integer
Examples

Primera página, con dos productos por página

{
"data": [
{
"id": "7a9c1e3f-5b7d-4f91-a3c5-0e2b4d6f8a13",
"sku": "HAM-001",
"external_id": "100234",
"name": "Hamburguesa Clásica",
"type": "product",
"category_id": "b1d3f5a7-9c1e-4b35-8d7f-2a4c6e8b0d24",
"main_category_id": "c2e4a6b8-0d2f-4c46-9e8a-3b5d7f9a1c35",
"is_available": true,
"is_modifier": false,
"parent_ids": [],
"variant_of": null,
"prices": [
{
"catalog_id": "5c7e9a1b-3d5f-4b79-a1c3-8e0b2d4f6a97",
"currency": "PEN",
"price": "30.00",
"net_price": "25.42373"
}
]
},
{
"id": "e5a7c9b1-4d6f-4a80-8b2c-6d8f0a2c4e53",
"sku": "TOP-QSO",
"external_id": null,
"name": "Queso extra",
"type": "topping",
"category_id": null,
"main_category_id": null,
"is_available": true,
"is_modifier": true,
"parent_ids": [
"7a9c1e3f-5b7d-4f91-a3c5-0e2b4d6f8a13"
],
"variant_of": null,
"prices": [
{
"catalog_id": "5c7e9a1b-3d5f-4b79-a1c3-8e0b2d4f6a97",
"currency": "PEN",
"price": "3.00",
"net_price": "2.54237"
}
]
}
],
"links": {
"first": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/products?paginate=2&page=1",
"last": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/products?paginate=2&page=2",
"prev": null,
"next": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/products?paginate=2&page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"links": [
{
"url": null,
"label": "« Anterior",
"active": false
},
{
"url": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/products?paginate=2&page=1",
"label": "1",
"active": true
},
{
"url": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/products?paginate=2&page=2",
"label": "2",
"active": false
},
{
"url": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/products?paginate=2&page=2",
"label": "Siguiente »",
"active": false
}
],
"path": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/products",
"per_page": 2,
"to": 2,
"total": 3
}
}

Credenciales ausentes, inválidas, deshabilitadas o vencidas. El campo error.description indica el motivo.

Formato de error de la autenticación y del control de acceso del token.

object
error
required

Detalle del error, con su código, su mensaje y su descripción.

object
code
required

Siempre es 0.

integer
message
required

Mensaje del error.

string
description
required

Detalle del error, cuando existe.

string | null
Examples

Falta una de las cabeceras

{
"error": {
"code": 0,
"message": "No autorizado",
"description": "El token es obligatorio"
}
}

La tienda indicada en la ruta no pertenece al token. La respuesta es la misma para una tienda ajena y para una tienda inexistente.

Formato de error de la autenticación y del control de acceso del token.

object
error
required

Detalle del error, con su código, su mensaje y su descripción.

object
code
required

Siempre es 0.

integer
message
required

Mensaje del error.

string
description
required

Detalle del error, cuando existe.

string | null
Examples
{
"error": {
"code": 0,
"message": "Acceso denegado",
"description": "El token no tiene acceso a la tienda solicitada"
}
}

Algún parámetro de consulta no es válido.

Formato de error cuando los datos enviados no superan la validación.

object
message
required

Mensaje general de validación.

string
errors
required

Mensajes de error agrupados por nombre de campo.

object
key
additional properties
Array<string>
Examples

Tipo de producto inexistente

{
"message": "Uno o más de los datos que has ingresado no cumplen con los requisitos mínimos.",
"errors": {
"type": [
"El campo type es inválido."
]
}
}