Cliente API

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ónPermiso requerido
list, get, countread:products
create, update, deletewrite:products

Declara los permisos en tu manifiesto whatalo.app.ts para que aparezcan en la pantalla de permisos de instalación.

Mapeo HTTP

MétodoVerbo HTTPRuta
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 pages

get

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 platform

update

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.

On this page