Skip to main content
Las escrituras que pueden crear duplicados requieren o aceptan Idempotency-Key. En el SDK se envía como idempotencyKey dentro del request.
await lapyme.sales.create({
  idempotencyKey: `sale:shopify:${order.id}`,
  body: {
    // ...
  },
});

Buenas keys

Elegí una key estable que represente la operación de negocio, no el intento.
sale:shopify:12345
purchase:vendor-bill:0001-00000042
stock-adjustment:warehouse-1:cycle-count-2026-05-24
customer:external-crm:88291

Keys que conviene evitar

random UUID nuevo en cada retry
timestamp-only-2026-05-24T10:30:00Z
sale
retry-1

Patrón de retry

import { Lapyme } from "lapyme";
import * as errors from "lapyme/models/errors";

const lapyme = new Lapyme({
  bearerAuth: process.env["LAPYME_API_KEY"] ?? "",
});

const idempotencyKey = `sale:shopify:${order.id}`;

try {
  await lapyme.sales.create({
    idempotencyKey,
    body: salePayload,
  });
} catch (error) {
  if (
    error instanceof errors.ApiErrorEnvelope &&
    error.error.retryable
  ) {
    // Reintentá la misma operación con el mismo idempotencyKey.
    await lapyme.sales.create({
      idempotencyKey,
      body: salePayload,
    });
  } else {
    throw error;
  }
}
Si reutilizás la misma key con otro payload, la API responde IDEMPOTENCY_CONFLICT.