API und ausgehende Webhooks öffnen

Aktiviere den Entwicklerzugang, rufe /api/v1 mit einem Bearer-Schlüssel auf und abonniere ausgehende Webhooks für Bestelllebensereignisse.

API-Schlüssel, Ratenlimits, Entdeckung und Bestellereignis-Webhooks.

Aktiviere den Entwicklerzugang

Öffne Einstellungen → Entwickler, aktiviere den Zugang und erstelle dann einen API-Schlüssel und optionale Webhook-Endpunkte.

  • Schlüssel sind auf dein Verkäuferkonto beschränkt und können jederzeit widerrufen werden.
  • Öffentlicher API-Verkehr ist auf 300 Anfragen pro Minute für jeden Verkäufer begrenzt.
  • GET /api/v1 gibt Entdeckungsmetadaten für verfügbare Ressourcen zurück.

Authentifizieren und die API aufrufen

Sende Authorization: Bearer mit deinem aktiven geheimen Schlüssel. Bevorzuge nur HTTPS. Betten Sie niemals Schlüssel in öffentlichen Clients ein.

  • angebote:lesen: Angebote auflisten und abrufen.
  • angebote:schreiben: Angebote erstellen, aktualisieren, veröffentlichen und löschen.
  • bestellungen:lesen: Verkäuferbestellungen auflisten und abrufen.
  • bestellungen:schreiben: Bestellungen als geliefert markieren.

Liste der letzten Bestellungen

bash
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/orders

Schlüssel rotieren

Wenn ein Schlüssel geleakt wird, widerrufe ihn in den Entwicklereinstellungen und erstelle einen neuen. Aktualisiere deine Automatisierung, bevor du widerrufst, wenn du live bist.

API-Endpunktkarte öffnen

Basis-Pfad ist /api/v1. Erfolgreiche Antworten enthalten X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset. GET /api/v1 gibt einen maschinenlesbaren Katalog der Operationen zurück, der zu diesem Artikel passt.

  • GET /api/v1: Entdeckung (jeder gültige Schlüssel).
  • GET /api/v1/angebote: Angebote auflisten (angebote:lesen).
  • POST /api/v1/angebote: Entwurf erstellen (angebote:schreiben).
  • GET /api/v1/angebote/:urlOderId: Angebot abrufen (angebote:lesen).
  • PATCH /api/v1/angebote/:urlOderId: Angebotsfelder aktualisieren (angebote:schreiben).
  • DELETE /api/v1/angebote/:urlOderId: löschen oder archivieren (angebote:schreiben).
  • POST /api/v1/angebote/:urlOderId/veröffentlichen: veröffentlichen (angebote:schreiben).
  • GET /api/v1/bestellungen: Verkäufe auflisten (bestellungen:lesen).
  • GET /api/v1/bestellungen/:uid: Bestellung abrufen (bestellungen:lesen).
  • POST /api/v1/bestellungen/:uid/liefern: als geliefert markieren (bestellungen:schreiben).

Den aktuellen Operationskatalog drucken

bash
curl -s -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1 | jq ".operations"

Angebote API

Angebotsidentifikatoren akzeptieren den öffentlichen URL-Slug oder die numerische ID. Antworten lassen interne ID und sellerId weg. Lagerbestandszeilen, Optionspreise, Medien und Attribute werden im Verkäufer-Editor (oder zukünftigen Endpunkten) verwaltet, nicht über PATCH.

Aktive Angebote auflisten

bash
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/angebote?archive=aktiv"

Einen Entwurf für ein Angebot erstellen

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/angebote

Ein Angebot mit Beziehungen abrufen

bash
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/angebote/IHR_ANGEBOT_URL

Erlaubte Felder aktualisieren

bash
curl -X PATCH -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/angebote/IHR_ANGEBOT_URL -d @body.json

Erlaubte PATCH-Body-Felder

json
{
  "titel": "Aktualisierter Titel",
  "beschreibung": "Beschreibung für Käufer",
  "sichtbarkeit": "ÖFFENTLICH",
  "kategorieId": 12,
  "angebotId": 34,
  "thumbnail": "https://…",
  "angebotstyp": "KONTO",
  "listungsmodus": "STANDARD"
}

Veröffentlichen (Standard ÖFFENTLICH)

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/angebote/IHR_ANGEBOT_URL/veröffentlichen -d '{"sichtbarkeit":"ÖFFENTLICH"}'

Löschen oder archivieren

bash
curl -X DELETE -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/angebote/IHR_ANGEBOT_URL

Veröffentlichungsanforderungen

Die Veröffentlichung schlägt mit 400 fehl, wenn erforderliche Angebotsfelder unvollständig sind (gleiche Validierung wie im Angebotseditor). Erfolgreiche Aktualisierungen können ein offer.updated Webhook auslösen.

Bestellungen API

Bestellungen sind auf Ihr Verkäuferkonto beschränkt. Käuferabrechnungsdetails können geschwärzt sein. Verwenden Sie die öffentliche Bestell-UID (nicht nur die undurchsichtige Referenz) für Abruf und Lieferung.

Letzte bezahlte Verkäufe auflisten

bash
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/bestellungen?status=BEZAHLT&limit=20&sort=neueste"

Eine Bestellung mit Positionen abrufen

bash
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/bestellungen/BESTELL_UID

Als geliefert markieren

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/bestellungen/BESTELL_UID/liefern -d @evidence.json

Optionale Nachweis-Body

json
{
  "evidence": [
    "https://cdn.example.com/proof-1.png"
  ]
}

Fehler und Ratenlimits

Fehler geben JSON { error, code? } zurück. Das Ratenlimit beträgt 300 Anfragen pro Minute pro API-Schlüssel.

  • 401 API_KEY_REQUIRED oder API_KEY_INVALID.
  • 403 SCOPE_MISSING, wenn der Schlüssel den Endpunktbereich nicht hat.
  • 404 Nicht gefunden für Angebote oder Bestellungen, die Sie nicht besitzen (gleiche Nachricht in beide Richtungen).
  • 429 RATE_LIMITED mit Retry-After und X-RateLimit-* Headern.
  • 400 bei Validierungsfehlern (Veröffentlichung unvollständig, Lieferung nicht erlaubt, leeres PATCH).

429 behandeln

Reduzieren Sie die Nutzung mit Retry-After Sekunden. Rotieren Sie keine Schlüssel, um Limits zu umgehen; das Limit gilt pro Schlüssel und ist für alle Verkäufer gleich.

Ausgehende Bestell-Webhooks

Abonniere order.paid, order.delivered, order.completed, order.refunded und order.disputed. Wähle JSON für deinen Server oder Discord für Kanal-Embeds. Optionale Signierung verwendet X-RMT-Timestamp und X-RMT-Signature.

  • Discord-Format postet reichhaltige Embeds mit einem Bestelllink und Angebotsnamen.
  • JSON-Format postet einen strukturierten Body, einschließlich Angebotsnamen und Einzelposten.
  • Wenn du ein Geheimnis festlegst, überprüfe, ob HMAC-SHA256 von timestamp.body gleich dem v1= Signaturhex ist.
  • Die Lieferhistorie erscheint unter jedem Endpunkt, sodass du Fehler erneut versuchen kannst.

Beispiel signierter Header

json
{
  "X-RMT-Event": "order.paid",
  "X-RMT-Timestamp": "1710000000",
  "X-RMT-Signature": "v1=abc123…"
}

Signaturen überprüfen

Berechne HMAC-SHA256 über den String timestamp + "." + rawBody unter Verwendung deines Endpunktgeheimnisses. Vergleiche mit dem Hex nach v1=.

Node.js-Skizze

javascript
import crypto from "crypto";
const expected = crypto
  .createHmac("sha256", secret)
  .update(`${timestamp}.${rawBody}`)
  .digest("hex");
const ok = expected === signature.replace(/^v1=/, "");

Entwicklertools öffnen

Erstelle Schlüssel und Webhook-Endpunkte in den Einstellungen.