Buka API dan webhook keluar

Aktifkan akses pengembang, panggil /api/v1 dengan kunci bearer, dan langganan webhook keluar untuk peristiwa siklus hidup pesanan.

Kunci API, batasan tarif, penemuan, dan webhook peristiwa pesanan.

Aktifkan akses pengembang

Buka Pengaturan → Pengembang, aktifkan akses, lalu buat kunci API dan titik akhir webhook opsional.

  • Kunci dibatasi pada akun penjual Anda dan dapat dicabut kapan saja.
  • Lalu lintas API terbuka dibatasi hingga 300 permintaan per menit untuk setiap penjual.
  • GET /api/v1 mengembalikan metadata penemuan untuk sumber daya yang tersedia.

Autentikasi dan panggil API

Kirim Authorization: Bearer dengan kunci rahasia langsung Anda. Utamakan HTTPS saja. Jangan pernah menyematkan kunci di klien publik.

  • offers:read: daftar dan ambil tawaran.
  • offers:write: buat, perbarui, terbitkan, dan hapus tawaran.
  • orders:read: daftar dan ambil pesanan penjual.
  • orders:write: tandai pesanan sebagai terkirim.

Daftar pesanan terbaru

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

Putar kunci

Jika kunci bocor, cabut di pengaturan Pengembang dan buat yang baru. Perbarui otomatisasi Anda sebelum mencabut jika Anda sedang aktif.

Buka peta endpoint API

Path dasar adalah /api/v1. Respons yang berhasil mencakup X-RateLimit-Limit, X-RateLimit-Remaining, dan X-RateLimit-Reset. GET /api/v1 mengembalikan katalog operasi yang dapat dibaca mesin yang sesuai dengan artikel ini.

  • GET /api/v1: penemuan (kunci valid apa pun).
  • GET /api/v1/offers: daftar tawaran (offers:read).
  • POST /api/v1/offers: buat draf (offers:write).
  • GET /api/v1/offers/:urlOrId: ambil tawaran (offers:read).
  • PATCH /api/v1/offers/:urlOrId: perbarui bidang tawaran (offers:write).
  • DELETE /api/v1/offers/:urlOrId: hapus atau arsipkan (offers:write).
  • POST /api/v1/offers/:urlOrId/publish: terbitkan (offers:write).
  • GET /api/v1/orders: daftar penjualan (orders:read).
  • GET /api/v1/orders/:uid: ambil pesanan (orders:read).
  • POST /api/v1/orders/:uid/deliver: tandai terkirim (orders:write).

Cetak katalog operasi langsung

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

API Tawaran

Identifikasi tawaran menerima slug url publik atau id numerik. Respons menghilangkan id internal dan sellerId. Baris stok, harga opsi, media, dan atribut dikelola di editor penjual (atau endpoint masa depan), bukan melalui PATCH untuk saat ini.

Daftar tawaran aktif

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

Buat tawaran draf

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

Ambil satu tawaran dengan relasi

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

Perbarui bidang yang diizinkan

bash
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

Bidang body PATCH yang diizinkan

json
{
  "title": "Judul yang diperbarui",
  "description": "Deskripsi untuk pembeli",
  "visibility": "PUBLIK",
  "categoryId": 12,
  "offeringId": 34,
  "thumbnail": "https://…",
  "offerType": "AKUN",
  "listingMode": "STANDAR"
}

Terbitkan (default PUBLIK)

bash
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":"PUBLIK"}'

Hapus atau arsipkan

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

Persyaratan penerbitan

Penerbitan gagal dengan 400 jika bidang listing yang diperlukan tidak lengkap (validasi yang sama seperti editor tawaran). Pembaruan yang berhasil dapat memicu webhook offer.updated.

API Pesanan

Pesanan terbatas pada akun penjual Anda. Detail penagihan pembeli mungkin disunting. Gunakan uid pesanan publik (bukan referensi opak saja) untuk ambil dan kirim.

Daftar penjualan yang baru dibayar

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

Ambil satu pesanan dengan item

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

Tandai terkirim

bash
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

Body bukti opsional

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

Kesalahan dan batasan laju

Kesalahan mengembalikan JSON { error, code? }. Batasan laju adalah 300 permintaan per menit per kunci API.

  • 401 API_KEY_REQUIRED atau API_KEY_INVALID.
  • 403 SCOPE_MISSING ketika kunci tidak memiliki ruang lingkup endpoint.
  • 404 Tidak ditemukan untuk tawaran atau pesanan yang tidak Anda miliki (pesan yang sama baik cara).
  • 429 RATE_LIMITED dengan Retry-After dan header X-RateLimit-*.
  • 400 untuk kegagalan validasi (penerbitan tidak lengkap, pengiriman tidak diizinkan, PATCH kosong).

Tangani 429

Kurangi penggunaan dengan detik Retry-After. Jangan ganti kunci untuk menghindari batas; batasan adalah per kunci dan sama untuk semua penjual.

Webhook pesanan keluar

Langganan order.paid, order.delivered, order.completed, order.refunded, dan order.disputed. Pilih JSON untuk server Anda atau Discord untuk penyematan saluran. Penandatanganan opsional menggunakan X-RMT-Timestamp dan X-RMT-Signature.

  • Format Discord memposting penyematan kaya dengan tautan pesanan dan nama tawaran.
  • Format JSON memposting tubuh terstruktur termasuk nama tawaran dan item baris.
  • Jika Anda mengatur rahasia, verifikasi HMAC-SHA256 dari timestamp.body sama dengan tanda tangan v1= hex.
  • Riwayat pengiriman muncul di bawah setiap titik akhir sehingga Anda dapat mencoba ulang kegagalan.

Contoh header yang ditandatangani

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

Verifikasi tanda tangan

Hitung HMAC-SHA256 di atas string timestamp + "." + rawBody menggunakan rahasia titik akhir Anda. Bandingkan dengan hex setelah v1=.

Sketsa Node.js

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

Buka alat pengembang

Buat kunci dan titik akhir webhook di Pengaturan.