Productos
Lee y gestiona el catálogo de productos con client.products — listar, obtener, crear, actualizar, eliminar y contar.
client.products le da a tu plugin acceso CRUD completo al catálogo de productos de un comerciante.
Permisos Requeridos
| Operación | Permiso requerido |
|---|---|
list, get, count | read:products |
create, update, delete | write:products |
Declara los permisos en tu manifiesto whatalo.app.ts para que aparezcan en la pantalla de permisos de instalación.
Mapeo HTTP
| Método | Verbo HTTP | Ruta |
|---|---|---|
list(params?) | GET | /products |
get(id) | GET | /products/:id |
create(data) | POST | /products |
update(id, data) | PATCH | /products/:id |
delete(id) | DELETE | /products/:id |
count(status?) | GET | /products/count |
Métodos
list
Obtiene una lista paginada de productos.
const { data, pagination } = await client.products.list({
page: 1,
per_page: 25,
status: "active", // "active" | "inactive" | "draft"
});
console.log(data[0].name);
console.log(pagination.total); // Total matching products
console.log(pagination.pages); // Total pagesget
Obtiene un único producto por su ID.
const product = await client.products.get("472819365047");
console.log(product.name);
console.log(product.price);
console.log(product.status);create
Crea un nuevo producto en el catálogo del comerciante.
const newProduct = await client.products.create({
name: "Plan Premium — Anual",
price: 299.99,
status: "active",
// Additional fields as defined by the API schema
});
console.log(newProduct.id); // ID assigned by the platformupdate
Actualiza parcialmente un producto existente. Solo se cambian los campos que pases.
const updated = await client.products.update("472819365047", {
name: "Plan Premium — Anual (Actualizado)",
price: 249.99,
});
console.log(updated.name);delete
Elimina permanentemente un producto del catálogo. Esta acción no se puede deshacer.
await client.products.delete("472819365047");count
Obtiene el número total de productos, con filtro opcional por estado.
// Count all products
const total = await client.products.count();
// Count only active products
const active = await client.products.count("active");
console.log(`${active} active products out of ${total} total`);Manejo de Errores
import {
WhataloClient,
NotFoundError,
ValidationError,
AuthorizationError,
} from "@whatalo/plugin-sdk";
try {
const product = await client.products.get("999999999999");
} catch (error) {
if (error instanceof NotFoundError) {
// Product does not exist
console.log(`Not found: ${error.resourceId}`);
} else if (error instanceof AuthorizationError) {
// Missing read:products scope
console.log(`Missing scope: ${error.requiredScope}`);
} else if (error instanceof ValidationError) {
error.fieldErrors.forEach((e) => console.log(`${e.field}: ${e.message}`));
} else {
throw error;
}
}Consulta Errores y Límites de Tasa para la referencia completa de clases de error.