Listar productos
const url = 'https://api.posdata.so/public/v1/products?limit=25&include_deleted=false';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.posdata.so/public/v1/products?limit=25&include_deleted=false' \ --header 'Authorization: Bearer <token>'Productos con sus variantes, del más reciente al más antiguo.
Permiso requerido: products:read.
Autorización
Sección titulada «Autorización»Parámetros
Sección titulada «Parámetros»Parámetros de consulta
Sección titulada «Parámetros de consulta»El next_cursor de la página anterior, tal cual.
ISO 8601 con zona horaria. Incluye.
ISO 8601 con zona horaria. Excluye.
ISO 8601 con zona horaria. Para sincronización incremental.
Solo activos (true) o inactivos (false).
Productos de esa categoría.
Coincidencia exacta con el SKU del producto o de cualquiera de sus variantes.
Busca en el nombre (sin distinguir mayúsculas).
Si es true, incluye los registros eliminados (con deleted_at).
Respuestas
Sección titulada «Respuestas»OK
object
Producto del catálogo. Precios en pesos enteros, digitados como los digita el negocio: con impuestos incluidos cuando su perfil fiscal dice pricesIncludeTax (lo normal), antes de impuestos si no.
object
composite = se arma desde una receta y no descuenta su propio stock.
false = insumo que no se vende por sí solo.
Clase fiscal del ítem. standard hereda del perfil fiscal del negocio.
Precio de lista, antes del descuento propio del producto.
Precio al que el POS vende. Si el producto no tiene descuento es igual a base_price.
Descuento del producto sobre base_price, en porcentaje (0-100, puede tener decimales).
Unidad base (und, g, kg, lb, oz, ml, l, doc). Stock y costo se expresan en ella.
Se vende por peso: la cantidad de la línea es un peso en base_unit.
Costo promedio ponderado por unidad base (informativo).
Variantes vigentes (no eliminadas).
Variante de un producto. Precios en pesos enteros, digitados como los digita el negocio: con impuestos incluidos cuando su perfil fiscal dice pricesIncludeTax (lo normal), antes de impuestos si no.
object
Nombre de la variante (“Talla M / Rojo”).
Precio de lista, antes del descuento propio del producto.
Precio al que el POS vende esta variante. Si es 0 en la variante, el POS usa el del producto.
Descuento del producto sobre base_price, en porcentaje (0-100, puede tener decimales).
Ejemplo
{ "object": "list", "data": [ { "object": "product", "kind": "simple", "tax_class": "standard", "variants": [ { "object": "product_variant" } ] } ]}Petición inválida (VALIDATION_ERROR, INVALID_JSON, INVALID_CURSOR).
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Sin API key válida (UNAUTHENTICATED, INVALID_API_KEY, API_KEY_REVOKED, API_KEY_EXPIRED, API_KEY_WRONG_ENVIRONMENT, ACCOUNT_INACTIVE).
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Sin permiso (PLAN_REQUIRED, INSUFFICIENT_SCOPE, BROWSER_REQUESTS_NOT_ALLOWED).
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Límite de peticiones (RATE_LIMITED). Respeta Retry-After.
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Error interno (INTERNAL_ERROR). Reintenta y comparte el request_id si persiste.
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}