Passer au contenu principal

Automatisations

Faites travailler vos remboursements dans les outils que vous utilisez déjà.

Trois points d'entrée, un seul ensemble de règles. Votre assistant IA, vos applications et vos autres systèmes voient les mêmes dossiers, et rien ne contourne vos approbations.

  • Serveur MCP

    Laissez un assistant IA lire les dossiers et proposer des décisions par le Model Context Protocol.

    Configurer MCP
  • API publique

    Quatre opérations pour ouvrir, lister, lire et mettre à jour des dossiers de remboursement avec une clé d'API d'espace de travail.

    Voir l'API
  • Webhooks

    13 types d'événements signés envoyés à votre point de terminaison, avec nouvelles tentatives et relance possible.

    Voir les webhooks

API publique

Ouvrez un dossier depuis votre code.

Une surface petite et stable pour les dossiers, authentifiée par une clé d'API d'espace de travail. La référence est servie par votre API à /public/v1/docs.

Opérations
MéthodeCheminPortéeRôle
POST/public/v1/refund-casesintakeOuvre un dossier de remboursement. Une clé en double renvoie le dossier d'origine avec 200.
GET/public/v1/refund-casesreadListe les dossiers de votre espace de travail.
GET/public/v1/refund-cases/{id}readLit un dossier avec son état et ses articles.
POST/public/v1/refund-cases/{id}/return-receivedintakeIndique que le retour est arrivé.
Données d'exemple
Requête
curl -X POST https://<api-host>/public/v1/refund-cases \
  -H "Authorization: Bearer eqk_live_…" \
  -H "Idempotency-Key: ord-10442-refund-1" \
  -H "Content-Type: application/json" \
  -d '{
    "external_order_id": "10442",
    "amount_minor": 4999,
    "currency": "USD",
    "reason": "Arrived damaged",
    "line_items": [{ "line_id": "li_1", "quantity": 1 }],
    "order_country": "US"
  }'
Réponse
HTTP/1.1 201 Created
X-Correlation-ID: 7c1e9a52-3b0f-4d8e-9a61-2f5c0b7d4e13
X-RateLimit-Remaining: 1199

{
  "refund_case_id": "01J9Z3K4M8Q2V6X0B5N7T1R3Y8",
  "state": "RECEIVED",
  "external_order_id": "10442",
  "amount_minor": 4999,
  "currency": "USD",
  "created_at": "2026-09-24T14:02:11Z"
}

Conventions

  • Idempotency-Key sur chaque POST, conservée 24 heures. Une clé réutilisée avec un autre corps renvoie 409.
  • X-Correlation-ID est renvoyé, ou généré pour vous, dans chaque réponse.
  • Les erreurs partagent une seule forme : error.code, error.message et l'identifiant de corrélation.
  • En-têtes X-RateLimit dans chaque réponse. Plafonds par forfait : Free 120, Starter 600, Growth 1 200 et Scale 2 400 requêtes par minute.

Webhooks

Chaque événement, signé et relancé.

Les propriétaires et administrateurs ajoutent les points de terminaison dans le tableau de bord. Chaque livraison est signée, numérotée et relancée après 1 minute, 5 minutes, 30 minutes, 2 heures et 12 heures, puis placée en file de rejet d'où elle peut être relancée.

Dossiers de remboursement

  • refund_case.created
  • refund_case.state_changed
  • refund_case.approved
  • refund_case.denied
  • refund_case.refund_executed
  • refund_case.completed
  • refund_case.failed
  • refund_case.return_received

Approbations

  • approval.requested
  • approval.decided

Étiquettes et agents

  • return_label.purchased
  • agent_run.finished
  • agent_task.updated
Données d'exemple
Une livraison
POST /hooks/lumtry HTTP/1.1
Content-Type: application/json
User-Agent: Equali-Webhooks/1
X-Equali-Delivery-Id: 01J9Z3N6W2D8H4K0P7S5V1X3C9
X-Equali-Event: refund_case.approved
X-Equali-Sequence: 42
X-Equali-Timestamp: 1790258531
X-Equali-Signature: v1=5f2b9d0e…c81e

{
  "created_at": "2026-09-24T14:02:11Z",
  "data": {
    "amount_minor": 4999,
    "currency": "USD",
    "external_order_id": "10442",
    "previous_state": "PENDING_APPROVAL",
    "refund_case_id": "01J9Z3K4M8Q2V6X0B5N7T1R3Y8",
    "state": "APPROVED"
  },
  "id": "01J9Z3N6W2D8H4K0P7S5V1X3C9",
  "sequence": 42,
  "type": "refund_case.approved"
}
Vérification (Node.js)
import crypto from "node:crypto";

// rawBody: the exact bytes received, before JSON parsing.
export function verifyLumtry(rawBody, headers, secret /* whsec_… */) {
  const ts = headers["x-equali-timestamp"];
  const sig = headers["x-equali-signature"] ?? "";
  if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
  const expected =
    "v1=" + crypto.createHmac("sha256", secret).update(ts + "." + rawBody).digest("hex");
  const a = Buffer.from(sig);
  const b = Buffer.from(expected);
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Rejetez un horodatage de plus de 5 minutes, puis comparez le HMAC en temps constant.

Les webhooks entrants sont vérifiés avant toute écriture

Chaque fournisseur qui envoie un webhook à Lumtry est d'abord vérifié selon son propre schéma de signature. Une signature invalide reçoit un 401 et aucun traitement.

  • Shopify
  • Stripe
  • PayPal
  • WooCommerce
  • BigCommerce
  • Amazon SNS
  • eBay
  • Gorgias
  • Zendesk
  • EasyPost
  • Shippo
  • ShipBob
  • ShipHero
  • Twilio
  • Telnyx
  • Slack

Connectez votre assistant IA en quelques minutes.

Les outils de lecture fonctionnent avec toute clé d'API d'espace de travail. Commencez gratuitement, créez une clé et dirigez votre assistant vers votre espace de travail.