Abrir API e webhooks de saída

Habilite o acesso de desenvolvedor, chame /api/v1 com uma chave bearer e assine webhooks de saída para eventos do ciclo de vida do pedido.

Chaves da API, limites de taxa, descoberta e webhooks de eventos de pedidos.

Habilitar acesso de desenvolvedor

Abra Configurações → Desenvolvedor, habilite o acesso e crie uma chave da API e endpoints de webhook opcionais.

  • As chaves são limitadas à sua conta de vendedor e podem ser revogadas a qualquer momento.
  • O tráfego da API aberta é limitado a 300 solicitações por minuto para cada vendedor.
  • GET /api/v1 retorna metadados de descoberta para recursos disponíveis.

Autentique e chame a API

Envie Authorization: Bearer com sua chave secreta ao vivo. Prefira apenas HTTPS. Nunca insira chaves em clientes públicos.

  • offers:read: listar e obter ofertas.
  • offers:write: criar, atualizar, publicar e deletar ofertas.
  • orders:read: listar e obter pedidos do vendedor.
  • orders:write: marcar pedidos como entregues.

Liste pedidos recentes

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

Rotacione chaves

Se uma chave vazar, revogue-a nas configurações do desenvolvedor e crie uma nova. Atualize sua automação antes de revogar se você estiver ao vivo.

Abrir mapa de endpoints da API

O caminho base é /api/v1. Respostas bem-sucedidas incluem X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. GET /api/v1 retorna um catálogo de operações legível por máquina que corresponde a este artigo.

  • GET /api/v1: descoberta (qualquer chave válida).
  • GET /api/v1/offers: listar ofertas (offers:read).
  • POST /api/v1/offers: criar rascunho (offers:write).
  • GET /api/v1/offers/:urlOrId: obter oferta (offers:read).
  • PATCH /api/v1/offers/:urlOrId: atualizar campos da oferta (offers:write).
  • DELETE /api/v1/offers/:urlOrId: deletar ou arquivar (offers:write).
  • POST /api/v1/offers/:urlOrId/publish: publicar (offers:write).
  • GET /api/v1/orders: listar vendas (orders:read).
  • GET /api/v1/orders/:uid: obter pedido (orders:read).
  • POST /api/v1/orders/:uid/deliver: marcar como entregue (orders:write).

Imprimir o catálogo de operações ao vivo

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

API de Ofertas

Identificadores de ofertas aceitam o slug da URL pública ou id numérico. Respostas omitem id interno e sellerId. Linhas de estoque, preços de opções, mídia e atributos são gerenciados no editor do vendedor (ou futuros endpoints), não via PATCH ainda.

Listar ofertas ativas

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

Criar uma oferta de rascunho

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

Obter uma oferta com relações

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

Atualizar campos permitidos

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

Campos permitidos no corpo do PATCH

json
{
  "title": "Título atualizado",
  "description": "Descrição voltada para o comprador",
  "visibility": "PÚBLICO",
  "categoryId": 12,
  "offeringId": 34,
  "thumbnail": "https://…",
  "offerType": "CONTA",
  "listingMode": "PADRÃO"
}

Publicar (padrão PÚBLICO)

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":"PÚBLICO"}'

Deletar ou arquivar

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

Requisitos para publicação

A publicação falha com 400 se os campos obrigatórios da listagem estiverem incompletos (mesma validação que o editor de ofertas). Atualizações bem-sucedidas podem emitir um webhook offer.updated.

API de Pedidos

Os pedidos estão vinculados à sua conta de vendedor. Detalhes de cobrança do comprador podem ser ocultados. Use o uid do pedido público (não apenas a referência opaca) para obter e entregar.

Listar vendas pagas recentes

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

Obter um pedido com itens

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

Marcar como entregue

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

Corpo de evidência opcional

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

Erros e limites de taxa

Erros retornam JSON { error, code? }. O limite de taxa é de 300 requisições por minuto por chave de API.

  • 401 API_KEY_REQUIRED ou API_KEY_INVALID.
  • 403 SCOPE_MISSING quando a chave não possui o escopo do endpoint.
  • 404 Não encontrado para ofertas ou pedidos que você não possui (mes mesma mensagem de qualquer forma).
  • 429 RATE_LIMITED com Retry-After e cabeçalhos X-RateLimit-*.
  • 400 para falhas de validação (publicação incompleta, entrega não permitida, PATCH vazio).

Lidar com 429

Aguarde usando os segundos de Retry-After. Não troque chaves para contornar limites; o limite é por chave e fixo para todos os vendedores.

Webhooks de pedidos de saída

Inscreva-se em order.paid, order.delivered, order.completed, order.refunded e order.disputed. Escolha JSON para seu servidor ou Discord para embeds de canal. A assinatura opcional usa X-RMT-Timestamp e X-RMT-Signature.

  • Postagens em formato Discord apresentam embeds ricos com um link de pedido e nome da oferta.
  • Postagens em formato JSON apresentam um corpo estruturado incluindo nomes de ofertas e itens de linha.
  • Se você definir um segredo, verifique se HMAC-SHA256 de timestamp.body é igual ao hex de v1=.
  • O histórico de entrega aparece sob cada endpoint para que você possa tentar novamente falhas.

Exemplo de cabeçalhos assinados

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

Verifique assinaturas

Calcule HMAC-SHA256 sobre a string timestamp + "." + rawBody usando seu segredo de endpoint. Compare com o hex após v1=.

Esboço em Node.js

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

Abrir ferramentas de desenvolvedor

Crie chaves e endpoints de webhook em Configurações.