فتح API والويب هوكس الصادرة

قم بتمكين الوصول للمطورين، استدعاء /api/v1 بمفتاح حامل، واشترك في ويب هوكس الصادرة لأحداث دورة حياة الطلب.

مفاتيح API، حدود المعدل، الاكتشاف، وويب هوكس أحداث الطلب.

تمكين الوصول للمطورين

افتح الإعدادات → المطور، قم بتمكين الوصول، ثم أنشئ مفتاح API ونقاط نهاية ويب هوك اختيارية.

  • تكون المفاتيح محددة لحساب البائع الخاص بك ويمكن إبطالها في أي وقت.
  • يتم تحديد حركة مرور API المفتوحة بمعدل 300 طلب في الدقيقة لكل بائع.
  • GET /api/v1 يعيد بيانات الاكتشاف للموارد المتاحة.

المصادقة واستدعاء API

أرسل Authorization: Bearer مع مفتاحك السري المباشر. يفضل HTTPS فقط. لا تقم أبدًا بتضمين المفاتيح في العملاء العامة.

  • offers:read: عرض والحصول على العروض.
  • offers:write: إنشاء، تحديث، نشر، وحذف العروض.
  • orders:read: عرض والحصول على طلبات البائع.
  • orders:write: وضع علامة على الطلبات كتم تسليمها.

قائمة الطلبات الأخيرة

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

تدوير المفاتيح

إذا تسرب مفتاح، قم بإبطاله في إعدادات المطور وأنشئ مفتاحًا جديدًا. قم بتحديث الأتمتة الخاصة بك قبل إبطالها إذا كنت مباشرًا.

فتح خريطة نقاط نهاية API

المسار الأساسي هو /api/v1. تشمل الاستجابات الناجحة X-RateLimit-Limit و X-RateLimit-Remaining و X-RateLimit-Reset. GET /api/v1 يعيد كتالوج العمليات القابل للقراءة آليًا الذي يتطابق مع هذه المقالة.

  • GET /api/v1: اكتشاف (أي مفتاح صالح).
  • GET /api/v1/offers: عرض العروض (offers:read).
  • POST /api/v1/offers: إنشاء مسودة (offers:write).
  • GET /api/v1/offers/:urlOrId: الحصول على عرض (offers:read).
  • PATCH /api/v1/offers/:urlOrId: تحديث حقول العرض (offers:write).
  • DELETE /api/v1/offers/:urlOrId: حذف أو أرشفة (offers:write).
  • POST /api/v1/offers/:urlOrId/publish: نشر (offers:write).
  • GET /api/v1/orders: عرض المبيعات (orders:read).
  • GET /api/v1/orders/:uid: الحصول على طلب (orders:read).
  • POST /api/v1/orders/:uid/deliver: وضع علامة على التسليم (orders:write).

طباعة كتالوج العمليات المباشر

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

واجهة برمجة تطبيقات العروض

معرفات العروض تقبل شريحة URL العامة أو المعرف الرقمي. تستبعد الاستجابات المعرف الداخلي و sellerId. يتم إدارة صفوف المخزون، أسعار الخيارات، الوسائط، والسمات في محرر البائع (أو نقاط النهاية المستقبلية)، وليس عبر PATCH بعد.

عرض العروض النشطة

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

إنشاء عرض مسودة

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

الحصول على عرض واحد مع العلاقات

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

تحديث الحقول المسموح بها

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

حقول جسم PATCH المسموح بها

json
{
  "title": "عنوان محدث",
  "description": "وصف موجه للمشتري",
  "visibility": "PUBLIC",
  "categoryId": 12,
  "offeringId": 34,
  "thumbnail": "https://…",
  "offerType": "ACCOUNT",
  "listingMode": "STANDARD"
}

نشر (افتراضي PUBLIC)

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

حذف أو أرشفة

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

متطلبات النشر

يفشل النشر مع 400 إذا كانت حقول الإدراج المطلوبة غير مكتملة (نفس التحقق مثل محرر العرض). يمكن أن تصدر التحديثات الناجحة webhook offer.updated.

واجهة برمجة تطبيقات الطلبات

الطلبات مرتبطة بحساب البائع الخاص بك. قد يتم حذف تفاصيل الفوترة الخاصة بالمشتري. استخدم معرف الطلب العام uid (ليس المرجع الغامض وحده) للحصول على الطلب والتسليم.

عرض المبيعات المدفوعة الأخيرة

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

الحصول على طلب واحد مع عناصر السطر

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

وضع علامة على التسليم

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

جسم الأدلة الاختياري

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

الأخطاء وحدود المعدل

ترجع الأخطاء JSON { error, code? }. حد المعدل هو 300 طلب في الدقيقة لكل مفتاح API.

  • 401 API_KEY_REQUIRED أو API_KEY_INVALID.
  • 403 SCOPE_MISSING عندما يفتقر المفتاح إلى نطاق نقطة النهاية.
  • 404 غير موجود للعروض أو الطلبات التي لا تملكها (نفس الرسالة في كلتا الحالتين).
  • 429 RATE_LIMITED مع Retry-After ورؤوس X-RateLimit-*.
  • 400 لفشل التحقق (نشر غير مكتمل، تسليم غير مسموح به، PATCH فارغ).

التعامل مع 429

تراجع باستخدام Retry-After ثواني. لا تقم بتدوير المفاتيح لتجاوز الحدود؛ الحد هو لكل مفتاح وثابت لجميع البائعين.

ويب هوكس الطلب الصادرة

اشترك في order.paid وorder.delivered وorder.completed وorder.refunded وorder.disputed. اختر JSON لخادمك أو Discord لتضمينات القناة. يستخدم التوقيع الاختياري X-RMT-Timestamp وX-RMT-Signature.

  • تقوم تنسيقات Discord بنشر تضمينات غنية مع رابط الطلب واسم العرض.
  • تقوم تنسيقات JSON بنشر جسم منظم يتضمن أسماء العروض وعناصر السطر.
  • إذا قمت بتعيين سر، تحقق من HMAC-SHA256 من timestamp.body يساوي v1= التوقيع السداسي.
  • تظهر تاريخ التسليم تحت كل نقطة نهاية حتى تتمكن من إعادة محاولة الفشل.

مثال على رؤوس موقعة

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

تحقق من التوقيعات

احسب HMAC-SHA256 على السلسلة timestamp + "." + rawBody باستخدام سرك في نقطة النهاية. قارن مع السداسي بعد v1=.

رسم تخطيطي لـ Node.js

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

فتح أدوات المطور

أنشئ المفاتيح ونقاط نهاية ويب هوك في الإعدادات.