Cliente API

Webhooks (Cliente API)

Gestiona suscripciones de webhooks de forma programática con client.webhooks — listar, crear, actualizar y eliminar registros de webhooks.

client.webhooks permite que tu plugin gestione suscripciones de webhooks para la tienda de un comerciante a través de la API REST. Esta es la alternativa programática a declarar webhooks estáticamente en tu manifiesto whatalo.app.ts.

Para recibir y verificar payloads de webhooks, consulta la sección de Webhooks.

Permisos Requeridos

OperaciónPermiso requerido
listread:webhooks
create, update, deletewrite:webhooks

Mapeo HTTP

MétodoVerbo HTTPRuta
list()GET/webhooks
create(data)POST/webhooks
update(id, data)PATCH/webhooks/:id
delete(id)DELETE/webhooks/:id

Métodos

list

Obtiene todas las suscripciones de webhooks registradas para la tienda.

const webhooks = await client.webhooks.list();

webhooks.forEach((wh) => {
  console.log(`${wh.id}: ${wh.url} — events: ${wh.events.join(", ")}`);
});

create

Registra una nueva suscripción de webhook.

const webhook = await client.webhooks.create({
  url: "https://mi-plugin.com/api/webhooks",
  events: ["order.created", "product.updated"],
  secret: "mi-secreto-de-firma", // Used to verify HMAC signatures
});

console.log(webhook.id); // Store this ID to update or delete later

update

Actualiza las suscripciones de eventos de un webhook existente.

await client.webhooks.update("wh_123", {
  events: ["order.created", "order.updated", "order.cancelled"],
});

delete

Elimina una suscripción de webhook. El endpoint dejará de recibir eventos inmediatamente.

await client.webhooks.delete("wh_123");

Manifiesto vs. Registro por API

Los webhooks se pueden declarar de dos maneras:

EnfoqueCuándo usarlo
Manifiesto whatalo.app.ts (campo webhooks)Listas de eventos simples y estáticas conocidas al momento del despliegue
client.webhooks.create (API)Suscripciones dinámicas que dependen de la configuración del comerciante o del plan

Para la mayoría de los plugins, el enfoque del manifiesto es más simple. Usa el enfoque de la API cuando los comerciantes necesiten elegir a qué eventos suscribirse desde la UI de configuración de tu plugin.

Manejo de Errores

import { ValidationError, AuthorizationError } from "@whatalo/plugin-sdk";

try {
  await client.webhooks.create({
    url: "no-es-una-url-valida",
    events: ["order.created"],
    secret: "mi-secreto",
  });
} catch (error) {
  if (error instanceof ValidationError) {
    error.fieldErrors.forEach((e) => console.log(`${e.field}: ${e.message}`));
  } else if (error instanceof AuthorizationError) {
    console.log(`Missing scope: ${error.requiredScope}`);
  } else {
    throw error;
  }
}

Consulta Errores y Límites de Tasa para la referencia completa de clases de error.

On this page