Produtos e vitrine
O parceiro cadastra produtos e planos no console, em Produtos, ou pela API. Cada SKU tem um public_id estável. O Mini App abre com startapp=mp_{public_id}.
A vitrine TonRamp só lista o que o parceiro pediu (listed=true), a TonRamp aprovou, está na janela e tem estoque.
Autenticação
Seção intitulada “Autenticação”GET/POST/PATCH /v1/partner/products e /v2/partner/products aceitam o JWT do console ou API key tonr_… no header Authorization: Bearer.
POST /v2/partner/products
Seção intitulada “POST /v2/partner/products”Cria o SKU. listed começa em false. Pedir vitrine não aprova sozinho.
curl -X POST https://api.tonramp.io/v2/partner/products \ -H "Authorization: Bearer tonr_SUA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Pacote 100", "amount": 10, "listed": true, "category": "games", "slug": "pacote-gold" }'A resposta traz telegram_link, deep_link (/p/{public_id}), store_url (usa o slug na loja se você enviou um) e startapp.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title |
string | Sim | Nome, até 120 caracteres |
amount |
number | Sim | Preço em USDT (mínimo equivalente a R$ 20) |
listed |
bool | Não | Pedir vitrine TonRamp. Default false |
category |
string | Não | Filtro da vitrine, até 64 caracteres |
slug |
string | Não | URL da loja (a-z, 0-9, hífen). 3–80 caracteres. Não pode ser um public_id |
kind |
string | Não | product (único) ou plan (lembrete, sem débito) |
stock |
number | Não | Inteiro. Vazio = ilimitado. 0 esgota |
PATCH /v2/partner/products/{id} atualiza os mesmos campos. Mudar título, valor ou imagem com vitrine ligada volta a pending.
GET /v1/partner/products e GET /v2/partner/products listam os SKUs da conta.
GET /v2/marketplace/products
Seção intitulada “GET /v2/marketplace/products”Catálogo público da mall. Sem autenticação.
Query:
| Param | Descrição |
|---|---|
q |
Busca no título e na descrição |
category |
Categoria exata (sem diferenciar maiúsculas) |
limit |
Até 50 |
offset |
Paginação |
GET /v2/marketplace/categories devolve as categorias que estão na mall agora.
GET /v1/marketplace/products é o mesmo catálogo (v1). GET /v2/store/products/{public_id_ou_slug} é a página do SKU na loja, mesmo fora da vitrine, se o SKU estiver ativo.
Checkout
Seção intitulada “Checkout”O Mini App paga com POST /v1/marketplace/products/{public_id}/checkout (JWT do Telegram). O payload TRP leva o product_id na transação. Pedido com personagem/quantidade continua em POST /v1/wallet/trp/generate.