Cliente API

Descuentos

Crea y gestiona códigos de descuento con client.discounts — listar, obtener, crear, actualizar y eliminar registros de descuento.

client.discounts permite que tu plugin gestione códigos de descuento en la tienda del comerciante. Esto es útil para plugins de fidelización, sistemas de referidos o herramientas de campañas promocionales.

Permisos Requeridos

OperaciónPermiso requerido
list, getread:discounts
create, update, deletewrite:discounts

Mapeo HTTP

MétodoVerbo HTTPRuta
list(params?)GET/discounts
get(id)GET/discounts/:id
create(data)POST/discounts
update(id, data)PATCH/discounts/:id
delete(id)DELETE/discounts/:id

Métodos

list

Obtiene una lista paginada de todos los códigos de descuento.

const { data, pagination } = await client.discounts.list();

data.forEach((discount) => {
  console.log(`${discount.code} — ${discount.type}: ${discount.value}`);
});

get

Obtiene un único descuento por su ID.

const discount = await client.discounts.get("disc_123");

console.log(discount.code);   // e.g., "SAVE20"
console.log(discount.type);   // "percentage" | "fixed"
console.log(discount.value);  // e.g., 20 (percent) or 10.00 (fixed amount)

create

Crea un nuevo código de descuento.

// Percentage discount
const percentDiscount = await client.discounts.create({
  code: "AHORRA20",
  type: "percentage",
  value: 20,
});

// Fixed-amount discount
const fixedDiscount = await client.discounts.create({
  code: "10MENOS",
  type: "fixed",
  value: 10.0,
});

console.log(percentDiscount.id);

update

Actualiza parcialmente un descuento existente. Solo se cambian los campos que pases.

await client.discounts.update("disc_123", {
  value: 25, // Increase the discount from 20% to 25%
});

delete

Elimina permanentemente un código de descuento. Los usos activos del código no se ven afectados.

await client.discounts.delete("disc_123");

Ejemplo de Plugin de Fidelización

import { WhataloClient } from "@whatalo/plugin-sdk";

const client = new WhataloClient({ apiKey: process.env.WHATALO_API_KEY! });

/**
 * Generate a unique loyalty discount for a customer after
 * they reach a reward threshold.
 */
async function issueLoyaltyReward(customerId: string): Promise<string> {
  const code = `LEAL-${customerId.slice(-6).toUpperCase()}`;

  const discount = await client.discounts.create({
    code,
    type: "percentage",
    value: 15,
  });

  return discount.code; // Return the code to display to the customer
}

Manejo de Errores

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

try {
  await client.discounts.create({
    code: "AHORRA20", // Duplicate code — store already has this
    type: "percentage",
    value: 20,
  });
} catch (error) {
  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