Activer l'accès développeur
Ouvrez Paramètres → Développeur, activez l'accès, puis créez une clé API et des points de terminaison webhook optionnels.
- Les clés sont limitées à votre compte vendeur et peuvent être révoquées à tout moment.
- Le trafic API ouvert est limité à 300 requêtes par minute pour chaque vendeur.
- GET /api/v1 renvoie des métadonnées de découverte pour les ressources disponibles.
Authentifiez et appelez l'API
Envoyez Authorization: Bearer avec votre clé secrète en direct. Préférez HTTPS uniquement. Ne jamais intégrer de clés dans des clients publics.
- offres:read: lister et obtenir des offres.
- offres:write: créer, mettre à jour, publier et supprimer des offres.
- commandes:read: lister et obtenir les commandes des vendeurs.
- commandes:write: marquer les commandes comme livrées.
Lister les commandes récentes
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/orders
Faire tourner les clés
Si une clé fuit, révoquez-la dans les paramètres Développeur et créez-en une nouvelle. Mettez à jour votre automatisation avant de révoquer si vous êtes en direct.
Ouvrir la carte des points de terminaison de l'API
Le chemin de base est /api/v1. Les réponses réussies incluent X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. GET /api/v1 renvoie un catalogue d'opérations lisible par machine qui correspond à cet article.
- GET /api/v1: découverte (toute clé valide).
- GET /api/v1/offers: lister les offres (offres:read).
- POST /api/v1/offers: créer un brouillon (offres:write).
- GET /api/v1/offers/:urlOrId: obtenir l'offre (offres:read).
- PATCH /api/v1/offers/:urlOrId: mettre à jour les champs de l'offre (offres:write).
- DELETE /api/v1/offers/:urlOrId: supprimer ou archiver (offres:write).
- POST /api/v1/offers/:urlOrId/publish: publier (offres:write).
- GET /api/v1/orders: lister les ventes (commandes:read).
- GET /api/v1/orders/:uid: obtenir la commande (commandes:read).
- POST /api/v1/orders/:uid/deliver: marquer comme livré (commandes:write).
Imprimer le catalogue des opérations en direct
curl -s -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1 | jq ".operations"
API des offres
Les identifiants d'offre acceptent le slug d'URL public ou l'ID numérique. Les réponses omettent l'ID interne et sellerId. Les lignes de stock, les prix des options, les médias et les attributs sont gérés dans l'éditeur de vendeur (ou futurs points de terminaison), pas encore via PATCH.
Lister les offres actives
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/offers?archive=active"
Créer une offre brouillon
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers
Obtenir une offre avec relations
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL
Mettre à jour les champs autorisés
curl -X PATCH -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL -d @body.json
Champs de corps PATCH autorisés
{
"title": "Titre mis à jour",
"description": "Description pour l'acheteur",
"visibility": "PUBLIC",
"categoryId": 12,
"offeringId": 34,
"thumbnail": "https://…",
"offerType": "COMPTE",
"listingMode": "STANDARD"
}Publier (PUBLIC par défaut)
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL/publish -d '{"visibility":"PUBLIC"}'Supprimer ou archiver
curl -X DELETE -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL
Conditions de publication
La publication échoue avec 400 si les champs de listing requis sont incomplets (même validation que l'éditeur d'offres). Les mises à jour réussies peuvent émettre un webhook offer.updated.
API des commandes
Les commandes sont liées à votre compte vendeur. Les détails de facturation de l'acheteur peuvent être masqués. Utilisez l'UID de commande public (pas la référence opaque seule) pour obtenir et livrer.
Lister les ventes récentes payées
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/orders?status=PAID&limit=20&sort=newest"
Obtenir une commande avec des articles
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/orders/ORDER_UID
Marquer comme livré
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/orders/ORDER_UID/deliver -d @evidence.json
Corps de preuve optionnel
{
"evidence": [
"https://cdn.example.com/proof-1.png"
]
}Erreurs et limites de taux
Les erreurs renvoient JSON { error, code? }. La limite de taux est de 300 requêtes par minute par clé API.
- 401 API_KEY_REQUIRED ou API_KEY_INVALID.
- 403 SCOPE_MISSING lorsque la clé manque de la portée de point de terminaison.
- 404 Non trouvé pour les offres ou commandes que vous ne possédez pas (même message dans les deux sens).
- 429 RATE_LIMITED avec Retry-After et X-RateLimit-* en-têtes.
- 400 pour les échecs de validation (publication incomplète, livraison non autorisée, PATCH vide).
Gérer 429
Réduisez en utilisant Retry-After secondes. Ne faites pas tourner les clés pour contourner les limites ; la limite est par clé et plate pour tous les vendeurs.
Webhooks de commande sortants
Abonnez-vous à order.paid, order.delivered, order.completed, order.refunded, et order.disputed. Choisissez JSON pour votre serveur ou Discord pour les intégrations de canal. La signature optionnelle utilise X-RMT-Timestamp et X-RMT-Signature.
- Les publications au format Discord affichent des intégrations riches avec un lien de commande et le nom de l'offre.
- Le format JSON publie un corps structuré incluant les noms d'offres et les éléments de ligne.
- Si vous définissez un secret, vérifiez que HMAC-SHA256 de timestamp.body est égal à la signature hex v1=.
- L'historique de livraison apparaît sous chaque point de terminaison afin que vous puissiez réessayer les échecs.
Exemple d'en-têtes signés
{
"X-RMT-Event": "order.paid",
"X-RMT-Timestamp": "1710000000",
"X-RMT-Signature": "v1=abc123…"
}Vérifiez les signatures
Calculez HMAC-SHA256 sur la chaîne timestamp + "." + rawBody en utilisant votre secret de point de terminaison. Comparez au hex après v1=.
Esquisse Node.js
import crypto from "crypto";
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
const ok = expected === signature.replace(/^v1=/, "");