API 및 아웃바운드 웹후크 열기

개발자 접근을 활성화하고, bearer 키로 /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

키 회전

키가 유출되면 개발자 설정에서 취소하고 새 키를 생성하세요. 라이브 중이라면 취소하기 전에 자동화를 업데이트하세요.

Open 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"

오퍼 API

오퍼 식별자는 공개 URL 슬러그 또는 숫자 ID를 수락합니다. 응답에는 내부 ID와 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으로 실패합니다 (오퍼 편집기와 동일한 검증). 성공적인 업데이트는 offer.updated 웹후크를 발생시킬 수 있습니다.

주문 API

주문은 귀하의 판매자 계정에 국한됩니다. 구매자 청구 세부정보는 삭제될 수 있습니다. 가져오기 및 배송을 위해 공개 주문 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? }를 반환합니다. 속도 제한은 API 키당 분당 300 요청입니다.

  • 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에 구독하세요. 서버 또는 Discord 채널 임베드를 위해 JSON을 선택하세요. 선택적 서명은 X-RMT-Timestamp 및 X-RMT-Signature를 사용합니다.

  • Discord 형식 게시물은 주문 링크 및 제공 이름이 포함된 풍부한 임베드를 게시합니다.
  • JSON 형식 게시물은 제공 이름 및 항목을 포함하는 구조화된 본문을 게시합니다.
  • 비밀을 설정한 경우, timestamp.body의 HMAC-SHA256이 v1= 서명 16진수와 일치하는지 확인하세요.
  • 배송 이력은 각 엔드포인트 아래에 나타나므로 실패를 재시도할 수 있습니다.

예시 서명 헤더

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

서명 확인

timestamp + "." + rawBody 문자열에 대해 HMAC-SHA256을 계산하세요. v1= 이후의 16진수와 비교하세요.

Node.js 스케치

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

개발자 도구 열기

설정에서 키 및 웹후크 엔드포인트를 생성하세요.