# Autenticação (https://docs.rivoo.gg/api/autenticacao)
Toda chamada leva a chave da loja no header:
```http
Authorization: Bearer rk_...
```
## Criar a chave [#criar-a-chave]
Em **Integrações › Chaves de API**, clique em **Criar chave**. Escolha, para cada recurso (pedidos, catálogo, clientes, entregas, webhooks…), se a chave pode **ler**, **escrever** ou **nada**.
O segredo aparece uma vez só, na criação. Guarde num cofre ou variável de ambiente (`RIVOO_API_KEY`), nunca no código nem no navegador. Se vazar, revogue na mesma tela: a chave para de funcionar na hora.
- Uma chave vale para **uma loja**. Ela não alcança o saldo, os saques nem a equipe da conta: isso fica só no painel.
- Chaves começam com `rk_`. As que começam com `rck_` são de servidor de jogo (plugin) e não servem para a API.
## Erros de autenticação [#erros-de-autenticação]
| Status | `code` | O que fazer |
| --- | --- | --- |
| 401 | `unauthenticated` | Mande o header `Authorization`. |
| 401 | `invalid_api_key` | A chave está errada, revogada ou vencida. |
| 403 | `permission_denied` | A chave não tem a permissão daquele recurso. Edite as permissões ou crie outra. |
## OAuth (assistentes de IA) [#oauth-assistentes-de-ia]
Assistentes como o Claude e o ChatGPT entram pelo [MCP](/ia/mcp), com login OAuth do dono da loja. Esse acesso é **só leitura** e vale só para as lojas que você autorizar. Para integrar um sistema seu, use a chave de API.
# Erros (https://docs.rivoo.gg/api/erros)
Erros vêm com o status HTTP certo e corpo no formato [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) (`application/problem+json`). Use o campo **`code`**: ele não muda. O `title` é texto para gente e pode mudar.
```json
{
"type": "https://docs.rivoo.gg/api/erros#validation_failed",
"title": "Dados inválidos",
"status": 422,
"code": "validation_failed",
"errors": [{ "field": "items.0.quantity", "code": "min", "message": "quantity must not be less than 1" }],
"requestId": "req_mhexample0000request0001"
}
```
Mande o `requestId` ao suporte quando precisar de ajuda com uma chamada.
## Códigos comuns [#códigos-comuns]
| Status | `code` | Quando |
| --- | --- | --- |
| 400 | `bad_request` | JSON malformado ou parâmetro inválido. |
| 401 | `unauthenticated` / `invalid_api_key` | Sem chave, ou chave inválida. Veja [Autenticação](/api/autenticacao). |
| 403 | `permission_denied` | A chave não pode fazer isso. |
| 404 | `route_not_found` | Caminho ou método que não existe. |
| 404 | `*_not_found` | O recurso não existe nesta loja (ex.: `order_not_found`). |
| 409 | `idempotency_in_progress` | A mesma `Idempotency-Key` ainda está sendo processada. Tente de novo em instantes. |
| 413 | `payload_too_large` | Corpo acima de 1 MB. |
| 422 | `validation_failed` | Campos inválidos: veja `errors[]`, um item por campo. |
| 422 | `idempotency_key_reused` | A mesma `Idempotency-Key` com outro corpo. Veja [Idempotência](/api/idempotencia). |
| 429 | `rate_limited` | Passou do limite. Espere o `Retry-After`. Veja [Limites](/api/limites). |
| 500 | `internal_error` | Falha nossa. Tente de novo com a mesma `Idempotency-Key`. |
Cada endpoint pode ter códigos próprios, sempre em `snake_case` e explicados no `title`.
# Idempotência (https://docs.rivoo.gg/api/idempotencia)
Rede cai, timeout acontece. Para repetir um `POST` sem criar dois pedidos, mande o header `Idempotency-Key` com um valor único por operação (o id do pedido no seu sistema, um UUID):
```http
Idempotency-Key: pedido_123
```
- A primeira chamada com a chave roda normalmente; as seguintes, com o **mesmo corpo**, devolvem a mesma resposta, sem executar de novo.
- A chave tem de 8 a 255 caracteres (letras, números e `. _ : -`) e vale por **chave de API** e por rota: repetir com outra chave de API executa de novo.
- A mesma chave com **outro corpo** dá `422 idempotency_key_reused`.
- Enquanto a primeira ainda está rodando, a repetição recebe `409 idempotency_in_progress`.
Vale para todo `POST`. É **obrigatória** (sem ela: `400 idempotency_key_required`) em:
- [Criar pedido](/api/referencia/pedidos/criar-pedido)
- [Registrar pedido manual](/api/referencia/pedidos/registrar-pedido-manual)
- [Criar assinatura](/api/referencia/assinaturas/criar-assinatura)
- [Reembolsar pedido](/api/referencia/reembolsos/reembolsar-pedido)
- [Reenviar comandos](/api/referencia/comandos/reenviar-comandos)
A referência marca o header como obrigatório nessas rotas. Rotas que devolvem um segredo (criar webhook, trocar segredo) ignoram o header.
# API (https://docs.rivoo.gg/api)
A API da Rivoo é REST com JSON. Tudo o que o painel faz com a loja (pedidos, catálogo, clientes, entregas, cupons) dá para fazer por ela.
- **URL base:** `https://api.rivoo.gg`
- **Autenticação:** `Authorization: Bearer ` ([como criar a chave](/api/autenticacao))
- **Formato:** JSON em UTF-8. Dinheiro em centavos de real (`2990` = R$ 29,90), datas em ISO 8601 (UTC).
- **IDs:** texto com prefixo do tipo (`ord_`, `prod_`, `cus_`…), sempre em ordem de criação.
## Primeiro pedido [#primeiro-pedido]
```bash
curl -X POST "https://api.rivoo.gg/v1/orders" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Idempotency-Key: pedido_123" \
-H "Content-Type: application/json" \
-d '{ "items": [{ "productId": "prod_...", "quantity": 1 }], "externalId": "pedido_123" }'
```
A resposta traz o pedido e um `checkoutUrl`: mande o comprador para lá. Quando ele pagar, chega o webhook [`order.paid`](/webhooks/eventos/order.paid).
# Limites (https://docs.rivoo.gg/api/limites)
Cada chave de API pode fazer **1.200 chamadas por minuto** (janela fixa de 60 segundos). Passou disso, a resposta é `429 rate_limited` com o header `Retry-After` dizendo quantos segundos esperar.
```http
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/problem+json
```
Dicas:
- Prefira [webhooks](/webhooks) a consultar a API em loop para saber se um pedido foi pago.
- Em listas grandes, use `limit=100` ([paginação](/api/paginacao)).
- Corpo de requisição: até 1 MB (envio de imagem: até 2 MB de imagem em base64).
# Paginação (https://docs.rivoo.gg/api/paginacao)
Toda rota de lista (`GET /v1/orders`, `GET /v1/customers`…) devolve no máximo `limit` itens, do mais novo ao mais antigo:
```json
{ "data": [ { "id": "ord_..." } ], "hasMore": true }
```
| Parâmetro | Padrão | O que faz |
| --- | --- | --- |
| `limit` | 20 | Itens por página, de 1 a 100. |
| `startingAfter` | | Id do último item da página atual: traz a **próxima** página (itens mais antigos). |
| `endingBefore` | | Id do primeiro item da página atual: traz a página **anterior** (itens mais novos). |
Use um dos dois cursores por vez. Enquanto `hasMore` for `true`, há mais páginas.
```js
let cursor;
do {
const url = new URL('https://api.rivoo.gg/v1/orders');
url.searchParams.set('limit', '100');
if (cursor) url.searchParams.set('startingAfter', cursor);
const page = await fetch(url, { headers: { Authorization: `Bearer ${process.env.RIVOO_API_KEY}` } }).then((r) => r.json());
for (const order of page.data) console.log(order.id, order.status);
cursor = page.hasMore ? page.data.at(-1).id : undefined;
} while (cursor);
```
# Criar a loja (https://docs.rivoo.gg/comecar/criar-loja)
### Crie a conta [#crie-a-conta]
Em [rivoo.gg/app/cadastro](https://rivoo.gg/app/cadastro), com seu e-mail. Não tem mensalidade.
### Dê nome e endereço à loja [#dê-nome-e-endereço-à-loja]
Escolha o nome e o endereço (`seuservidor.rivoo.gg`). Depois dá para ligar um [domínio próprio](/api/referencia/dominio-proprio/ligar-dominio-proprio).
### Cadastre os produtos [#cadastre-os-produtos]
Em **Produtos**: VIP, ranks, kits, moedas. Preço em reais, imagem e descrição. Ranks em escada permitem upgrade pagando só a diferença.
### Ligue o servidor e configure a entrega [#ligue-o-servidor-e-configure-a-entrega]
Instale o [plugin](/entrega/plugin-minecraft) no servidor de Minecraft (**Entrega In-game** no painel) e diga, em cada produto, o comando que roda quando ele é pago (por exemplo `lp user {player} parent addtemp vip 30d`). Veja as [variáveis de comando](/referencia-rapida/variaveis-de-comando).
### Personalize a vitrine [#personalize-a-vitrine]
Em **Loja › Aparência**: template, cores, logo, banner, IP do servidor e Discord.
### Complete os dados do titular e publique [#complete-os-dados-do-titular-e-publique]
CPF ou CNPJ de quem recebe, e a conta para saque no mesmo documento. Feito isso, **Publicar** coloca a loja no ar.
Próximo passo: [faça a primeira venda](/comecar/primeira-venda).
# Primeira venda (https://docs.rivoo.gg/comecar/primeira-venda)
A Rivoo não tem modo de teste: toda venda é real. O jeito mais simples de testar tudo de ponta a ponta é comprar na sua própria loja um produto de R$ 1,00.
Num Pix de R$ 1,00, a taxa do Pix é R$ 0,75 e sobram R$ 0,25 no seu saldo. Se preferir, reembolse depois: o dinheiro volta para quem pagou.
### Crie um produto de teste [#crie-um-produto-de-teste]
Em **Produtos**, um produto de R$ 1,00 com um comando simples, por exemplo `say {player} comprou na loja!`.
### Compre na vitrine [#compre-na-vitrine]
Abra a loja, informe seu nick, escolha Pix e pague o QR Code. A aprovação leva segundos.
### Confira o que aconteceu [#confira-o-que-aconteceu]
- **Vendas › Pedidos**: o pedido aparece como pago.
- **No jogo**: o comando rodou (se você estava online; se não, roda quando você entrar).
- **Extrato**: a entrada de R$ 0,25 no saldo.
- **Webhooks**: se você cadastrou um, chegou o [`order.paid`](/webhooks/eventos/order.paid).
### Reembolse, se quiser [#reembolse-se-quiser]
No pedido, menu **⋯ › Reembolsar**. O valor volta pelo mesmo Pix.
Pela API, o mesmo teste é [criar um pedido](/api/referencia/pedidos/criar-pedido) e abrir o `checkoutUrl` da resposta.
# Taxas e saque (https://docs.rivoo.gg/comecar/taxas-e-saque)
Sem mensalidade e sem limite de vendas. Você paga só por venda aprovada:
## Quando o dinheiro entra [#quando-o-dinheiro-entra]
No Pix, assim que o pagamento é confirmado: a venda aparece em **Vendas** e a entrada no **Extrato**. Valores de vendas em disputa ficam retidos até a disputa terminar.
## Saque [#saque]
Em **Transferências › Transferir**, com o código enviado ao seu e-mail (vale 5 minutos).
- O dinheiro cai por Pix numa conta no nome do titular (o CPF ou o CNPJ da conta). Na primeira vez, a conta é conferida com uma transferência de R$ 0,01.
- Taxa de R$ 1,00 por saque; mínimo de R$ 2,01.
- Seguindo as regras do Banco Central, há um limite para o dia (06:00 às 20:00) e outro para a noite (20:00 às 06:00). Em **Transferências** você vê quanto já usou.
# Agente RCON (beta) (https://docs.rivoo.gg/entrega/agente-rcon)
Em **beta**: funciona, mas ainda está sendo testado em servidores de verdade de cada jogo.
Para jogos sem plugin da Rivoo, a entrega usa o RCON do servidor, o console remoto que o jogo já tem. Quem roda os comandos é o **agente da Rivoo**, que segue as mesmas regras do plugin: fila, espera o jogador online, e confere a resposta do jogo.
| Jogo | Protocolo | Porta padrão |
| --- | --- | --- |
| Minecraft Java (com Geyser) | Source RCON | 25575 |
| Rust | WebRCON | 28016 |
| ARK: Survival Evolved / Ascended | Source RCON | 27020 |
| Conan Exiles | Source RCON | 25575 |
| Palworld | Source RCON | 25575 |
| 7 Days to Die | Telnet | 8081 |
| Outro jogo com Source RCON | Source RCON | a sua (sem checar quem está online) |
## Duas formas de rodar [#duas-formas-de-rodar]
**Instalado (recomendado).** O agente roda na máquina do jogo, ou num PC/VPS sempre ligado que alcance o RCON. A senha do RCON nunca sai da sua máquina, e ele só faz conexões de saída (não precisa abrir porta).
- Baixe em [rivoo-agent/releases](https://github.com/payera-br/rivoo-agent/releases/latest) (Linux amd64/arm64, Windows) ou use a imagem Docker. Para Pterodactyl há um egg pronto.
- Rode, informe o jogo, a porta e a senha do RCON, e pareie com o código como no plugin.
**Na nuvem da Rivoo.** Para quem aluga o servidor e não pode instalar nada: no painel, informe o jogo, o IP, a porta e a senha do RCON. A Rivoo roda o agente para você. A porta do RCON precisa estar acessível pela internet; o painel testa a conexão antes de salvar e a senha fica guardada cifrada.
# Entrega manual (https://docs.rivoo.gg/entrega/entrega-manual)
Quando a entrega não é automática (um item feito sob medida, um serviço, um jogo sem RCON), use a ação **Entrega manual** no produto.
1. O pedido é pago e a entrega aparece em **Entrega In-game › Pendentes**. O menu mostra quantas estão esperando.
2. A equipe entrega e clica em **Marcar como entregue**.
Pela API: [Entregas manuais pendentes](/api/referencia/entregas/entregas-manuais-pendentes) e [Marcar como entregue](/api/referencia/entregas/marcar-como-entregue).
# Jogador offline (https://docs.rivoo.gg/entrega/jogador-offline)
Com **Esperar o jogador online** ligado (o padrão), o comando fica na fila até o jogador entrar no servidor. Os outros comandos não ficam presos atrás dele: a fila de cada jogador anda sozinha.
- O plugin informa a cada consulta quem está online, e a Rivoo só manda o que dá para executar agora.
- Com **espaços livres no inventário**, o comando também espera o jogador liberar espaço, e ele recebe o aviso "Libere N espaços…" no chat (no máximo a cada 5 minutos).
- Comandos que não citam o jogador (`{player}`, `{uuid}`, `{id}`) rodam na hora, mesmo com a opção ligada: não há por quem esperar.
Desligue a opção para comandos que funcionam com o jogador offline (por exemplo, `lp user {player} parent add vip`, que o LuckPerms aceita offline).
Em **Entrega In-game › Pendentes** você vê o que está esperando.
# Plugin Minecraft (https://docs.rivoo.gg/entrega/plugin-minecraft)
O plugin liga o servidor à loja: executa os comandos das compras e ainda deixa o jogador comprar dentro do jogo com `/comprar`, pagando um Pix que aparece num mapa na mão.
**Requisitos:** Paper (ou fork, como Purpur) 1.21.x com Java 21.
## Instalar [#instalar]
Baixe o [rivoo-minecraft-paper.jar](https://github.com/payera-br/rivoo-minecraft-plugin/releases/latest/download/rivoo-minecraft-paper.jar) e coloque na pasta `plugins/` do servidor. Reinicie.
O console mostra um código de 8 letras, como `K7QM-2XPA`.
No painel, **Entrega In-game › Parear servidor**, digite o código. O console mostra `Loja conectada`.
Não precisa editar `config.yml`. Tem vários servidores (Survival, Skyblock, Lobby)? Instale em cada um e escolha, na tela, em quais servidores a loja entrega.

## Comandos do plugin [#comandos-do-plugin]
| Comando | Quem | O que faz |
| --- | --- | --- |
| `/comprar [pacote]` | jogador | Abre o menu da loja ou gera o Pix de um pacote. |
| `/comprar presentear [pacote]` | jogador | Compra de presente para outro jogador. |
| `/rivoo status` | admin | Mostra se está conectado, o catálogo e os Pix abertos. |
| `rivoo connect` | console | Gera um novo código de pareamento. |
| `rivoo secret ` | console | Conecta com uma chave `rck_…` (botão **Conectar com chave** no painel), em vez do código. |
## Como a entrega funciona [#como-a-entrega-funciona]
1. O pedido é pago (na loja web, no `/comprar` ou pela API).
2. A Rivoo põe na fila do servidor os comandos do produto, com as [variáveis](/referencia-rapida/variaveis-de-comando) trocadas.
3. O plugin busca a fila, executa e responde se deu certo. Se falhar (comando desconhecido, erro), o pedido mostra **Entrega falhou** com o motivo, e você pode tentar de novo.
Reiniciar o servidor não perde nada: a fila fica na Rivoo e um comando nunca roda duas vezes.
## Opções de cada comando [#opções-de-cada-comando]
- **Esperar o jogador online** (ligado por padrão): veja [Jogador offline](/entrega/jogador-offline).
- **Espaços livres no inventário:** espera o jogador ter N espaços livres e avisa no chat.
- **Atraso** e **Repetir:** roda depois de um tempo, ou repetidamente.
- **Em que servidor:** todos ou só alguns.
**Reenviar comandos (wipe):** depois de um wipe, reenvie para um servidor os comandos de todos os benefícios ativos.
# Assinatura e Pix Automático (https://docs.rivoo.gg/guias/assinatura-e-pix-automatico)
Num produto com cobrança **Assinatura** (ou **As duas**), escolha o período (mensal, trimestral…) e o preço. O comprador autoriza uma vez e as renovações são cobradas sozinhas:
- **Pix Automático:** o comprador autoriza no app do banco; a Rivoo cobra a cada período.
- **Cartão:** o cartão fica guardado no provedor de pagamento e é cobrado a cada período.
## Ciclo [#ciclo]
1. A primeira cobrança paga ativa a assinatura e entrega o benefício até o fim do período.
2. A cada renovação paga, o benefício é estendido ([`subscription.renewed`](/webhooks/eventos/subscription.renewed)).
3. Renovação não paga: a assinatura fica **atrasada** ([`subscription.past_due`](/webhooks/eventos/subscription.past_due)) e a Rivoo tenta de novo antes de encerrar.
4. Cancelada pelo comprador ou por você: o benefício vale até o fim do período pago ([`subscription.canceled`](/webhooks/eventos/subscription.canceled)); ao acabar, as ações de fim rodam ([`subscription.ended`](/webhooks/eventos/subscription.ended)).
Em **Vendas › Assinaturas** você vê as ativas, a próxima cobrança, cancela ou retoma.
Pela API: [Criar assinatura](/api/referencia/assinaturas/criar-assinatura) devolve o link para o comprador autorizar.
# Códigos de criador (https://docs.rivoo.gg/guias/codigos-de-criador)
Em **Descontos › Criadores**, cadastre o criador com:
- **Código** (`SKYHUNTER`) e **link** (`sualoja.rivoo.gg/?criador=SKYHUNTER`), que já aplica o código.
- **Desconto** para quem usa o código (opcional).
- **Comissão** sobre o valor pago.
O comprador digita o código no carrinho ou no checkout, ou chega pelo link. Numa assinatura, conta a primeira cobrança.
## Relatório e pagamento [#relatório-e-pagamento]
O relatório mostra, por mês, as vendas de cada criador e a comissão, já descontados reembolsos e disputas perdidas. A Rivoo não paga o criador por você: quando pagar, registre em **Pagamentos** para o relatório mostrar o que falta.
# Cupons e promoções (https://docs.rivoo.gg/guias/cupons-e-promocoes)
Em **Descontos**:
- **Cupons:** o comprador digita o código no carrinho ou no checkout (`DEMO10`).
- **Promoções:** aplicadas sozinhas, sem código, com faixa e contagem regressiva na vitrine.
Os dois aceitam:
- **Porcentagem ou valor fixo.**
- **Prazo** de início e fim.
- **Limite de usos** no total e por cliente.
- **Gasto mínimo** no carrinho.
- **Produtos ou categorias** em que vale.
- **Só para quem já tem** um pacote (ex.: desconto de renovação só para quem é VIP).
Uma promoção automática também pode rodar **comandos em todos os servidores** quando começa e quando termina (ex.: ligar um evento de XP em dobro). Se você pausar, arquivar ou encurtar a promoção, os comandos de fim rodam na hora.
Em **Usos** você vê cada pedido que usou o desconto e quanto foi descontado.
Pela API: [Criar cupom ou promoção](/api/referencia/cupons-e-promocoes/criar-cupom-ou-promocao).
# Discord (https://docs.rivoo.gg/guias/discord)
Em **Integrações › Discord**, adicione o bot da Rivoo ao seu servidor do Discord.
## Cargo para quem compra [#cargo-para-quem-compra]
Na aba **Entrega** do produto, adicione a ação **cargo no Discord** e escolha o cargo. Quem compra recebe o cargo; quando o benefício acaba (vencimento, reembolso, upgrade), o cargo sai. O comprador liga a conta do Discord no checkout.
O cargo do bot precisa estar **acima** dos cargos que ele vai dar, na lista de cargos do servidor.
## Avisos de venda [#avisos-de-venda]
- **Anúncio público:** um canal recebe cada venda, com modelo editável (`{jogador}`, `{comprador}`, `{itens}`, `{loja}`, `{valor}`). Só marca quem comprou.
- **Canal da equipe:** venda com valor, disputa, reembolso e entrega de cargo.
- **Enviar teste** manda uma mensagem de exemplo nos dois canais.
Pedidos manuais não são anunciados.
# Domínio próprio (https://docs.rivoo.gg/guias/dominio-proprio)
Em **Loja › Domínio**:
Digite o domínio (ex.: `loja.seuservidor.com`).
Crie no seu provedor de DNS os registros que a tela mostra: um `CNAME` e um `TXT` de verificação.
Clique em **Verificar agora**. Quando o DNS estiver certo, a Rivoo emite o certificado HTTPS sozinha. A propagação pode levar algum tempo; a Rivoo confere de novo a cada 15 minutos.
O endereço `seuservidor.rivoo.gg` continua funcionando. Para desligar o domínio, use **Remover**: a loja volta a responder só no endereço da Rivoo.
Pela API: [Ligar domínio próprio](/api/referencia/dominio-proprio/ligar-dominio-proprio).
# Editor da vitrine (https://docs.rivoo.gg/guias/editor-da-vitrine)
Em **Loja › Aparência** você monta a vitrine sem código.

- **Páginas:** início, categorias e páginas próprias (regras, equipe, FAQ).
- **Layout:** blocos que você liga, desliga e arrasta: faixa de aviso ou cupom, topo com logo, promoção com contagem regressiva, grade de produtos, categorias, escada de ranks, compras recentes, maior comprador do mês.
- **Global:** cores, fonte, logo, IP do servidor (com botão de copiar), Discord, jogadores online.
As mudanças ficam num **rascunho**: **Ver prévia** mostra como o comprador verá (também no celular) e **Publicar** coloca no ar. Dá para ter várias vitrines salvas, duplicar, exportar e importar.
Jogadores online e membros do Discord só aparecem acima de um mínimo (10 e 50 por padrão): número baixo afasta comprador.
# Meta da comunidade (https://docs.rivoo.gg/guias/meta-da-comunidade)
Em **Descontos › Meta**, defina um valor de vendas para o mês. A vitrine mostra uma barra com a porcentagem atingida (os valores em reais só aparecem se você ligar "Mostrar valores em reais").
- Contam as vendas pagas do mês (horário de Brasília), sem pedidos manuais e sem reembolsos. Dá para contar só alguns pacotes.
- **Mensal** (zera todo mês) ou **repetível** (recomeça cada vez que bate).
- Ao bater: **comandos em todos os servidores** (ex.: evento de XP em dobro), **mensagem no Discord** e uma **promoção na loja inteira**. Uma vez por ciclo.
- O histórico mostra cada vez que a meta foi batida.
# Presentes e gift cards (https://docs.rivoo.gg/guias/presentes-e-gift-cards)
## Presentear outro jogador [#presentear-outro-jogador]
Na vitrine, o comprador pode marcar um item como **presente** e informar o nick de quem recebe, com uma mensagem. A entrega roda para quem recebe, com as regras do pacote valendo para ele (requisitos, limite). Nos comandos, `{buyer}` é quem pagou e `{gift_message}` a mensagem. No jogo, o plugin aceita `/comprar presentear`.
Você liga ou desliga presentes na loja inteira e em cada pacote.
## Gift cards [#gift-cards]
Em **Descontos › Gift cards**:
- **Criar** um gift card (ou vários de uma vez, com exportação em CSV), com saldo e validade; **vender** como produto da loja.
- O comprador usa o código **no campo do cupom**: paga parte ou todo o pedido. O saldo que sobra fica no cartão.
- **Recarregar**, desativar e reenviar o e-mail com o código.
- Num reembolso, você pode **devolver em gift card** em vez de devolver o dinheiro.
- O comprador consulta o saldo na vitrine.
O painel mostra o total em aberto em gift cards (dinheiro que os jogadores ainda podem gastar).
# Produtos e categorias (https://docs.rivoo.gg/guias/produtos-e-categorias)
Em **Produtos** você cadastra o que vende. Cada produto tem três abas: **Geral**, **Entrega** e **Onde aparece**.

## Geral [#geral]
- **Nome, descrição e imagem.** Imagens pequenas de item do Minecraft (até 128 px) aparecem ampliadas sem borrar.
- **Cobrança:** **Única** (paga uma vez), **Assinatura** (renova sozinha) ou **As duas** (o comprador escolhe). Veja [Assinatura e Pix Automático](/guias/assinatura-e-pix-automatico).
- **Preço** em reais e **preço original** (aparece riscado, com o desconto calculado).
- **Validade (dias):** depois desse prazo o benefício acaba e as ações de fim rodam (por exemplo, tirar o VIP). Vazio = permanente.
- **Ícone:** no Minecraft, um item (`diamond_sword`) vira o ícone no menu do `/comprar`.
- **Tags:** até 6, aparecem no card da vitrine (`30 dias`, `Mais vendido`).
## Entrega [#entrega]
O que acontece quando o produto é pago, renovado, vence, é reembolsado ou entra em disputa: comandos no servidor, cargo no Discord, chave de licença ou arquivo. Veja [Plugin Minecraft](/entrega/plugin-minecraft) e as [variáveis de comando](/referencia-rapida/variaveis-de-comando).
## Regras de compra [#regras-de-compra]
- **Limite por cliente** e **estoque**.
- **Requisitos:** exigir (ou proibir) que o comprador já tenha outro pacote. Ex.: o kit de MVP só para quem é MVP.
- **Ofertas junto:** produtos sugeridos no checkout quando este está no carrinho.
## Categorias [#categorias]
Em **Produtos › Categorias** você agrupa os produtos como aparecem na loja (VIPs, Kits, Cash). Arraste para ordenar. Uma categoria **escalonada** vira uma escada de ranks: veja [Ranks e upgrade](/guias/ranks-e-upgrade).
Pela API: [Criar produto](/api/referencia/produtos/criar-produto), [Criar categoria](/api/referencia/categorias/criar-categoria).
# Ranks e upgrade (https://docs.rivoo.gg/guias/ranks-e-upgrade)
Marque a categoria como **escalonada** e ordene os ranks do menor para o maior (VIP, VIP+, MVP, MVP+). A loja passa a tratar a categoria como uma escada:
- Quem já tem um rank vê os de cima com o **preço do upgrade**: o valor do novo menos o que já pagou.
- O comprador só pode ter **um rank por categoria**. Ao subir, o anterior termina com o motivo `UPGRADE` e as ações de fim dele rodam (por exemplo, tirar o grupo antigo).
- Se o upgrade for reembolsado ou perder uma disputa, o **rank anterior volta**.
- Upgrade abaixo de R$ 1,00 não é cobrado: a loja mostra o motivo em vez de criar um Pix de centavos.
Dica: nos comandos, use a ação de **fim** do rank para remover o grupo, e a de **compra** para adicionar. Assim a troca no upgrade é automática.
Os eventos [`entitlement.ended`](/webhooks/eventos/entitlement.ended) (com `endReason: "UPGRADE"`) e [`entitlement.created`](/webhooks/eventos/entitlement.created) contam a troca para o seu sistema.
# Recuperação de carrinho (https://docs.rivoo.gg/guias/recuperacao-de-carrinho)
Em **Descontos › Automáticos**:
- **Lembrete de carrinho abandonado:** quem criou o pedido com e-mail e não pagou recebe um e-mail com um link que retoma o pedido (ou refaz, se expirou), com cupom opcional.
- **Agradecimento pós-compra:** quem pagou recebe um e-mail de agradecimento, com cupom opcional para a próxima compra.
O comprador pode se descadastrar pelo próprio e-mail. A tela mostra os números do mês: lembretes enviados, pedidos recuperados e valor recuperado.
# IA (https://docs.rivoo.gg/ia)
Dois jeitos de uma IA trabalhar com a Rivoo:
Em qualquer página, **Abrir na IA** (no topo) manda a página para o ChatGPT, o Claude ou o Cursor, e **Copiar Markdown** copia o texto para colar onde quiser.
# Markdown e llms.txt (https://docs.rivoo.gg/ia/llms)
Esta doc é feita para ser lida por gente e por IA.
- **Qualquer página em Markdown:** some `.md` ao fim da URL. Ex.: [/webhooks.md](/webhooks.md), [/api/referencia/pedidos/criar-pedido.md](/api/referencia/pedidos/criar-pedido.md). Pedidos com `Accept: text/markdown` recebem Markdown na URL normal.
- **Índice:** [/llms.txt](/llms.txt) lista todas as páginas com link para o Markdown de cada uma.
- **Tudo num arquivo:** [/llms-full.txt](/llms-full.txt), para colar no contexto de um agente.
- **API em OpenAPI:** [`https://api.rivoo.gg/openapi.json`](https://api.rivoo.gg/openapi.json), só com as rotas que uma chave de API alcança. Serve para gerar clientes e para agentes que entendem OpenAPI.
Para um agente que vai integrar com a Rivoo, um bom começo de prompt:
```text
Leia https://docs.rivoo.gg/llms.txt e use a API da Rivoo (https://api.rivoo.gg, chave em RIVOO_API_KEY)
para . Verifique a assinatura dos webhooks como em https://docs.rivoo.gg/webhooks.md.
```
# MCP (https://docs.rivoo.gg/ia/mcp)
O MCP (Model Context Protocol) deixa um assistente de IA consultar a sua conta Rivoo. Você pergunta em português ("quanto vendi essa semana?", "quais entregas falharam hoje?") e ele busca a resposta na sua loja.
**Endereço do servidor:** `https://mcp.rivoo.gg/mcp`
O acesso é **só leitura**: o assistente não cria, altera nem reembolsa nada. Você entra com sua conta Rivoo (OAuth), escolhe as lojas que ele pode ver e pode desconectar quando quiser.
## Conectar [#conectar]
Em **Configurações › Conectores › Adicionar conector personalizado**, cole `https://mcp.rivoo.gg/mcp` e clique em **Conectar**. Entre com sua conta Rivoo e autorize as lojas.
Em **Configurações › Conectores** (com o modo desenvolvedor ligado), crie um conector com a URL `https://mcp.rivoo.gg/mcp` e autenticação OAuth. Entre com sua conta Rivoo e autorize as lojas.
Em `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"rivoo": { "url": "https://mcp.rivoo.gg/mcp" }
}
}
```
Na primeira chamada o Cursor abre o login da Rivoo.
## O que ele consegue ver [#o-que-ele-consegue-ver]
| Ferramenta | O que faz |
| --- | --- |
| Listar lojas | Lojas que a conexão enxerga. |
| Visão geral das lojas | Resumo de vendas de cada loja. |
| Saldo da conta | Saldo disponível e a liberar (todas as lojas). |
| Vendas ao longo do tempo | Faturamento, pedidos ou reembolsos por dia, semana ou mês. |
| Listar pedidos / Ver pedido | Pedidos com status, itens e total. |
| Listar produtos / Ver produto | Catálogo com preço e situação. |
| Listar clientes / Ver cliente | Clientes da loja. |
| Listar entregas | Entregas no jogo, no Discord e manuais, com o último erro. |
Para automatizar ações (criar pedidos, cupons, reembolsos), use a [API](/api) com uma chave.
# Documentação da Rivoo (https://docs.rivoo.gg/)
A Rivoo é a loja do seu servidor de jogo: vitrine pronta, checkout com Pix, cartão e boleto, entrega automática no jogo e saque em reais.
## Para IA [#para-ia]
Toda página desta doc existe também em Markdown: some `.md` ao fim da URL (por exemplo, [/webhooks.md](/webhooks.md)). O índice completo está em [/llms.txt](/llms.txt) e tudo num arquivo só em [/llms-full.txt](/llms-full.txt).
# Changelog (https://docs.rivoo.gg/referencia-rapida/changelog)
## 31/10/2026 [#31102026]
- Documentação pública em `docs.rivoo.gg`, com a referência da API gerada de [`/openapi.json`](https://api.rivoo.gg/openapi.json).
- O `type` dos erros aponta para [Erros](/api/erros).
- `Idempotency-Key` documentada em todos os `POST`.
# Glossário (https://docs.rivoo.gg/referencia-rapida/glossario)
Uma vitrine com seus produtos, clientes e pedidos. Na API, o recurso é `project`; uma conta pode ter várias lojas, com saldo único.
Uma compra: itens, total, comprador e status. Pode vir da vitrine, de um link de pagamento, da API, do jogo ou do Discord.
O que o comprador ganhou com a compra (rank, VIP, item), com início e, se tiver, fim. Acaba por vencimento, upgrade, reembolso ou disputa.
O que a Rivoo faz quando o pedido é pago: comando no servidor, cargo no Discord, chave de licença, arquivo ou entrega manual.
Uma regra de entrega de um produto (ou da loja toda): o comando ou cargo e quando roda (compra, renovação, fim, reembolso, disputa).
Um servidor de jogo ligado à loja, pelo plugin ou pelo RCON, que recebe os comandos.
Contestação do pagamento pelo comprador: MED no Pix, chargeback no cartão. O valor fica retido até o resultado.
Um link com produtos fixos para mandar a alguém (único) ou divulgar (fixo, pago várias vezes).
Parceiro com código de desconto e comissão sobre as vendas que trouxe.
Pix recorrente autorizado uma vez pelo comprador: as renovações da assinatura são cobradas sozinhas.
# Status de pedido (https://docs.rivoo.gg/referencia-rapida/status-de-pedido)
| `status` | Quer dizer | Evento |
| --- | --- | --- |
| `OPEN` | Criado, esperando pagamento. | [`order.created`](/webhooks/eventos/order.created) |
| `PAID` | Pago. As entregas rodam. | [`order.paid`](/webhooks/eventos/order.paid) |
| `PARTIALLY_REFUNDED` | Parte do valor foi devolvida. | [`order.partially_refunded`](/webhooks/eventos/order.partially_refunded) |
| `REFUNDED` | Todo o valor foi devolvido. | [`order.refunded`](/webhooks/eventos/order.refunded) |
| `EXPIRED` | O prazo para pagar acabou. | [`order.expired`](/webhooks/eventos/order.expired) |
| `CANCELED` | Cancelado antes do pagamento. | [`order.canceled`](/webhooks/eventos/order.canceled) |
Um pedido pago pode ter uma **disputa** (MED no Pix, chargeback no cartão): ela não muda o `status`, aparece em `dispute` na lista de pedidos e nos eventos [`dispute.opened`](/webhooks/eventos/dispute.opened) e [`dispute.closed`](/webhooks/eventos/dispute.closed).
## Origem (`source`) [#origem-source]
`STOREFRONT` (vitrine), `API`, `PAYMENT_LINK` (link de pagamento), `PLUGIN` (comando no jogo), `DISCORD`, `SUBSCRIPTION` (renovação) e `MANUAL` (registrado à mão, sem cobrança).
# Variáveis de comando (https://docs.rivoo.gg/referencia-rapida/variaveis-de-comando)
Nos comandos que um produto roda no servidor, estas variáveis são trocadas pelo valor da compra:
| Variável | Vira | Exemplo |
| --- | --- | --- |
| `{player}` | Nick do jogador (ou o UUID, se não houver nick) | `Steve` |
| `{username}` | O mesmo que `{player}` | `Steve` |
| `{uuid}` | UUID do Minecraft, com hífens | `069a79f4-44e9-4726-a5be-fca90e38aaf5` |
| `{id}` | Id estável: UUID no Minecraft, SteamID64 em jogos Steam | `76561198000000000` |
| `{transaction}` | Id do pedido | `ord_mhexample0000vip0000001` |
| `{product}` | Nome do produto | `VIP+ 30 dias` |
| `{quantity}` | Quantidade comprada | `1` |
| `{price}` | Preço pago, em reais | `29.90` |
| `{currency}` | Moeda | `BRL` |
| `{sku}` | SKU do produto, se tiver | `vip-plus` |
| `{email}` | E-mail do comprador | `steve@exemplo.com` |
| `{expiresAt}` | Fim do benefício (dd/mm/aaaa) | `30/11/2026` |
| `{date}` | Data de hoje (dd/mm/aaaa, horário de Brasília) | `31/10/2026` |
| `{server}` | Nome do servidor que roda o comando | `Survival` |
| `{buyer}` | Nick de quem pagou (num presente, é quem deu) | `Alex` |
| `{gift_message}` | Mensagem do presente | `Feliz aniversário!` |
## Exemplos [#exemplos]
```text
lp user {player} parent addtemp vip 30d
give {player} diamond 64
broadcast {player} virou VIP! Obrigado pelo apoio.
```
## Segurança [#segurança]
Só valores em formato seguro entram no comando: nick com letras, números e `_` (até 16), UUID e e-mail válidos. Um comando que usa `{player}` não roda se o nick tiver caracteres estranhos (`nome#tag`, link): a entrega fica como falha em vez de rodar com o jogador em branco. Variáveis desconhecidas ficam como foram escritas.
Com **esperar o jogador estar online** ligado (o padrão), o comando espera ele entrar no servidor.
# delivery.failed (https://docs.rivoo.gg/webhooks/eventos/delivery.failed)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Entrega falhou.** Um comando não pôde ser executado no servidor do jogo. `error` traz o nome do servidor e a resposta dele.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "delivery.failed",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "del_mhexample0000vip0000001",
"orderId": "ord_mhexample0000vip0000001",
"trigger": "PURCHASED",
"error": "Survival: Unknown command"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# dispute.closed (https://docs.rivoo.gg/webhooks/eventos/dispute.closed)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Disputa encerrada.** A disputa terminou. `status` diz o resultado: `WON` (o valor volta ao seu saldo), `LOST` ou `CANCELED`.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "dispute.closed",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "dp_mhexample0000vip00000001",
"orderId": "ord_mhexample0000vip0000001",
"paymentId": "pay_mhexample0000vip0000001",
"kind": "MED",
"status": "WON",
"amountCents": 2990
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# dispute.opened (https://docs.rivoo.gg/webhooks/eventos/dispute.opened)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Disputa aberta.** O comprador contestou o pagamento: MED no Pix ou chargeback no cartão. O valor fica retido até o fim.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "dispute.opened",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "dp_mhexample0000vip00000001",
"orderId": "ord_mhexample0000vip0000001",
"paymentId": "pay_mhexample0000vip0000001",
"kind": "MED",
"status": "OPEN",
"amountCents": 2990
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# entitlement.created (https://docs.rivoo.gg/webhooks/eventos/entitlement.created)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Benefício entregue.** O comprador ganhou um benefício (rank, VIP, item) por uma compra ou renovação. Um evento por benefício.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "entitlement.created",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ent_mhexample0000vip0000001",
"status": "ACTIVE",
"productId": "prod_mhexample0000vip00001",
"orderItemId": "oitem_mhexample0000vip00001",
"customerId": "cus_mhexample0000steve00001",
"quantity": 1,
"recipient": {
"kind": "MINECRAFT",
"ref": "Steve",
"name": "Steve"
},
"discordUserId": null,
"subscriptionId": null,
"expiresAt": "2026-11-30T21:04:51.000Z",
"endReason": null,
"endedAt": null
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# entitlement.ended (https://docs.rivoo.gg/webhooks/eventos/entitlement.ended)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Benefício encerrado.** Um benefício acabou. `endReason`: `EXPIRED`, `REFUND`, `DISPUTE`, `UPGRADE`, `SUBSCRIPTION_ENDED` ou `MANUAL`.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "entitlement.ended",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ent_mhexample0000vip0000001",
"status": "EXPIRED",
"productId": "prod_mhexample0000vip00001",
"orderItemId": "oitem_mhexample0000vip00001",
"customerId": "cus_mhexample0000steve00001",
"quantity": 1,
"recipient": {
"kind": "MINECRAFT",
"ref": "Steve",
"name": "Steve"
},
"discordUserId": null,
"subscriptionId": null,
"expiresAt": "2026-11-30T21:04:51.000Z",
"endReason": "EXPIRED",
"endedAt": "2026-11-30T21:04:51.000Z"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# entitlement.restored (https://docs.rivoo.gg/webhooks/eventos/entitlement.restored)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Benefício restaurado.** Um benefício encerrado voltou a valer (ex.: disputa ganha, ou rank anterior devolvido quando o upgrade foi reembolsado).
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "entitlement.restored",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ent_mhexample0000vip0000001",
"status": "ACTIVE",
"productId": "prod_mhexample0000vip00001",
"orderItemId": "oitem_mhexample0000vip00001",
"customerId": "cus_mhexample0000steve00001",
"quantity": 1,
"recipient": {
"kind": "MINECRAFT",
"ref": "Steve",
"name": "Steve"
},
"discordUserId": null,
"subscriptionId": null,
"expiresAt": "2026-11-30T21:04:51.000Z",
"endReason": null,
"endedAt": null
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# order.canceled (https://docs.rivoo.gg/webhooks/eventos/order.canceled)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pedido cancelado.** Um pedido em aberto foi cancelado antes do pagamento.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "order.canceled",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ord_mhexample0000vip0000001"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# order.created (https://docs.rivoo.gg/webhooks/eventos/order.created)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pedido criado.** Um pedido foi criado (pela vitrine, API, link de pagamento, plugin, Discord, assinatura ou à mão). Ainda não foi pago.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "order.created",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ord_mhexample0000vip0000001",
"source": "STOREFRONT",
"totalCents": 2990
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# order.expired (https://docs.rivoo.gg/webhooks/eventos/order.expired)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pedido expirado.** O prazo para pagar acabou sem pagamento.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "order.expired",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ord_mhexample0000vip0000001"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# order.paid (https://docs.rivoo.gg/webhooks/eventos/order.paid)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pedido pago.** O pagamento do pedido foi confirmado. É o evento para liberar o que foi comprado no seu sistema. `paymentId` vem `null` em pedidos grátis e manuais.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "order.paid",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ord_mhexample0000vip0000001",
"source": "STOREFRONT",
"totalCents": 2990,
"paymentId": "pay_mhexample0000vip0000001"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# order.partially_refunded (https://docs.rivoo.gg/webhooks/eventos/order.partially_refunded)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pedido reembolsado em parte.** Parte do valor pago foi devolvida. `refundedCents` é o total devolvido até agora.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "order.partially_refunded",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ord_mhexample0000vip0000001",
"totalCents": 2990,
"refundedCents": 1000,
"refundId": "rfd_mhexample0000vip0000001"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# order.refunded (https://docs.rivoo.gg/webhooks/eventos/order.refunded)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pedido reembolsado.** O valor pago foi devolvido por inteiro.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "order.refunded",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ord_mhexample0000vip0000001",
"totalCents": 2990,
"refundedCents": 2990,
"refundId": "rfd_mhexample0000vip0000001"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# order.updated (https://docs.rivoo.gg/webhooks/eventos/order.updated)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pedido alterado.** Um pedido em aberto mudou de itens ou de cupom antes do pagamento; o total foi recalculado.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "order.updated",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "ord_mhexample0000vip0000001",
"items": [
{
"productId": "prod_mhexample0000vip00001",
"quantity": 2
}
],
"totalCents": 5980
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# payment.succeeded (https://docs.rivoo.gg/webhooks/eventos/payment.succeeded)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Pagamento aprovado.** Um pagamento (Pix, cartão ou boleto) foi aprovado e pagou o pedido.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "payment.succeeded",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "pay_mhexample0000vip0000001",
"orderId": "ord_mhexample0000vip0000001",
"method": "PIX",
"amountCents": 2990
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# payout.failed (https://docs.rivoo.gg/webhooks/eventos/payout.failed)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Saque falhou.** O saque não foi concluído e o valor voltou ao saldo. `failureReason` diz o motivo.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "payout.failed",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "po_mhexample0000saque000001",
"status": "FAILED",
"amountCents": 50000,
"feeCents": 100,
"failureReason": "Conta de destino recusou o Pix",
"reviewReason": null
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# payout.paid (https://docs.rivoo.gg/webhooks/eventos/payout.paid)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Saque pago.** O saque caiu na conta do titular. Vai para todas as lojas da conta.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "payout.paid",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "po_mhexample0000saque000001",
"status": "PAID",
"amountCents": 50000,
"feeCents": 100,
"failureReason": null,
"reviewReason": null
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# refund.failed (https://docs.rivoo.gg/webhooks/eventos/refund.failed)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Reembolso falhou.** Não foi possível devolver o dinheiro. O valor continua retido; veja o pedido no painel.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "refund.failed",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "rfd_mhexample0000vip0000001",
"orderId": "ord_mhexample0000vip0000001",
"paymentId": "pay_mhexample0000vip0000001",
"amountCents": 2990,
"status": "FAILED",
"reason": null,
"requestedBy": "API_KEY"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# refund.succeeded (https://docs.rivoo.gg/webhooks/eventos/refund.succeeded)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Reembolso concluído.** O dinheiro chegou de volta ao comprador.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "refund.succeeded",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "rfd_mhexample0000vip0000001",
"orderId": "ord_mhexample0000vip0000001",
"paymentId": "pay_mhexample0000vip0000001",
"amountCents": 2990,
"status": "SUCCEEDED",
"reason": "Pedido do cliente",
"requestedBy": "USER"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# subscription.canceled (https://docs.rivoo.gg/webhooks/eventos/subscription.canceled)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Assinatura cancelada.** A assinatura foi cancelada. Com `atPeriodEnd: true` o benefício vale até `currentPeriodEnd`; com `false` acaba agora. `source`: `MERCHANT`, `CUSTOMER` ou `SYSTEM`.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "subscription.canceled",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "sub_mhexample0000vip0000001",
"atPeriodEnd": true,
"source": "CUSTOMER",
"reason": null,
"currentPeriodEnd": "2026-11-30T21:04:13.000Z"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# subscription.created (https://docs.rivoo.gg/webhooks/eventos/subscription.created)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Assinatura criada.** Uma assinatura foi criada, junto com o primeiro pedido dela.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "subscription.created",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "sub_mhexample0000vip0000001",
"customerId": "cus_mhexample0000steve00001",
"priceId": "price_mhexample0000vip0001",
"orderId": "ord_mhexample0000vip0000001"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# subscription.ended (https://docs.rivoo.gg/webhooks/eventos/subscription.ended)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Assinatura encerrada.** A assinatura acabou de vez e os benefícios foram retirados. `reason`: `canceled`, `unpaid` ou `incomplete_expired`.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "subscription.ended",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "sub_mhexample0000vip0000001",
"reason": "canceled"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# subscription.past_due (https://docs.rivoo.gg/webhooks/eventos/subscription.past_due)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Assinatura atrasada.** O período acabou sem a renovação paga. A Rivoo tenta cobrar de novo antes de encerrar.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "subscription.past_due",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "sub_mhexample0000vip0000001",
"currentPeriodEnd": "2026-11-30T21:04:13.000Z"
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# subscription.renewed (https://docs.rivoo.gg/webhooks/eventos/subscription.renewed)
{/* Generated by scripts/webhook-pages.mjs from data/webhook-events.json. Edit the JSON, not this file. */}
**Assinatura renovada.** A cobrança de um novo período foi paga.
## Corpo enviado [#corpo-enviado]
`POST` para a URL do seu webhook, com os headers `webhook-id`, `webhook-timestamp` e `webhook-signature` ([como verificar](/webhooks#verificar-a-assinatura)).
```json
{
"id": "evt_mhexample0000event00001",
"type": "subscription.renewed",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": {
"object": {
"id": "sub_mhexample0000vip0000001",
"orderId": "ord_mhexample0000vip0000002",
"periodStart": "2026-11-30T21:04:13.000Z",
"periodEnd": "2026-12-30T21:04:13.000Z",
"amountCents": 2990
}
}
}
```
O `id` do evento é o mesmo em todas as tentativas: use-o para não processar duas vezes.
# Webhooks (https://docs.rivoo.gg/webhooks)
Um webhook é uma URL sua que a Rivoo chama (`POST`, JSON) sempre que algo acontece na loja: pedido pago, reembolso, disputa, renovação de assinatura. É o jeito certo de liberar uma compra no seu sistema, em vez de ficar consultando a API.
## Cadastrar [#cadastrar]
No painel, abra **Integrações › Webhooks** e clique em **Adicionar**. Ou pela API: [Criar webhook](/api/referencia/webhooks/criar-webhook).
Informe a URL (HTTPS, pública) e os eventos que ela recebe. Sem eventos marcados, ela recebe todos.
Guarde o **segredo de assinatura** (`whsec_...`). Ele aparece só nesta hora e serve para conferir que o pedido veio da Rivoo.
## O que chega [#o-que-chega]
```http
POST /webhooks/rivoo HTTP/1.1
Content-Type: application/json
User-Agent: Rivoo-Webhooks/1
webhook-id: evt_mhexample0000event00001
webhook-timestamp: 1793567091
webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4=
{
"id": "evt_mhexample0000event00001",
"type": "order.paid",
"createdAt": "2026-10-31T21:04:51.000Z",
"data": { "object": { "id": "ord_mhexample0000vip0000001", "source": "STOREFRONT", "totalCents": 2990, "paymentId": "pay_mhexample0000vip0000001" } }
}
```
`data.object` muda conforme o evento: veja a [lista de eventos](/webhooks/eventos/order.paid). Valores em dinheiro vêm em centavos (`2990` = R$ 29,90).
## Verificar a assinatura [#verificar-a-assinatura]
O formato segue o padrão aberto [Standard Webhooks](https://www.standardwebhooks.com). A assinatura é um HMAC-SHA256 de `webhook-id.webhook-timestamp.corpo`, com a chave sendo o segredo sem o prefixo `whsec_`, decodificado de base64. Compare com cada assinatura do header (separadas por espaço, cada uma com o prefixo `v1,`): durante a troca do segredo chegam duas.
Use o corpo **cru**, exatamente como chegou, antes de qualquer parse de JSON. E recuse timestamps com mais de 5 minutos de diferença, para ninguém reenviar um pedido antigo.
```js
import { createHmac, timingSafeEqual } from 'node:crypto';
// rawBody: o corpo como string, antes do JSON.parse
export function verify(rawBody, headers, secret = process.env.RIVOO_WEBHOOK_SECRET) {
const id = headers['webhook-id'];
const ts = Number(headers['webhook-timestamp']);
if (Math.abs(Date.now() / 1000 - ts) > 300) return false;
const key = Buffer.from(secret.replace(/^whsec_/, ''), 'base64');
const expected = createHmac('sha256', key).update(`${id}.${ts}.${rawBody}`).digest();
return headers['webhook-signature'].split(' ').some((sig) => {
const got = Buffer.from(sig.replace(/^v1,/, ''), 'base64');
return got.length === expected.length && timingSafeEqual(got, expected);
});
}
```
```python
import base64, hashlib, hmac, os, time
def verify(raw_body: bytes, headers, secret=os.environ["RIVOO_WEBHOOK_SECRET"]) -> bool:
msg_id = headers["webhook-id"]
ts = int(headers["webhook-timestamp"])
if abs(time.time() - ts) > 300:
return False
key = base64.b64decode(secret.removeprefix("whsec_"))
content = f"{msg_id}.{ts}.".encode() + raw_body
expected = base64.b64encode(hmac.new(key, content, hashlib.sha256).digest()).decode()
return any(
hmac.compare_digest(sig.removeprefix("v1,"), expected)
for sig in headers["webhook-signature"].split(" ")
)
```
```php
300) return false;
$key = base64_decode(preg_replace('/^whsec_/', '', $secret));
$expected = base64_encode(hash_hmac('sha256', "$id.$ts.$rawBody", $key, true));
foreach (explode(' ', $headers['webhook-signature']) as $sig) {
if (hash_equals($expected, preg_replace('/^v1,/', '', $sig))) return true;
}
return false;
}
```
## Responder [#responder]
Responda **2xx em até 10 segundos**. Faça o trabalho pesado depois (fila), não antes de responder. Redirecionamentos não são seguidos.
## Novas tentativas [#novas-tentativas]
Se a resposta não for 2xx (ou demorar mais de 10 s), a Rivoo tenta de novo: 8 tentativas no total, depois de 1 min, 5 min, 30 min, 2 h, 6 h, 12 h e 24 h. O `webhook-id` é o mesmo em todas: guarde os ids já processados e ignore repetidos.
Uma URL que falha seguido por mais de 3 dias é desativada, e você recebe um aviso no painel. Reative em **Integrações › Webhooks** depois de corrigir.
## Testar [#testar]
Use **Enviar teste** no webhook (ou [Testar webhook](/api/referencia/webhooks/testar-webhook)) para receber um evento de exemplo. Em [Envios do webhook](/api/referencia/webhooks/envios-do-webhook) você vê cada tentativa com o código de resposta.
## Trocar o segredo [#trocar-o-segredo]
[Trocar segredo do webhook](/api/referencia/webhooks/trocar-segredo-do-webhook) gera um segredo novo. Por 24 horas as mensagens chegam assinadas com os dois (duas assinaturas no header), para você atualizar sem perder eventos.
# Ver configurações (https://docs.rivoo.gg/api/referencia/configuracoes/ver-configuracoes)
`GET https://api.rivoo.gg/v1/settings`
Devolve as configurações da loja: nome, moeda, e-mails e regras de checkout.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/settings" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar configurações (https://docs.rivoo.gg/api/referencia/configuracoes/alterar-configuracoes)
`PATCH https://api.rivoo.gg/v1/settings`
Altera só os campos enviados das configurações da loja.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"commandExpiryDays": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 365
},
"alwaysAskRecipient": {
"type": "boolean"
},
"giftingEnabled": {
"type": "boolean"
},
"playerIdLabel": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"playerIdHelp": {
"type": "string",
"nullable": true,
"maxLength": 200
},
"playerIdFormat": {
"type": "string",
"enum": [
"TEXT",
"NUMBER",
"STEAM_TRADE_URL",
"STEAM_ID64"
]
},
"refundPolicy": {
"type": "string",
"enum": [
"NONE",
"UNCLAIMED_7_DAYS"
]
},
"discountStacking": {
"type": "string",
"enum": [
"PER_ITEM",
"CART_AFTER_AUTOMATIC",
"CART_BEFORE_AUTOMATIC"
]
},
"checkoutMethods": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"enum": [
"PIX",
"PIX_AUTOMATIC",
"CARD",
"BOLETO"
]
}
},
"checkoutTheme": {
"type": "string",
"nullable": true,
"enum": [
"LIGHT",
"DARK",
"SYSTEM"
]
},
"checkoutRadius": {
"type": "string",
"nullable": true,
"enum": [
"NONE",
"SM",
"MD",
"LG",
"FULL"
]
},
"checkoutMessage": {
"type": "string",
"nullable": true,
"maxLength": 500
},
"checkoutSuggestions": {
"type": "boolean"
},
"checkoutLayout": {
"type": "string",
"enum": [
"COMPACT",
"SPLIT"
]
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/settings" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Listar chaves de API (https://docs.rivoo.gg/api/referencia/chaves-de-api/listar-chaves-de-api)
`GET https://api.rivoo.gg/v1/api-keys`
Lista as chaves da loja com prefixo, permissões e último uso. O segredo nunca volta.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/api-keys" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar categorias (https://docs.rivoo.gg/api/referencia/categorias/listar-categorias)
`GET https://api.rivoo.gg/v1/categories`
Lista as categorias da loja na ordem da vitrine.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `parentId` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/categories" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar categoria (https://docs.rivoo.gg/api/referencia/categorias/criar-categoria)
`POST https://api.rivoo.gg/v1/categories`
Cria uma categoria. Categorias escalonadas viram uma escada de ranks com upgrade pagando a diferença.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"description": {
"type": "string",
"maxLength": 500
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"kind": {
"type": "string",
"enum": [
"STANDARD",
"TIERED"
]
},
"parentId": {
"type": "string"
}
},
"required": [
"name"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/categories" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'
```
## Resposta 201
# Ordenar categorias (https://docs.rivoo.gg/api/referencia/categorias/ordenar-categorias)
`PUT https://api.rivoo.gg/v1/categories/order`
Define a ordem das categorias na vitrine pela lista de ids enviada.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"parentId": {
"type": "string",
"nullable": true
},
"categoryIds": {
"maxItems": 500,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"categoryIds"
]
}
```
## Exemplo
```bash
curl -X PUT "https://api.rivoo.gg/v1/categories/order" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"categoryIds":["string"]}'
```
## Resposta 204
# Ver categoria (https://docs.rivoo.gg/api/referencia/categorias/ver-categoria)
`GET https://api.rivoo.gg/v1/categories/{id}`
Devolve uma categoria.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/categories/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar categoria (https://docs.rivoo.gg/api/referencia/categorias/alterar-categoria)
`PATCH https://api.rivoo.gg/v1/categories/{id}`
Altera só os campos enviados da categoria.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"description": {
"type": "string",
"nullable": true,
"maxLength": 500
},
"imageUrl": {
"type": "string",
"nullable": true,
"format": "uri"
},
"kind": {
"type": "string",
"enum": [
"STANDARD",
"TIERED"
]
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/categories/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Arquivar categoria (https://docs.rivoo.gg/api/referencia/categorias/arquivar-categoria)
`DELETE https://api.rivoo.gg/v1/categories/{id}`
Tira a categoria da vitrine. Pedidos antigos continuam apontando para ela.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/categories/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Listar produtos (https://docs.rivoo.gg/api/referencia/produtos/listar-produtos)
`GET https://api.rivoo.gg/v1/products`
Lista os produtos da loja, com busca e filtro por categoria.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `status` | query | não | |
| `categoryId` | query | não | |
| `search` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar produto (https://docs.rivoo.gg/api/referencia/produtos/criar-produto)
`POST https://api.rivoo.gg/v1/products`
Cria um produto com preço em centavos, imagem, descrição e regras de compra.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": {
"type": "string",
"maxLength": 5000
},
"sku": {
"type": "string",
"pattern": "^[A-Za-z0-9._-]{1,64}$"
},
"price": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
},
"compareAt": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"icon": {
"type": "string",
"maxLength": 60
},
"gallery": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
},
"videoUrl": {
"type": "string",
"format": "uri"
},
"tags": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 30
}
},
"accessDays": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 3650
},
"categoryId": {
"type": "string"
},
"featured": {
"type": "boolean"
},
"listed": {
"type": "boolean"
},
"badge": {
"type": "string",
"nullable": true,
"minLength": 1,
"maxLength": 20
},
"accentColor": {
"type": "string",
"nullable": true,
"pattern": "^#[0-9a-fA-F]{6}$"
},
"visibleFrom": {
"type": "string",
"nullable": true
},
"visibleUntil": {
"type": "string",
"nullable": true
},
"requireLogin": {
"type": "boolean"
},
"limitTotal": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 1000000
},
"limitPerCustomer": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 1000000
},
"limitCountsExpired": {
"type": "boolean"
},
"singleQuantity": {
"type": "boolean"
},
"giftCardValue": {
"nullable": true,
"type": "object",
"allOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
}
]
},
"giftCardDays": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 3650
},
"acceptsGiftCard": {
"type": "boolean"
},
"giftable": {
"type": "boolean"
}
},
"required": [
"name",
"description",
"price"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/products" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","price":{"amount":0}}'
```
## Resposta 201
# Ordenar produtos (https://docs.rivoo.gg/api/referencia/produtos/ordenar-produtos)
`PUT https://api.rivoo.gg/v1/products/order`
Define a ordem dos produtos dentro da categoria pela lista de ids enviada.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"categoryId": {
"type": "string",
"nullable": true
},
"productIds": {
"maxItems": 1000,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"productIds"
]
}
```
## Exemplo
```bash
curl -X PUT "https://api.rivoo.gg/v1/products/order" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"productIds":["string"]}'
```
## Resposta 204
# Ver produto (https://docs.rivoo.gg/api/referencia/produtos/ver-produto)
`GET https://api.rivoo.gg/v1/products/{id}`
Devolve um produto com preços, regras e ações de entrega.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar produto (https://docs.rivoo.gg/api/referencia/produtos/alterar-produto)
`PATCH https://api.rivoo.gg/v1/products/{id}`
Altera só os campos enviados do produto.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": {
"type": "string",
"maxLength": 5000
},
"sku": {
"type": "string",
"nullable": true,
"pattern": "^[A-Za-z0-9._-]{1,64}$"
},
"imageUrl": {
"type": "string",
"nullable": true,
"format": "uri"
},
"icon": {
"type": "string",
"nullable": true,
"maxLength": 60
},
"gallery": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
},
"videoUrl": {
"type": "string",
"nullable": true,
"format": "uri"
},
"tags": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 30
}
},
"accessDays": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 3650
},
"categoryId": {
"type": "string",
"nullable": true
},
"featured": {
"type": "boolean"
},
"listed": {
"type": "boolean"
},
"badge": {
"type": "string",
"nullable": true,
"minLength": 1,
"maxLength": 20
},
"accentColor": {
"type": "string",
"nullable": true,
"pattern": "^#[0-9a-fA-F]{6}$"
},
"visibleFrom": {
"type": "string",
"nullable": true
},
"visibleUntil": {
"type": "string",
"nullable": true
},
"requireLogin": {
"type": "boolean"
},
"limitTotal": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 1000000
},
"limitPerCustomer": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 1000000
},
"limitCountsExpired": {
"type": "boolean"
},
"singleQuantity": {
"type": "boolean"
},
"giftCardValue": {
"nullable": true,
"type": "object",
"allOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
}
]
},
"giftCardDays": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 3650
},
"acceptsGiftCard": {
"type": "boolean"
},
"giftable": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"ACTIVE",
"ARCHIVED"
]
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/products/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Arquivar produto (https://docs.rivoo.gg/api/referencia/produtos/arquivar-produto)
`DELETE https://api.rivoo.gg/v1/products/{id}`
Tira o produto da vitrine. Pedidos e benefícios já entregues não mudam.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/products/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Ver requisitos do produto (https://docs.rivoo.gg/api/referencia/produtos/ver-requisitos-do-produto)
`GET https://api.rivoo.gg/v1/products/{id}/requirements`
Pacotes que o comprador precisa ter (ou não ter) para comprar este produto.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products/{id}/requirements" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Definir requisitos do produto (https://docs.rivoo.gg/api/referencia/produtos/definir-requisitos-do-produto)
`PUT https://api.rivoo.gg/v1/products/{id}/requirements`
Substitui a lista de pacotes exigidos ou proibidos para comprar este produto.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"productIds": {
"uniqueItems": true,
"maxItems": 20,
"type": "array",
"items": {
"type": "string"
}
},
"requiresAll": {
"type": "boolean"
}
},
"required": [
"productIds",
"requiresAll"
]
}
```
## Exemplo
```bash
curl -X PUT "https://api.rivoo.gg/v1/products/{id}/requirements" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"productIds":["string"],"requiresAll":true}'
```
## Resposta 200
# Ver ofertas do produto (https://docs.rivoo.gg/api/referencia/produtos/ver-ofertas-do-produto)
`GET https://api.rivoo.gg/v1/products/{id}/upsells`
Produtos oferecidos junto no checkout quando este está no carrinho.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products/{id}/upsells" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Definir ofertas do produto (https://docs.rivoo.gg/api/referencia/produtos/definir-ofertas-do-produto)
`PUT https://api.rivoo.gg/v1/products/{id}/upsells`
Substitui os produtos oferecidos junto no checkout.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"productIds": {
"uniqueItems": true,
"maxItems": 5,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"productIds"
]
}
```
## Exemplo
```bash
curl -X PUT "https://api.rivoo.gg/v1/products/{id}/upsells" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"productIds":["string"]}'
```
## Resposta 200
# Listar preços (https://docs.rivoo.gg/api/referencia/precos/listar-precos)
`GET https://api.rivoo.gg/v1/products/{productId}/prices`
Preços do produto: avulso e de assinatura (mensal, trimestral…).
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `active` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products/{productId}/prices" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar preço (https://docs.rivoo.gg/api/referencia/precos/criar-preco)
`POST https://api.rivoo.gg/v1/products/{productId}/prices`
Adiciona um preço ao produto, em centavos, avulso ou recorrente.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"ONE_TIME",
"RECURRING"
]
},
"amount": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
},
"compareAt": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
},
"interval": {
"type": "string",
"enum": [
"YEAR",
"WEEK",
"DAY",
"MONTH"
]
},
"intervalCount": {
"type": "number",
"minimum": 1,
"maximum": 12
},
"makeDefault": {
"type": "boolean"
}
},
"required": [
"type",
"amount"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/products/{productId}/prices" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"ONE_TIME","amount":{"amount":0}}'
```
## Resposta 201
# Alterar preço (https://docs.rivoo.gg/api/referencia/precos/alterar-preco)
`PATCH https://api.rivoo.gg/v1/products/{productId}/prices/{priceId}`
Altera ou desativa um preço. Assinaturas existentes mantêm o valor contratado.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `priceId` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"active": {
"type": "boolean"
}
},
"required": [
"active"
]
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/products/{productId}/prices/{priceId}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"active":true}'
```
## Resposta 200
# Listar chaves de licença (https://docs.rivoo.gg/api/referencia/chaves-de-licenca/listar-chaves-de-licenca)
`GET https://api.rivoo.gg/v1/products/{productId}/license-keys`
Estoque de chaves do produto: livres, entregues e revogadas.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `status` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products/{productId}/license-keys" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Importar chaves de licença (https://docs.rivoo.gg/api/referencia/chaves-de-licenca/importar-chaves-de-licenca)
`POST https://api.rivoo.gg/v1/products/{productId}/license-keys`
Adiciona chaves ao estoque. Cada compra paga recebe uma chave por e-mail.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"keys": {
"minItems": 1,
"maxItems": 1000,
"type": "array",
"items": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
}
},
"required": [
"keys"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/products/{productId}/license-keys" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keys":["string"]}'
```
## Resposta 201
# Revogar chave de licença (https://docs.rivoo.gg/api/referencia/chaves-de-licenca/revogar-chave-de-licenca)
`POST https://api.rivoo.gg/v1/products/{productId}/license-keys/{keyId}/revoke`
Marca a chave como revogada; ela não é entregue de novo.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `keyId` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/products/{productId}/license-keys/{keyId}/revoke" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar arquivos (https://docs.rivoo.gg/api/referencia/arquivos/listar-arquivos)
`GET https://api.rivoo.gg/v1/products/{productId}/files`
Arquivos que o comprador baixa pelo recibo depois do pagamento.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products/{productId}/files" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Adicionar arquivo (https://docs.rivoo.gg/api/referencia/arquivos/adicionar-arquivo)
`POST https://api.rivoo.gg/v1/products/{productId}/files`
Anexa um arquivo ao produto para download após a compra.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"contentType": {
"type": "string",
"pattern": "^[\\w.+-]+\\/[\\w.+-]+$"
},
"sizeBytes": {
"type": "number",
"minimum": 1,
"maximum": 104857600
}
},
"required": [
"name",
"contentType",
"sizeBytes"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/products/{productId}/files" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","contentType":"string","sizeBytes":1}'
```
## Resposta 201
# Remover arquivo (https://docs.rivoo.gg/api/referencia/arquivos/remover-arquivo)
`DELETE https://api.rivoo.gg/v1/products/{productId}/files/{fileId}`
Remove o arquivo do produto. Links já enviados deixam de funcionar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `fileId` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/products/{productId}/files/{fileId}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Listar cupons e promoções (https://docs.rivoo.gg/api/referencia/cupons-e-promocoes/listar-cupons-e-promocoes)
`GET https://api.rivoo.gg/v1/discounts`
Lista cupons (com código) e promoções automáticas da loja.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `method` | query | não | |
| `active` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/discounts" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar cupom ou promoção (https://docs.rivoo.gg/api/referencia/cupons-e-promocoes/criar-cupom-ou-promocao)
`POST https://api.rivoo.gg/v1/discounts`
Cria um desconto em porcentagem ou valor, com prazo, limite de usos, gasto mínimo e produtos.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"AUTOMATIC",
"CODE"
]
},
"code": {
"type": "string",
"pattern": "^[A-Z0-9_-]{3,32}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"kind": {
"type": "string",
"enum": [
"PERCENT",
"FIXED"
]
},
"value": {
"type": "number",
"minimum": 1,
"maximum": 2147483647
},
"scope": {
"type": "string",
"enum": [
"ALL",
"CATEGORIES",
"PRODUCTS"
]
},
"categoryIds": {
"uniqueItems": true,
"maxItems": 100,
"type": "array",
"items": {
"type": "string"
}
},
"productIds": {
"uniqueItems": true,
"maxItems": 500,
"type": "array",
"items": {
"type": "string"
}
},
"startsAt": {
"type": "string",
"nullable": true
},
"endsAt": {
"type": "string",
"nullable": true
},
"maxUses": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 2147483647
},
"maxUsesPerCustomer": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 2147483647
},
"minSubtotal": {
"nullable": true,
"type": "object",
"allOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
}
]
},
"customerId": {
"type": "string",
"nullable": true
},
"requiredProductIds": {
"uniqueItems": true,
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"startCommands": {
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
"endCommands": {
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
"active": {
"type": "boolean"
}
},
"required": [
"method",
"name",
"kind",
"value"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/discounts" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"method":"AUTOMATIC","name":"string","kind":"PERCENT","value":1}'
```
## Resposta 201
# Ver cupom ou promoção (https://docs.rivoo.gg/api/referencia/cupons-e-promocoes/ver-cupom-ou-promocao)
`GET https://api.rivoo.gg/v1/discounts/{id}`
Devolve um desconto com as regras e o número de usos.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/discounts/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar cupom ou promoção (https://docs.rivoo.gg/api/referencia/cupons-e-promocoes/alterar-cupom-ou-promocao)
`PATCH https://api.rivoo.gg/v1/discounts/{id}`
Altera só os campos enviados do desconto.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z0-9_-]{3,32}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"kind": {
"type": "string",
"enum": [
"PERCENT",
"FIXED"
]
},
"value": {
"type": "number",
"minimum": 1,
"maximum": 2147483647
},
"scope": {
"type": "string",
"enum": [
"ALL",
"CATEGORIES",
"PRODUCTS"
]
},
"categoryIds": {
"uniqueItems": true,
"maxItems": 100,
"type": "array",
"items": {
"type": "string"
}
},
"productIds": {
"uniqueItems": true,
"maxItems": 500,
"type": "array",
"items": {
"type": "string"
}
},
"startsAt": {
"type": "string",
"nullable": true
},
"endsAt": {
"type": "string",
"nullable": true
},
"maxUses": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 2147483647
},
"maxUsesPerCustomer": {
"type": "number",
"nullable": true,
"minimum": 1,
"maximum": 2147483647
},
"minSubtotal": {
"nullable": true,
"type": "object",
"allOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"currency": {
"type": "string",
"enum": [
"BRL"
]
}
},
"required": [
"amount"
]
}
]
},
"customerId": {
"type": "string",
"nullable": true
},
"requiredProductIds": {
"uniqueItems": true,
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"startCommands": {
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
"endCommands": {
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
"active": {
"type": "boolean"
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/discounts/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Arquivar cupom ou promoção (https://docs.rivoo.gg/api/referencia/cupons-e-promocoes/arquivar-cupom-ou-promocao)
`DELETE https://api.rivoo.gg/v1/discounts/{id}`
Encerra o desconto. Pedidos que já usaram continuam com ele.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/discounts/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Usos do cupom (https://docs.rivoo.gg/api/referencia/cupons-e-promocoes/usos-do-cupom)
`GET https://api.rivoo.gg/v1/discounts/{id}/redemptions`
Pedidos que usaram o desconto, com o valor descontado em cada um.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/discounts/{id}/redemptions" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar clientes (https://docs.rivoo.gg/api/referencia/clientes/listar-clientes)
`GET https://api.rivoo.gg/v1/customers`
Lista os clientes da loja, com busca por e-mail ou nick.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `search` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/customers" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
```json
{
"data": [
{
"id": "cus_mhexample0000steve00001",
"email": "steve@exemplo.com",
"name": "Steve",
"taxId": null,
"phone": null,
"identities": [
{
"id": "cid_mhexample0000steve00001",
"kind": "MINECRAFT",
"value": "Steve",
"displayName": "Steve",
"createdAt": "2026-10-31T21:04:13.000Z"
}
],
"createdAt": "2026-10-31T21:04:13.000Z",
"updatedAt": "2026-10-31T21:04:13.000Z"
}
],
"hasMore": false
}
```
# Criar cliente (https://docs.rivoo.gg/api/referencia/clientes/criar-cliente)
`POST https://api.rivoo.gg/v1/customers`
Cadastra um cliente com e-mail e, se quiser, identidades de jogo.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"taxId": {
"type": "string",
"pattern": "^(\\d{11}|\\d{14})$"
},
"phone": {
"type": "string",
"pattern": "^\\+?\\d{10,15}$"
}
}
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/customers" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 201
# Ver cliente (https://docs.rivoo.gg/api/referencia/clientes/ver-cliente)
`GET https://api.rivoo.gg/v1/customers/{id}`
Devolve um cliente com total gasto e número de pedidos.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/customers/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
```json
{
"id": "cus_mhexample0000steve00001",
"email": "steve@exemplo.com",
"name": "Steve",
"taxId": null,
"phone": null,
"identities": [
{
"id": "cid_mhexample0000steve00001",
"kind": "MINECRAFT",
"value": "Steve",
"displayName": "Steve",
"createdAt": "2026-10-31T21:04:13.000Z"
}
],
"createdAt": "2026-10-31T21:04:13.000Z",
"updatedAt": "2026-10-31T21:04:13.000Z"
}
```
# Alterar cliente (https://docs.rivoo.gg/api/referencia/clientes/alterar-cliente)
`PATCH https://api.rivoo.gg/v1/customers/{id}`
Altera só os campos enviados do cliente.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"email": {
"type": "string",
"nullable": true,
"format": "email"
},
"name": {
"type": "string",
"nullable": true,
"minLength": 1,
"maxLength": 120
},
"taxId": {
"type": "string",
"nullable": true,
"pattern": "^(\\d{11}|\\d{14})$"
},
"phone": {
"type": "string",
"nullable": true,
"pattern": "^\\+?\\d{10,15}$"
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/customers/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Arquivar cliente (https://docs.rivoo.gg/api/referencia/clientes/arquivar-cliente)
`DELETE https://api.rivoo.gg/v1/customers/{id}`
Arquiva o cliente. Pedidos e benefícios ficam no histórico.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/customers/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Listar identidades (https://docs.rivoo.gg/api/referencia/clientes/listar-identidades)
`GET https://api.rivoo.gg/v1/customers/{id}/identities`
Contas de jogo do cliente (nick do Minecraft, Steam, Discord…).
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/customers/{id}/identities" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Adicionar identidade (https://docs.rivoo.gg/api/referencia/clientes/adicionar-identidade)
`POST https://api.rivoo.gg/v1/customers/{id}/identities`
Liga uma conta de jogo ao cliente.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"DISCORD",
"MINECRAFT_UUID",
"MINECRAFT_NAME",
"EMAIL",
"GAME_ACCOUNT"
]
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"displayName": {
"type": "string",
"maxLength": 60
}
},
"required": [
"kind",
"value"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/customers/{id}/identities" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"DISCORD","value":"string"}'
```
## Resposta 201
# Remover identidade (https://docs.rivoo.gg/api/referencia/clientes/remover-identidade)
`DELETE https://api.rivoo.gg/v1/customers/{id}/identities/{identityId}`
Desliga a conta de jogo do cliente.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `identityId` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/customers/{id}/identities/{identityId}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Benefícios do cliente (https://docs.rivoo.gg/api/referencia/clientes/beneficios-do-cliente)
`GET https://api.rivoo.gg/v1/customers/{id}/entitlements`
Benefícios ativos e encerrados do cliente (ranks, assinaturas, itens).
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/customers/{id}/entitlements" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar bloqueios (https://docs.rivoo.gg/api/referencia/bloqueios/listar-bloqueios)
`GET https://api.rivoo.gg/v1/bans`
Jogadores, e-mails, contas do Discord e IPs impedidos de comprar na loja.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `kind` | query | não | |
| `search` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/bans" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Bloquear comprador (https://docs.rivoo.gg/api/referencia/bloqueios/bloquear-comprador)
`POST https://api.rivoo.gg/v1/bans`
Impede um jogador, e-mail, conta do Discord ou IP de comprar na loja.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"DISCORD",
"EMAIL",
"PLAYER",
"IP"
]
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"reason": {
"type": "string",
"enum": [
"MANUAL",
"DISPUTE",
"FRAUD"
]
},
"note": {
"type": "string",
"maxLength": 500
}
},
"required": [
"kind",
"value"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/bans" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"DISCORD","value":"string"}'
```
## Resposta 201
# Desbloquear comprador (https://docs.rivoo.gg/api/referencia/bloqueios/desbloquear-comprador)
`DELETE https://api.rivoo.gg/v1/bans/{id}`
Remove o bloqueio.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/bans/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Ver vitrine (https://docs.rivoo.gg/api/referencia/vitrine/ver-vitrine)
`GET https://api.rivoo.gg/v1/storefront`
Rascunho e versão publicada da vitrine da loja.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/storefront" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Salvar rascunho da vitrine (https://docs.rivoo.gg/api/referencia/vitrine/salvar-rascunho-da-vitrine)
`PATCH https://api.rivoo.gg/v1/storefront`
Salva o rascunho da vitrine sem publicar.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"draft": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"draft"
]
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/storefront" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"draft":{}}'
```
## Resposta 200
# Publicar vitrine (https://docs.rivoo.gg/api/referencia/vitrine/publicar-vitrine)
`POST https://api.rivoo.gg/v1/storefront/publish`
Publica o rascunho atual; a loja muda na hora.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/storefront/publish" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Link de prévia (https://docs.rivoo.gg/api/referencia/vitrine/link-de-previa)
`POST https://api.rivoo.gg/v1/storefront/preview-link`
Gera um link temporário para ver o rascunho como o comprador verá.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/storefront/preview-link" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar vitrines (https://docs.rivoo.gg/api/referencia/vitrine/listar-vitrines)
`GET https://api.rivoo.gg/v1/storefronts`
Vitrines da loja (temas salvos), com a que está no ar marcada.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/storefronts" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar vitrine (https://docs.rivoo.gg/api/referencia/vitrine/criar-vitrine)
`POST https://api.rivoo.gg/v1/storefronts`
Cria uma vitrine a partir de um template.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"kind": {
"type": "string",
"enum": [
"IN_GAME",
"LANDING",
"COLLECTION"
]
},
"draft": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"name",
"kind"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/storefronts" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","kind":"IN_GAME"}'
```
## Resposta 201
# Importar vitrine (https://docs.rivoo.gg/api/referencia/vitrine/importar-vitrine)
`POST https://api.rivoo.gg/v1/storefronts/import`
Cria uma vitrine a partir de um arquivo exportado.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"kind": {
"type": "string",
"enum": [
"IN_GAME",
"LANDING",
"COLLECTION"
]
},
"draft": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"name",
"draft"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/storefronts/import" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","draft":{}}'
```
## Resposta 201
# Ver vitrine salva (https://docs.rivoo.gg/api/referencia/vitrine/ver-vitrine-salva)
`GET https://api.rivoo.gg/v1/storefronts/{id}`
Devolve uma vitrine salva.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/storefronts/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar vitrine salva (https://docs.rivoo.gg/api/referencia/vitrine/alterar-vitrine-salva)
`PATCH https://api.rivoo.gg/v1/storefronts/{id}`
Altera só os campos enviados da vitrine.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"kind": {
"type": "string",
"enum": [
"IN_GAME",
"LANDING",
"COLLECTION"
]
},
"draft": {
"type": "object",
"additionalProperties": true
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/storefronts/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Apagar vitrine salva (https://docs.rivoo.gg/api/referencia/vitrine/apagar-vitrine-salva)
`DELETE https://api.rivoo.gg/v1/storefronts/{id}`
Apaga uma vitrine que não está no ar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/storefronts/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Publicar vitrine salva (https://docs.rivoo.gg/api/referencia/vitrine/publicar-vitrine-salva)
`POST https://api.rivoo.gg/v1/storefronts/{id}/publish`
Coloca esta vitrine no ar no lugar da atual.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/storefronts/{id}/publish" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Duplicar vitrine (https://docs.rivoo.gg/api/referencia/vitrine/duplicar-vitrine)
`POST https://api.rivoo.gg/v1/storefronts/{id}/duplicate`
Cria uma cópia da vitrine para editar sem mexer na original.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
}
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/storefronts/{id}/duplicate" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 201
# Exportar vitrine (https://docs.rivoo.gg/api/referencia/vitrine/exportar-vitrine)
`GET https://api.rivoo.gg/v1/storefronts/{id}/export`
Baixa a vitrine num arquivo para importar em outra loja.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/storefronts/{id}/export" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Link de prévia da vitrine salva (https://docs.rivoo.gg/api/referencia/vitrine/link-de-previa-da-vitrine-salva)
`POST https://api.rivoo.gg/v1/storefronts/{id}/preview-link`
Gera um link temporário para ver esta vitrine antes de publicar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/storefronts/{id}/preview-link" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver domínio próprio (https://docs.rivoo.gg/api/referencia/dominio-proprio/ver-dominio-proprio)
`GET https://api.rivoo.gg/v1/domain`
Domínio ligado à loja e o estado da verificação e do certificado.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/domain" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Desligar domínio próprio (https://docs.rivoo.gg/api/referencia/dominio-proprio/desligar-dominio-proprio)
`DELETE https://api.rivoo.gg/v1/domain`
Desliga o domínio; a loja volta a responder só no endereço da Rivoo.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/domain" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Ligar domínio próprio (https://docs.rivoo.gg/api/referencia/dominio-proprio/ligar-dominio-proprio)
`PUT https://api.rivoo.gg/v1/domain`
Liga um domínio seu à loja. Devolve o registro DNS que você precisa criar.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"hostname": {
"type": "string",
"minLength": 4,
"maxLength": 253
}
},
"required": [
"hostname"
]
}
```
## Exemplo
```bash
curl -X PUT "https://api.rivoo.gg/v1/domain" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"hostname":"string"}'
```
## Resposta 200
# Verificar domínio (https://docs.rivoo.gg/api/referencia/dominio-proprio/verificar-dominio)
`POST https://api.rivoo.gg/v1/domain/verify`
Confere o DNS agora e, se estiver certo, emite o certificado.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/domain/verify" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar pedidos (https://docs.rivoo.gg/api/referencia/pedidos/listar-pedidos)
`GET https://api.rivoo.gg/v1/orders`
Lista os pedidos da loja, do mais novo ao mais antigo, com filtro por status e cliente.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `status` | query | não | |
| `paid` | query | não | |
| `paidFrom` | query | não | |
| `paidTo` | query | não | |
| `source` | query | não | |
| `customerId` | query | não | |
| `state` | query | não | |
| `q` | query | não | |
| `method` | query | não | |
| `paymentLinkId` | query | não | |
| `subscriptionId` | query | não | |
| `delivery` | query | não | |
| `dispute` | query | não | |
| `createdFrom` | query | não | |
| `createdTo` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/orders" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
```json
{
"data": [
{
"id": "ord_mhexample0000vip0000001",
"source": "API",
"status": "PAID",
"customerId": "cus_mhexample0000steve00001",
"externalId": "pedido_123",
"recipient": {
"kind": "MINECRAFT",
"ref": "Steve",
"name": "Steve"
},
"items": [
{
"id": "oitem_mhexample0000vip00001",
"productId": "prod_mhexample0000vip00001",
"priceId": "price_mhexample0000vip0001",
"name": "VIP+ 30 dias",
"quantity": 1,
"unitAmount": {
"amount": 2990,
"currency": "BRL"
},
"total": {
"amount": 2990,
"currency": "BRL"
},
"adjustments": [],
"recipient": null,
"gift": null
}
],
"totals": {
"subtotal": {
"amount": 2990,
"currency": "BRL"
},
"discount": {
"amount": 0,
"currency": "BRL"
},
"giftCard": {
"amount": 0,
"currency": "BRL"
},
"total": {
"amount": 2990,
"currency": "BRL"
},
"refunded": {
"amount": 0,
"currency": "BRL"
}
},
"allowedMethods": [
"PIX",
"CARD",
"BOLETO"
],
"paidByPaymentId": "pay_mhexample0000vip0000001",
"note": null,
"metadata": {
"pedido": "123"
},
"customer": {
"id": "cus_mhexample0000steve00001",
"name": "Steve",
"email": "steve@exemplo.com"
},
"expiresAt": "2026-11-01T21:04:13.000Z",
"paidAt": "2026-10-31T21:04:51.000Z",
"expiredAt": null,
"canceledAt": null,
"createdAt": "2026-10-31T21:04:13.000Z",
"method": "PIX",
"paymentLink": null,
"dispute": null,
"delivery": "done"
}
],
"hasMore": false,
"totalCount": 1
}
```
# Criar pedido (https://docs.rivoo.gg/api/referencia/pedidos/criar-pedido)
`POST https://api.rivoo.gg/v1/orders`
Cria um pedido com produtos do catálogo. Mande o comprador para o `checkoutUrl` da resposta para pagar. Use `Idempotency-Key` para não duplicar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | sim | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"items": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"productId": {
"type": "string"
},
"quantity": {
"type": "number",
"minimum": 1,
"maximum": 100
}
},
"required": [
"productId",
"quantity"
]
}
},
"customer": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"required": [
"email"
]
},
"recipient": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"name"
]
},
"externalId": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"metadata": {
"type": "object",
"additionalProperties": true
},
"successUrl": {
"type": "string",
"format": "uri"
},
"cancelUrl": {
"type": "string",
"format": "uri"
},
"expiresInMinutes": {
"type": "number",
"minimum": 5,
"maximum": 10080
},
"allowedMethods": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"enum": [
"PIX",
"PIX_AUTOMATIC",
"CARD",
"BOLETO"
]
}
}
},
"required": [
"items"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/orders" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"productId":"string","quantity":1}]}'
```
## Resposta 201
```json
{
"id": "ord_mhexample0000vip0000001",
"source": "API",
"status": "PENDING",
"customerId": "cus_mhexample0000steve00001",
"externalId": "pedido_123",
"recipient": {
"kind": "MINECRAFT",
"ref": "Steve",
"name": "Steve"
},
"items": [
{
"id": "oitem_mhexample0000vip00001",
"productId": "prod_mhexample0000vip00001",
"priceId": "price_mhexample0000vip0001",
"name": "VIP+ 30 dias",
"quantity": 1,
"unitAmount": {
"amount": 2990,
"currency": "BRL"
},
"total": {
"amount": 2990,
"currency": "BRL"
},
"adjustments": [],
"recipient": null,
"gift": null
}
],
"totals": {
"subtotal": {
"amount": 2990,
"currency": "BRL"
},
"discount": {
"amount": 0,
"currency": "BRL"
},
"giftCard": {
"amount": 0,
"currency": "BRL"
},
"total": {
"amount": 2990,
"currency": "BRL"
},
"refunded": {
"amount": 0,
"currency": "BRL"
}
},
"allowedMethods": [
"PIX",
"CARD",
"BOLETO"
],
"paidByPaymentId": null,
"note": null,
"metadata": {
"pedido": "123"
},
"customer": {
"id": "cus_mhexample0000steve00001",
"name": "Steve",
"email": "steve@exemplo.com"
},
"expiresAt": "2026-11-01T21:04:13.000Z",
"paidAt": null,
"expiredAt": null,
"canceledAt": null,
"createdAt": "2026-10-31T21:04:13.000Z",
"checkoutUrl": "https://rivoo.gg/pay/c/ord_mhexample0000vip0000001?k=exemplo"
}
```
# Registrar pedido manual (https://docs.rivoo.gg/api/referencia/pedidos/registrar-pedido-manual)
`POST https://api.rivoo.gg/v1/orders/manual`
Registra uma venda feita fora da Rivoo e roda as entregas dos produtos, sem cobrar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | sim | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"items": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"productId": {
"type": "string"
},
"quantity": {
"type": "number",
"minimum": 1,
"maximum": 100
}
},
"required": [
"productId",
"quantity"
]
}
},
"recipient": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"name"
]
},
"customerId": {
"type": "string"
},
"note": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"items",
"note"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/orders/manual" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"productId":"string","quantity":1}],"note":"string"}'
```
## Resposta 201
# Ver pedido (https://docs.rivoo.gg/api/referencia/pedidos/ver-pedido)
`GET https://api.rivoo.gg/v1/orders/{id}`
Devolve o pedido com itens, pagamentos, reembolsos e entregas.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/orders/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
```json
{
"id": "ord_mhexample0000vip0000001",
"source": "API",
"status": "PAID",
"customerId": "cus_mhexample0000steve00001",
"externalId": "pedido_123",
"recipient": {
"kind": "MINECRAFT",
"ref": "Steve",
"name": "Steve"
},
"items": [
{
"id": "oitem_mhexample0000vip00001",
"productId": "prod_mhexample0000vip00001",
"priceId": "price_mhexample0000vip0001",
"name": "VIP+ 30 dias",
"quantity": 1,
"unitAmount": {
"amount": 2990,
"currency": "BRL"
},
"total": {
"amount": 2990,
"currency": "BRL"
},
"adjustments": [],
"recipient": null,
"gift": null
}
],
"totals": {
"subtotal": {
"amount": 2990,
"currency": "BRL"
},
"discount": {
"amount": 0,
"currency": "BRL"
},
"giftCard": {
"amount": 0,
"currency": "BRL"
},
"total": {
"amount": 2990,
"currency": "BRL"
},
"refunded": {
"amount": 0,
"currency": "BRL"
}
},
"allowedMethods": [
"PIX",
"CARD",
"BOLETO"
],
"paidByPaymentId": "pay_mhexample0000vip0000001",
"note": null,
"metadata": {
"pedido": "123"
},
"customer": {
"id": "cus_mhexample0000steve00001",
"name": "Steve",
"email": "steve@exemplo.com"
},
"expiresAt": "2026-11-01T21:04:13.000Z",
"paidAt": "2026-10-31T21:04:51.000Z",
"expiredAt": null,
"canceledAt": null,
"createdAt": "2026-10-31T21:04:13.000Z"
}
```
# Cancelar pedido (https://docs.rivoo.gg/api/referencia/pedidos/cancelar-pedido)
`POST https://api.rivoo.gg/v1/orders/{id}/cancel`
Cancela um pedido ainda não pago; o link de pagamento deixa de funcionar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/orders/{id}/cancel" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Reenviar e-mail do pedido (https://docs.rivoo.gg/api/referencia/pedidos/reenviar-e-mail-do-pedido)
`POST https://api.rivoo.gg/v1/orders/{id}/resend-email`
Manda de novo o recibo ao comprador, com chaves e links de download.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/orders/{id}/resend-email" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 202
# Gift cards usados no pedido (https://docs.rivoo.gg/api/referencia/pedidos/gift-cards-usados-no-pedido)
`GET https://api.rivoo.gg/v1/orders/{id}/gift-card-credits`
Gift cards que pagaram parte ou todo o pedido.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/orders/{id}/gift-card-credits" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Devolver em gift card (https://docs.rivoo.gg/api/referencia/pedidos/devolver-em-gift-card)
`POST https://api.rivoo.gg/v1/orders/{id}/gift-card-credit`
Devolve o valor do pedido como saldo num gift card, em vez de reembolsar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | sim | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"amountCents": {
"type": "number",
"minimum": 100,
"maximum": 1000000
}
},
"required": [
"amountCents"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/orders/{id}/gift-card-credit" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amountCents":100}'
```
## Resposta 201
# Listar pagamentos (https://docs.rivoo.gg/api/referencia/pagamentos/listar-pagamentos)
`GET https://api.rivoo.gg/v1/payments`
Pagamentos recebidos, com meio (Pix, cartão, boleto), taxa e valor líquido.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `orderId` | query | não | |
| `status` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/payments" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver pagamento (https://docs.rivoo.gg/api/referencia/pagamentos/ver-pagamento)
`GET https://api.rivoo.gg/v1/payments/{id}`
Devolve um pagamento.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/payments/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar meios de pagamento (https://docs.rivoo.gg/api/referencia/pagamentos/listar-meios-de-pagamento)
`GET https://api.rivoo.gg/v1/payment-methods`
Meios de pagamento da loja e se cada um está ativo.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/payment-methods" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ligar ou desligar cartão (https://docs.rivoo.gg/api/referencia/pagamentos/ligar-ou-desligar-cartao)
`PATCH https://api.rivoo.gg/v1/payment-methods/CARD`
Liga ou desliga o pagamento com cartão no checkout.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
]
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/payment-methods/CARD" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
```
## Resposta 200
# Reembolsos do pedido (https://docs.rivoo.gg/api/referencia/reembolsos/reembolsos-do-pedido)
`GET https://api.rivoo.gg/v1/orders/{id}/refunds`
Reembolsos feitos no pedido.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/orders/{id}/refunds" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Reembolsar pedido (https://docs.rivoo.gg/api/referencia/reembolsos/reembolsar-pedido)
`POST https://api.rivoo.gg/v1/orders/{id}/refunds`
Reembolsa todo ou parte do pedido. O benefício entregue é retirado quando o produto tem ação de reembolso.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | sim | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 1
},
"reason": {
"type": "string",
"maxLength": 200
},
"pixKey": {
"type": "object",
"properties": {
"type": {
"enum": [
"CPF",
"CNPJ",
"EMAIL",
"PHONE",
"RANDOM"
],
"type": "string"
},
"key": {
"type": "string",
"minLength": 1,
"maxLength": 77
}
},
"required": [
"type",
"key"
]
}
}
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/orders/{id}/refunds" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 201
# Informar destino do reembolso (https://docs.rivoo.gg/api/referencia/reembolsos/informar-destino-do-reembolso)
`POST https://api.rivoo.gg/v1/refunds/{id}/destination`
Informa a chave Pix para onde devolver quando o pagamento original não permite devolução automática.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"type": {
"enum": [
"CPF",
"CNPJ",
"EMAIL",
"PHONE",
"RANDOM"
],
"type": "string"
},
"key": {
"type": "string",
"minLength": 1,
"maxLength": 77
}
},
"required": [
"type",
"key"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/refunds/{id}/destination" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"CPF","key":"string"}'
```
## Resposta 200
# Listar reembolsos (https://docs.rivoo.gg/api/referencia/reembolsos/listar-reembolsos)
`GET https://api.rivoo.gg/v1/refunds`
Todos os reembolsos da loja.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/refunds" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar disputas (https://docs.rivoo.gg/api/referencia/disputas/listar-disputas)
`GET https://api.rivoo.gg/v1/disputes`
Contestações abertas pelos compradores (chargeback e MED do Pix).
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/disputes" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver disputa (https://docs.rivoo.gg/api/referencia/disputas/ver-disputa)
`GET https://api.rivoo.gg/v1/disputes/{id}`
Devolve a disputa com prazo e provas enviadas.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/disputes/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Enviar prova (https://docs.rivoo.gg/api/referencia/disputas/enviar-prova)
`POST https://api.rivoo.gg/v1/disputes/{id}/evidence`
Anexa uma prova à disputa (comprovante de entrega, conversa, log do servidor).
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"url": {
"type": "string",
"format": "uri"
},
"file": {
"type": "object",
"properties": {
"contentType": {
"type": "string",
"enum": [
"application/pdf",
"image/png",
"image/jpeg"
]
},
"sizeBytes": {
"type": "number",
"minimum": 1,
"maximum": 10485760
}
},
"required": [
"contentType",
"sizeBytes"
]
}
},
"required": [
"description"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/disputes/{id}/evidence" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description":"string"}'
```
## Resposta 201
# Enviar defesa (https://docs.rivoo.gg/api/referencia/disputas/enviar-defesa)
`POST https://api.rivoo.gg/v1/disputes/{id}/submit`
Envia as provas para análise. Depois disso não dá para anexar mais.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/disputes/{id}/submit" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Aceitar disputa (https://docs.rivoo.gg/api/referencia/disputas/aceitar-disputa)
`POST https://api.rivoo.gg/v1/disputes/{id}/accept`
Aceita a contestação sem defesa; o valor volta ao comprador.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/disputes/{id}/accept" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar links de pagamento (https://docs.rivoo.gg/api/referencia/links-de-pagamento/listar-links-de-pagamento)
`GET https://api.rivoo.gg/v1/payment-links`
Links de pagamento da loja.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/payment-links" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar link de pagamento (https://docs.rivoo.gg/api/referencia/links-de-pagamento/criar-link-de-pagamento)
`POST https://api.rivoo.gg/v1/payment-links`
Cria um link com produtos e quantidades. Único (paga uma vez) ou fixo (paga várias vezes).
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"items": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"productId": {
"type": "string"
},
"priceId": {
"type": "string"
},
"quantity": {
"type": "number",
"minimum": 1,
"maximum": 100
}
},
"required": [
"quantity"
]
}
},
"askRecipient": {
"type": "boolean"
},
"successUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"name",
"items"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/payment-links" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","items":[{"quantity":1}]}'
```
## Resposta 201
# Ver link de pagamento (https://docs.rivoo.gg/api/referencia/links-de-pagamento/ver-link-de-pagamento)
`GET https://api.rivoo.gg/v1/payment-links/{id}`
Devolve o link com os pedidos que ele gerou.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/payment-links/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar link de pagamento (https://docs.rivoo.gg/api/referencia/links-de-pagamento/alterar-link-de-pagamento)
`PATCH https://api.rivoo.gg/v1/payment-links/{id}`
Altera só os campos enviados do link.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"active": {
"type": "boolean"
},
"askRecipient": {
"type": "boolean"
},
"successUrl": {
"type": "string",
"nullable": true,
"format": "uri"
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/payment-links/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Arquivar link de pagamento (https://docs.rivoo.gg/api/referencia/links-de-pagamento/arquivar-link-de-pagamento)
`DELETE https://api.rivoo.gg/v1/payment-links/{id}`
Desativa o link; quem abrir vê que ele não está mais disponível.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/payment-links/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Listar assinaturas (https://docs.rivoo.gg/api/referencia/assinaturas/listar-assinaturas)
`GET https://api.rivoo.gg/v1/subscriptions`
Assinaturas da loja, com status e próxima cobrança.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `status` | query | não | |
| `customerId` | query | não | |
| `state` | query | não | |
| `productId` | query | não | |
| `method` | query | não | |
| `q` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/subscriptions" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar assinatura (https://docs.rivoo.gg/api/referencia/assinaturas/criar-assinatura)
`POST https://api.rivoo.gg/v1/subscriptions`
Cria uma assinatura e devolve o link para o comprador autorizar o Pix Automático ou o cartão.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | sim | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"priceId": {
"type": "string"
},
"customer": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"required": [
"email"
]
},
"recipient": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"name"
]
}
},
"required": [
"priceId",
"customer"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/subscriptions" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"priceId":"string","customer":{"email":"string"}}'
```
## Resposta 201
# Resumo das assinaturas (https://docs.rivoo.gg/api/referencia/assinaturas/resumo-das-assinaturas)
`GET https://api.rivoo.gg/v1/subscriptions/summary`
Ativas, receita recorrente do mês e cancelamentos.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/subscriptions/summary" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver assinatura (https://docs.rivoo.gg/api/referencia/assinaturas/ver-assinatura)
`GET https://api.rivoo.gg/v1/subscriptions/{id}`
Devolve a assinatura com as cobranças.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/subscriptions/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Cancelar assinatura (https://docs.rivoo.gg/api/referencia/assinaturas/cancelar-assinatura)
`POST https://api.rivoo.gg/v1/subscriptions/{id}/cancel`
Cancela a renovação. O benefício vale até o fim do período pago.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"atPeriodEnd": {
"type": "boolean"
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/subscriptions/{id}/cancel" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Retomar assinatura (https://docs.rivoo.gg/api/referencia/assinaturas/retomar-assinatura)
`POST https://api.rivoo.gg/v1/subscriptions/{id}/resume`
Desfaz o cancelamento antes do fim do período.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/subscriptions/{id}/resume" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar imagens (https://docs.rivoo.gg/api/referencia/imagens/listar-imagens)
`GET https://api.rivoo.gg/v1/media`
Imagens enviadas pela loja.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `search` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/media" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Enviar imagem (https://docs.rivoo.gg/api/referencia/imagens/enviar-imagem)
`POST https://api.rivoo.gg/v1/media`
Envia uma imagem (até 2 MB, em base64) para usar em produtos e na vitrine.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"contentType": {
"type": "string",
"enum": [
"image/png",
"image/jpeg",
"image/webp",
"image/gif"
]
},
"data": {
"type": "string",
"maxLength": 2796211
},
"name": {
"type": "string",
"maxLength": 255
}
},
"required": [
"contentType",
"data"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/media" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"contentType":"image/png","data":"string"}'
```
## Resposta 201
# Apagar imagem (https://docs.rivoo.gg/api/referencia/imagens/apagar-imagem)
`DELETE https://api.rivoo.gg/v1/media/{id}`
Apaga a imagem. Produtos que usavam ficam sem ela.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/media/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Cargos do Discord (https://docs.rivoo.gg/api/referencia/discord/cargos-do-discord)
`GET https://api.rivoo.gg/v1/connections/{id}/discord/roles`
Cargos do servidor do Discord, para usar nas ações de entrega.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/connections/{id}/discord/roles" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Canais do Discord (https://docs.rivoo.gg/api/referencia/discord/canais-do-discord)
`GET https://api.rivoo.gg/v1/connections/{id}/discord/channels`
Canais de texto do servidor do Discord, para os avisos de venda.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/connections/{id}/discord/channels" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver avisos do Discord (https://docs.rivoo.gg/api/referencia/discord/ver-avisos-do-discord)
`GET https://api.rivoo.gg/v1/connections/{id}/discord`
Canal e modelo do anúncio público de venda e do canal da equipe.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/connections/{id}/discord" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Configurar avisos do Discord (https://docs.rivoo.gg/api/referencia/discord/configurar-avisos-do-discord)
`PATCH https://api.rivoo.gg/v1/connections/{id}/discord`
Define os canais e o modelo da mensagem de venda.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"logChannelId": {
"type": "string",
"nullable": true,
"pattern": "^\\d{15,21}$"
},
"saleChannelId": {
"type": "string",
"nullable": true,
"pattern": "^\\d{15,21}$"
},
"saleMessage": {
"type": "string",
"nullable": true,
"maxLength": 500
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/connections/{id}/discord" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Testar avisos do Discord (https://docs.rivoo.gg/api/referencia/discord/testar-avisos-do-discord)
`POST https://api.rivoo.gg/v1/connections/{id}/discord/test`
Manda uma mensagem de teste nos canais configurados.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"channel": {
"type": "string",
"enum": [
"sale",
"staff"
]
}
},
"required": [
"channel"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/connections/{id}/discord/test" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"channel":"sale"}'
```
## Resposta 202
# Listar servidores (https://docs.rivoo.gg/api/referencia/servidores/listar-servidores)
`GET https://api.rivoo.gg/v1/connections`
Servidores de jogo ligados à loja (plugin ou agente) e se estão online.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `type` | query | não | |
| `status` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/connections" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Adicionar servidor (https://docs.rivoo.gg/api/referencia/servidores/adicionar-servidor)
`POST https://api.rivoo.gg/v1/connections`
Cria a conexão de um servidor e devolve a chave que vai no plugin.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"MINECRAFT",
"FIVEM",
"REDM",
"RUST",
"HYTALE"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"type",
"name"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/connections" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"MINECRAFT","name":"string"}'
```
## Resposta 201
# Ver servidor (https://docs.rivoo.gg/api/referencia/servidores/ver-servidor)
`GET https://api.rivoo.gg/v1/connections/{id}`
Devolve o servidor com o último contato.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/connections/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar servidor (https://docs.rivoo.gg/api/referencia/servidores/alterar-servidor)
`PATCH https://api.rivoo.gg/v1/connections/{id}`
Altera só os campos enviados do servidor.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"name"
]
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/connections/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'
```
## Resposta 200
# Remover servidor (https://docs.rivoo.gg/api/referencia/servidores/remover-servidor)
`DELETE https://api.rivoo.gg/v1/connections/{id}`
Desliga o servidor da loja; a chave para de funcionar.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/connections/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Trocar chave do servidor (https://docs.rivoo.gg/api/referencia/servidores/trocar-chave-do-servidor)
`POST https://api.rivoo.gg/v1/connections/{id}/rotate-key`
Gera uma chave nova e invalida a antiga.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/connections/{id}/rotate-key" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver pareamento (https://docs.rivoo.gg/api/referencia/servidores/ver-pareamento)
`GET https://api.rivoo.gg/v1/connection-pairings/{code}`
Mostra o servidor que pediu pareamento com o código exibido no console.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `code` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/connection-pairings/{code}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Confirmar pareamento (https://docs.rivoo.gg/api/referencia/servidores/confirmar-pareamento)
`POST https://api.rivoo.gg/v1/connection-pairings/{code}/claim`
Liga à loja o servidor que mostrou o código no console.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `code` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"connectionId": {
"type": "string"
}
}
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/connection-pairings/{code}/claim" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Adicionar servidor por RCON (https://docs.rivoo.gg/api/referencia/servidores/adicionar-servidor-por-rcon)
`POST https://api.rivoo.gg/v1/connections/cloud-agents`
Liga um servidor pelo RCON, sem instalar nada nele (beta).
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"game": {
"type": "string",
"enum": [
"MINECRAFT_JAVA",
"RUST",
"ARK_SE",
"ARK_SA",
"CONAN",
"PALWORLD",
"SEVEN_DAYS",
"HYTALE",
"SOURCE_GENERIC"
]
},
"host": {
"type": "string",
"minLength": 1,
"maxLength": 253
},
"port": {
"type": "number",
"minimum": 1,
"maximum": 65535
},
"password": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"name",
"game",
"host",
"port",
"password"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/connections/cloud-agents" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","game":"MINECRAFT_JAVA","host":"string","port":1,"password":"string"}'
```
## Resposta 201
# Alterar servidor por RCON (https://docs.rivoo.gg/api/referencia/servidores/alterar-servidor-por-rcon)
`PATCH https://api.rivoo.gg/v1/connections/{id}/cloud-agent`
Altera endereço, porta ou senha do RCON.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"host": {
"type": "string",
"minLength": 1,
"maxLength": 253
},
"port": {
"type": "number",
"minimum": 1,
"maximum": 65535
},
"password": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/connections/{id}/cloud-agent" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Resumo de vendas (https://docs.rivoo.gg/api/referencia/relatorios/resumo-de-vendas)
`GET https://api.rivoo.gg/v1/reports/summary`
Vendas, receita, ticket médio e reembolsos no período.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `from` | query | não | |
| `to` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/reports/summary" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Vendas por dia (https://docs.rivoo.gg/api/referencia/relatorios/vendas-por-dia)
`GET https://api.rivoo.gg/v1/reports/timeseries`
Série de vendas e receita por dia no período.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `from` | query | não | |
| `to` | query | não | |
| `metric` | query | não | |
| `interval` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/reports/timeseries" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Produtos mais vendidos (https://docs.rivoo.gg/api/referencia/relatorios/produtos-mais-vendidos)
`GET https://api.rivoo.gg/v1/reports/top-products`
Produtos com mais receita no período.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `from` | query | não | |
| `to` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/reports/top-products" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Melhores clientes (https://docs.rivoo.gg/api/referencia/relatorios/melhores-clientes)
`GET https://api.rivoo.gg/v1/reports/top-customers`
Clientes que mais gastaram no período.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `from` | query | não | |
| `to` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/reports/top-customers" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Conversão (https://docs.rivoo.gg/api/referencia/relatorios/conversao)
`GET https://api.rivoo.gg/v1/reports/conversion`
Pedidos criados, pagos e a taxa de conversão no período.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `from` | query | não | |
| `to` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/reports/conversion" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar ações do produto (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/listar-acoes-do-produto)
`GET https://api.rivoo.gg/v1/products/{productId}/actions`
Comandos e cargos que o produto entrega quando o pedido é pago, expira ou é reembolsado.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/products/{productId}/actions" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar ação do produto (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/criar-acao-do-produto)
`POST https://api.rivoo.gg/v1/products/{productId}/actions`
Adiciona um comando no servidor ou cargo no Discord ao produto, com o momento em que roda.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"type": {
"enum": [
"MANUAL",
"COMMAND",
"DISCORD_ROLE",
"FILE",
"LICENSE_KEY"
],
"type": "string"
},
"trigger": {
"enum": [
"REFUNDED",
"REMOVED",
"PURCHASED",
"RENEWED",
"DISPUTED"
],
"type": "string"
},
"config": {
"type": "object"
},
"connectionIds": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"sortOrder": {
"type": "number",
"minimum": 0,
"maximum": 1000
}
},
"required": [
"type",
"trigger",
"config"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/products/{productId}/actions" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"MANUAL","trigger":"REFUNDED","config":{}}'
```
## Resposta 201
# Alterar ação do produto (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/alterar-acao-do-produto)
`PATCH https://api.rivoo.gg/v1/products/{productId}/actions/{actionId}`
Altera só os campos enviados da ação.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `actionId` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"trigger": {
"enum": [
"REFUNDED",
"REMOVED",
"PURCHASED",
"RENEWED",
"DISPUTED"
],
"type": "string"
},
"config": {
"type": "object"
},
"connectionIds": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"sortOrder": {
"type": "number",
"minimum": 0,
"maximum": 1000
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/products/{productId}/actions/{actionId}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Remover ação do produto (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/remover-acao-do-produto)
`DELETE https://api.rivoo.gg/v1/products/{productId}/actions/{actionId}`
Remove a ação. Entregas já feitas não são desfeitas.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `productId` | path | sim | |
| `actionId` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/products/{productId}/actions/{actionId}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Listar ações da loja (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/listar-acoes-da-loja)
`GET https://api.rivoo.gg/v1/actions`
Ações que rodam em toda compra, de qualquer produto.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `scope` | query | não | |
| `type` | query | não | |
| `limit` | query | não | |
| `after` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/actions" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar ação da loja (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/criar-acao-da-loja)
`POST https://api.rivoo.gg/v1/actions`
Adiciona um comando ou cargo que roda em toda compra.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"type": {
"enum": [
"MANUAL",
"COMMAND",
"DISCORD_ROLE",
"FILE",
"LICENSE_KEY"
],
"type": "string"
},
"trigger": {
"enum": [
"REFUNDED",
"REMOVED",
"PURCHASED",
"RENEWED",
"DISPUTED"
],
"type": "string"
},
"config": {
"type": "object"
},
"connectionIds": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"sortOrder": {
"type": "number",
"minimum": 0,
"maximum": 1000
}
},
"required": [
"type",
"trigger",
"config"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/actions" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"MANUAL","trigger":"REFUNDED","config":{}}'
```
## Resposta 201
# Alterar ação da loja (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/alterar-acao-da-loja)
`PATCH https://api.rivoo.gg/v1/actions/{actionId}`
Altera só os campos enviados da ação.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `actionId` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"trigger": {
"enum": [
"REFUNDED",
"REMOVED",
"PURCHASED",
"RENEWED",
"DISPUTED"
],
"type": "string"
},
"config": {
"type": "object"
},
"connectionIds": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"sortOrder": {
"type": "number",
"minimum": 0,
"maximum": 1000
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/actions/{actionId}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Remover ação da loja (https://docs.rivoo.gg/api/referencia/acoes-de-entrega/remover-acao-da-loja)
`DELETE https://api.rivoo.gg/v1/actions/{actionId}`
Remove a ação da loja.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `actionId` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/actions/{actionId}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Listar benefícios (https://docs.rivoo.gg/api/referencia/beneficios/listar-beneficios)
`GET https://api.rivoo.gg/v1/entitlements`
Benefícios entregues (ranks, assinaturas, itens), com início e fim.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `customerId` | query | não | |
| `productId` | query | não | |
| `status` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/entitlements" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Revogar benefício (https://docs.rivoo.gg/api/referencia/beneficios/revogar-beneficio)
`POST https://api.rivoo.gg/v1/entitlements/{id}/revoke`
Encerra o benefício agora e roda as ações de fim do produto.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/entitlements/{id}/revoke" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar comandos (https://docs.rivoo.gg/api/referencia/comandos/listar-comandos)
`GET https://api.rivoo.gg/v1/command-runs`
Comandos enviados aos servidores, com status (na fila, entregue, falhou).
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `connectionId` | query | não | |
| `status` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/command-runs" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Enviar comando de teste (https://docs.rivoo.gg/api/referencia/comandos/enviar-comando-de-teste)
`POST https://api.rivoo.gg/v1/command-runs`
Envia um comando a um servidor, sem pedido, para testar a entrega.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"connectionId": {
"type": "string"
},
"command": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"recipient": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"name"
]
}
},
"required": [
"connectionId",
"command"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/command-runs" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"connectionId":"string","command":"string"}'
```
## Resposta 201
# Ver comando (https://docs.rivoo.gg/api/referencia/comandos/ver-comando)
`GET https://api.rivoo.gg/v1/command-runs/{id}`
Devolve o comando com as tentativas e a resposta do servidor.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/command-runs/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Reenviar comandos (https://docs.rivoo.gg/api/referencia/comandos/reenviar-comandos)
`POST https://api.rivoo.gg/v1/command-runs/resend`
Reenvia ao servidor os comandos de um pedido.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | sim | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"connectionId": {
"type": "string"
},
"productIds": {
"maxItems": 200,
"type": "array",
"items": {
"type": "string"
}
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"dryRun": {
"type": "boolean"
}
},
"required": [
"connectionId"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/command-runs/resend" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"connectionId":"string"}'
```
## Resposta 200
# Cancelar comando (https://docs.rivoo.gg/api/referencia/comandos/cancelar-comando)
`POST https://api.rivoo.gg/v1/command-runs/{id}/cancel`
Cancela um comando que ainda está na fila.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/command-runs/{id}/cancel" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Entregas manuais pendentes (https://docs.rivoo.gg/api/referencia/entregas/entregas-manuais-pendentes)
`GET https://api.rivoo.gg/v1/deliveries/manual`
Itens que a equipe entrega à mão.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `status` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/deliveries/manual" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Contar entregas manuais (https://docs.rivoo.gg/api/referencia/entregas/contar-entregas-manuais)
`GET https://api.rivoo.gg/v1/deliveries/manual/count`
Quantas entregas manuais estão pendentes.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/deliveries/manual/count" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Marcar como entregue (https://docs.rivoo.gg/api/referencia/entregas/marcar-como-entregue)
`POST https://api.rivoo.gg/v1/deliveries/manual/{id}/delivered`
Marca a entrega manual como feita.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/deliveries/manual/{id}/delivered" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar entregas (https://docs.rivoo.gg/api/referencia/entregas/listar-entregas)
`GET https://api.rivoo.gg/v1/deliveries`
Entregas dos pedidos (comandos, cargos, chaves, arquivos) e o status de cada uma.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `status` | query | não | |
| `orderId` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/deliveries" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Tentar entrega de novo (https://docs.rivoo.gg/api/referencia/entregas/tentar-entrega-de-novo)
`POST https://api.rivoo.gg/v1/deliveries/{id}/retry`
Roda de novo uma entrega que falhou.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/deliveries/{id}/retry" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar webhooks (https://docs.rivoo.gg/api/referencia/webhooks/listar-webhooks)
`GET https://api.rivoo.gg/v1/webhook-endpoints`
Endereços que recebem os eventos da loja.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/webhook-endpoints" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar webhook (https://docs.rivoo.gg/api/referencia/webhooks/criar-webhook)
`POST https://api.rivoo.gg/v1/webhook-endpoints`
Cadastra uma URL e os eventos que ela recebe. O segredo de assinatura aparece só nesta resposta.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"url": {
"type": "string",
"maxLength": 2048
},
"events": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name",
"url"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/webhook-endpoints" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","url":"string"}'
```
## Resposta 201
```json
{
"id": "whe_mhexample0000hook000001",
"name": "Meu servidor",
"url": "https://exemplo.com/webhooks/rivoo",
"events": [
"order.paid",
"order.refunded"
],
"status": "ENABLED",
"disabledReason": null,
"rotation": null,
"createdAt": "2026-10-31T21:04:13.000Z",
"updatedAt": "2026-10-31T21:04:13.000Z",
"secret": "whsec_exemplo_nao_use"
}
```
# Ver webhook (https://docs.rivoo.gg/api/referencia/webhooks/ver-webhook)
`GET https://api.rivoo.gg/v1/webhook-endpoints/{id}`
Devolve o webhook com os eventos assinados.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/webhook-endpoints/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
```json
{
"id": "whe_mhexample0000hook000001",
"name": "Meu servidor",
"url": "https://exemplo.com/webhooks/rivoo",
"events": [
"order.paid",
"order.refunded"
],
"status": "ENABLED",
"disabledReason": null,
"rotation": null,
"createdAt": "2026-10-31T21:04:13.000Z",
"updatedAt": "2026-10-31T21:04:13.000Z"
}
```
# Alterar webhook (https://docs.rivoo.gg/api/referencia/webhooks/alterar-webhook)
`PATCH https://api.rivoo.gg/v1/webhook-endpoints/{id}`
Altera URL, eventos ou pausa o envio.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"url": {
"type": "string",
"maxLength": 2048
},
"events": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED"
]
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/webhook-endpoints/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Apagar webhook (https://docs.rivoo.gg/api/referencia/webhooks/apagar-webhook)
`DELETE https://api.rivoo.gg/v1/webhook-endpoints/{id}`
Para de enviar eventos para a URL.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/webhook-endpoints/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Trocar segredo do webhook (https://docs.rivoo.gg/api/referencia/webhooks/trocar-segredo-do-webhook)
`POST https://api.rivoo.gg/v1/webhook-endpoints/{id}/rotate-secret`
Gera um segredo de assinatura novo. O antigo continua valendo por 24 horas, para você trocar sem perder eventos.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/webhook-endpoints/{id}/rotate-secret" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Testar webhook (https://docs.rivoo.gg/api/referencia/webhooks/testar-webhook)
`POST https://api.rivoo.gg/v1/webhook-endpoints/{id}/test`
Envia um evento de teste para a URL.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/webhook-endpoints/{id}/test" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Envios do webhook (https://docs.rivoo.gg/api/referencia/webhooks/envios-do-webhook)
`GET https://api.rivoo.gg/v1/webhook-endpoints/{id}/deliveries`
Tentativas de envio para a URL, com o código de resposta de cada uma.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/webhook-endpoints/{id}/deliveries" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar eventos (https://docs.rivoo.gg/api/referencia/eventos/listar-eventos)
`GET https://api.rivoo.gg/v1/events`
Eventos da loja (pedido pago, reembolso, assinatura…), do mais novo ao mais antigo.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `type` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/events" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver evento (https://docs.rivoo.gg/api/referencia/eventos/ver-evento)
`GET https://api.rivoo.gg/v1/events/{id}`
Devolve o evento com o mesmo corpo enviado aos webhooks.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/events/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar criadores (https://docs.rivoo.gg/api/referencia/criadores/listar-criadores)
`GET https://api.rivoo.gg/v1/creators`
Criadores de conteúdo com código de desconto e comissão.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `archived` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/creators" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar criador (https://docs.rivoo.gg/api/referencia/criadores/criar-criador)
`POST https://api.rivoo.gg/v1/creators`
Cadastra um criador com código, desconto para o comprador e comissão.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"code": {
"type": "string",
"pattern": "^[A-Z0-9_-]{3,32}$"
},
"commissionBps": {
"type": "number",
"minimum": 100,
"maximum": 5000
},
"discountBps": {
"type": "number",
"minimum": 0,
"maximum": 5000
},
"contact": {
"type": "string",
"nullable": true,
"minLength": 0,
"maxLength": 120
},
"active": {
"type": "boolean"
}
},
"required": [
"name",
"code"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/creators" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","code":"string"}'
```
## Resposta 201
# Ver criador (https://docs.rivoo.gg/api/referencia/criadores/ver-criador)
`GET https://api.rivoo.gg/v1/creators/{id}`
Devolve o criador.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/creators/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar criador (https://docs.rivoo.gg/api/referencia/criadores/alterar-criador)
`PATCH https://api.rivoo.gg/v1/creators/{id}`
Altera só os campos enviados do criador.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"code": {
"type": "string",
"pattern": "^[A-Z0-9_-]{3,32}$"
},
"commissionBps": {
"type": "number",
"minimum": 100,
"maximum": 5000
},
"discountBps": {
"type": "number",
"minimum": 0,
"maximum": 5000
},
"contact": {
"type": "string",
"nullable": true,
"minLength": 0,
"maxLength": 120
},
"active": {
"type": "boolean"
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/creators/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Arquivar criador (https://docs.rivoo.gg/api/referencia/criadores/arquivar-criador)
`DELETE https://api.rivoo.gg/v1/creators/{id}`
Desativa o código do criador.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/creators/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Relatório do criador (https://docs.rivoo.gg/api/referencia/criadores/relatorio-do-criador)
`GET https://api.rivoo.gg/v1/creators/{id}/report`
Vendas e comissão do criador por mês, descontados reembolsos e disputas perdidas.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/creators/{id}/report" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Pagamentos ao criador (https://docs.rivoo.gg/api/referencia/criadores/pagamentos-ao-criador)
`GET https://api.rivoo.gg/v1/creators/{id}/payouts`
Pagamentos de comissão registrados pela loja.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/creators/{id}/payouts" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Registrar pagamento ao criador (https://docs.rivoo.gg/api/referencia/criadores/registrar-pagamento-ao-criador)
`POST https://api.rivoo.gg/v1/creators/{id}/payouts`
Registra que a loja pagou a comissão do criador.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"amountCents": {
"type": "number",
"minimum": 1
},
"paidAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"note": {
"type": "string",
"minLength": 0,
"maxLength": 200
}
},
"required": [
"amountCents",
"paidAt"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/creators/{id}/payouts" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amountCents":1,"paidAt":"string"}'
```
## Resposta 201
# Apagar pagamento ao criador (https://docs.rivoo.gg/api/referencia/criadores/apagar-pagamento-ao-criador)
`DELETE https://api.rivoo.gg/v1/creators/{id}/payouts/{payoutId}`
Remove um registro de pagamento de comissão.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `payoutId` | path | sim | |
## Exemplo
```bash
curl -X DELETE "https://api.rivoo.gg/v1/creators/{id}/payouts/{payoutId}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 204
# Ver recuperação de carrinho (https://docs.rivoo.gg/api/referencia/recuperacao-de-carrinho/ver-recuperacao-de-carrinho)
`GET https://api.rivoo.gg/v1/settings/recovery`
Devolve o lembrete de carrinho abandonado e o agradecimento pós-compra, com os cupons de cada um.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/settings/recovery" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Configurar recuperação de carrinho (https://docs.rivoo.gg/api/referencia/recuperacao-de-carrinho/configurar-recuperacao-de-carrinho)
`PUT https://api.rivoo.gg/v1/settings/recovery`
Liga, desliga e ajusta o lembrete de carrinho abandonado e o agradecimento pós-compra.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"recoveryEnabled": {
"type": "boolean"
},
"recoveryDelayMinutes": {
"type": "number",
"minimum": 60,
"maximum": 1440
},
"recoveryDiscountBps": {
"type": "number",
"minimum": 0,
"maximum": 5000
},
"followUpEnabled": {
"type": "boolean"
},
"followUpDelayHours": {
"type": "number",
"minimum": 1,
"maximum": 168
},
"followUpDiscountBps": {
"type": "number",
"minimum": 0,
"maximum": 5000
},
"followUpCouponDays": {
"type": "number",
"minimum": 1,
"maximum": 30
}
}
}
```
## Exemplo
```bash
curl -X PUT "https://api.rivoo.gg/v1/settings/recovery" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Números da recuperação (https://docs.rivoo.gg/api/referencia/recuperacao-de-carrinho/numeros-da-recuperacao)
`GET https://api.rivoo.gg/v1/settings/recovery/stats`
Lembretes enviados, pedidos recuperados e valor recuperado no mês.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/settings/recovery/stats" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Ver meta da comunidade (https://docs.rivoo.gg/api/referencia/meta-da-comunidade/ver-meta-da-comunidade)
`GET https://api.rivoo.gg/v1/community-goal`
Meta de vendas do mês, progresso e ações ao bater.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/community-goal" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Configurar meta da comunidade (https://docs.rivoo.gg/api/referencia/meta-da-comunidade/configurar-meta-da-comunidade)
`PUT https://api.rivoo.gg/v1/community-goal`
Define o valor, o ciclo e o que acontece quando a meta é batida.
Autenticação: `Authorization: Bearer `.
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"active": {
"type": "boolean"
},
"targetCents": {
"type": "number",
"minimum": 100
},
"period": {
"type": "string",
"enum": [
"MONTHLY",
"REPEATING"
]
},
"productIds": {
"maxItems": 200,
"type": "array",
"items": {
"type": "string"
}
},
"showAmount": {
"type": "boolean"
},
"commands": {
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
"discordMessage": {
"type": "string",
"nullable": true,
"maxLength": 500
},
"saleBps": {
"type": "number",
"minimum": 0,
"maximum": 5000
},
"saleHours": {
"type": "number",
"minimum": 1,
"maximum": 168
}
},
"required": [
"active",
"targetCents",
"period",
"productIds",
"showAmount",
"commands",
"saleBps",
"saleHours"
]
}
```
## Exemplo
```bash
curl -X PUT "https://api.rivoo.gg/v1/community-goal" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"active":true,"targetCents":100,"period":"MONTHLY","productIds":["string"],"showAmount":true,"commands":["string"],"saleBps":0,"saleHours":1}'
```
## Resposta 200
# Metas batidas (https://docs.rivoo.gg/api/referencia/meta-da-comunidade/metas-batidas)
`GET https://api.rivoo.gg/v1/community-goal/reaches`
Histórico das vezes em que a meta foi batida.
Autenticação: `Authorization: Bearer `.
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/community-goal/reaches" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Listar gift cards (https://docs.rivoo.gg/api/referencia/gift-cards/listar-gift-cards)
`GET https://api.rivoo.gg/v1/gift-cards`
Gift cards da loja com saldo.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `status` | query | não | |
| `q` | query | não | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/gift-cards" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Criar gift card (https://docs.rivoo.gg/api/referencia/gift-cards/criar-gift-card)
`POST https://api.rivoo.gg/v1/gift-cards`
Cria um gift card com saldo e, se quiser, manda por e-mail.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"amountCents": {
"type": "number",
"minimum": 100,
"maximum": 1000000
},
"expiresAt": {
"type": "string",
"nullable": true
},
"note": {
"type": "string",
"maxLength": 200
},
"recipientEmail": {
"type": "string",
"maxLength": 254,
"format": "email"
},
"recipientName": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"amountCents"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/gift-cards" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amountCents":100}'
```
## Resposta 201
# Criar gift cards em lote (https://docs.rivoo.gg/api/referencia/gift-cards/criar-gift-cards-em-lote)
`POST https://api.rivoo.gg/v1/gift-cards/batch`
Cria vários gift cards de uma vez.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Idempotency-Key` | header | sim | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"count": {
"type": "number",
"minimum": 1,
"maximum": 500
},
"amountCents": {
"type": "number",
"minimum": 100,
"maximum": 1000000
},
"expiresAt": {
"type": "string",
"nullable": true
},
"note": {
"type": "string",
"maxLength": 200
}
},
"required": [
"count",
"amountCents"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/gift-cards/batch" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"count":1,"amountCents":100}'
```
## Resposta 201
# Recarregar gift card (https://docs.rivoo.gg/api/referencia/gift-cards/recarregar-gift-card)
`POST https://api.rivoo.gg/v1/gift-cards/{id}/top-up`
Adiciona saldo a um gift card.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"amountCents": {
"type": "number",
"minimum": 100,
"maximum": 1000000
}
},
"required": [
"amountCents"
]
}
```
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/gift-cards/{id}/top-up" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amountCents":100}'
```
## Resposta 200
# Ver gift card (https://docs.rivoo.gg/api/referencia/gift-cards/ver-gift-card)
`GET https://api.rivoo.gg/v1/gift-cards/{id}`
Devolve o gift card com saldo e usos.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Exemplo
```bash
curl -X GET "https://api.rivoo.gg/v1/gift-cards/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 200
# Alterar gift card (https://docs.rivoo.gg/api/referencia/gift-cards/alterar-gift-card)
`PATCH https://api.rivoo.gg/v1/gift-cards/{id}`
Altera validade ou desativa o gift card.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
## Corpo (JSON)
```json
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ACTIVE",
"DISABLED"
]
},
"note": {
"type": "string",
"nullable": true,
"maxLength": 200
},
"expiresAt": {
"type": "string",
"nullable": true
}
}
}
```
## Exemplo
```bash
curl -X PATCH "https://api.rivoo.gg/v1/gift-cards/{id}" \
-H "Authorization: Bearer $RIVOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
## Resposta 200
# Reenviar gift card (https://docs.rivoo.gg/api/referencia/gift-cards/reenviar-gift-card)
`POST https://api.rivoo.gg/v1/gift-cards/{id}/resend`
Manda de novo o e-mail com o código do gift card.
Autenticação: `Authorization: Bearer `.
## Parâmetros
| Nome | Onde | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | path | sim | |
| `Idempotency-Key` | header | não | Chave única por operação (ex.: o id do pedido no seu sistema). Repetir a chamada com a mesma chave devolve a mesma resposta, sem duplicar. |
## Exemplo
```bash
curl -X POST "https://api.rivoo.gg/v1/gift-cards/{id}/resend" \
-H "Authorization: Bearer $RIVOO_API_KEY"
```
## Resposta 202