Registrar e sincronizar anúncios
Um anúncio é o registro, na Lootfy, de que um item está à venda no market do seu jogo — com item, descrição, quantidade e preço em reais. Registrar o anúncio é o que torna um item comprável pela plataforma; manter o anúncio sincronizado com o que de fato existe no jogo é o que impede a plataforma de vender o que já foi consumido. Esta página cobre os dois lados: registrar (POST /v1/api/market/listings) e manter (PUT /v1/api/market/listings).
Para o dono de servidor: quando um jogador coloca um item à venda no seu market, o seu servidor espelha esse anúncio na Lootfy. Se depois o item some — vendido pela moeda do jogo, ou retirado —, o seu servidor avisa. Esse espelhamento constante é o que evita que alguém pague por um item que não está mais lá.
Antes de anunciar: as três pré-condições do vendedor
Seção intitulada “Antes de anunciar: as três pré-condições do vendedor”O anúncio só nasce se o vendedor cumprir três condições, todas obrigatórias:
- ter conta Lootfy;
- ter o personagem vinculado (ver Vincular um personagem);
- ter um recebedor aprovado no PSP — é o que dá destino à fatia dele quando o dinheiro for dividido.
Faltando qualquer uma, o registro é recusado com um 400 que diz qual delas falta. A message já vem em pt-BR pronta para exibir ao jogador — repasse-a.
Pré-checar antes de tentar ✅ disponível
Seção intitulada “Pré-checar antes de tentar ”Descobrir a recusa só ao tentar anunciar é ruim: o jogador preenche item, quantidade e preço para então levar um 400. A rota de elegibilidade responde isso antes, para você desabilitar (ou explicar) a opção de anunciar já na tela do jogo.
GET /v1/api/market/eligibility/char-777X-Service-Api-Key: <sua-api-key>X-Lootfy-Signature: <protegido>..<assinatura>// 200{ "data": { "allowed": false, "blocker": "SELLING_BLOCKED", // NOT_LINKED | CHARACTER_BANNED | SELLING_BLOCKED "message": "Cadastre seus dados de recebimento para poder vender.", "linked": true, "banned": false, "selling": { "allowed": false, "blockers": ["RECIPIENT_MISSING"], "message": "Cadastre seus dados de recebimento para poder vender.", "action": "CREATE_RECIPIENT" }} }Registrar o anúncio ✅ disponível
Seção intitulada “Registrar o anúncio ”Esta é uma das duas rotas signature-only: ela é transportada pelo client do jogo, que não pode carregar a sua API key. A identidade é o kid da assinatura, sozinho.
POST /v1/api/market/listingsX-Lootfy-Signature: <protegido>..<assinatura>Content-Type: application/json
{ "itemRef": "srv-offer-9931", "gameItemId": "bow-9", "itemName": "Arco Élfico", "attributes": "Ataque 140, Destreza +12, Encantado com Fogo", "quantityListed": 5, "unitAmountCents": 7000, "sellerCharacterRef": "char-777"}// 200{ "data": { "id": 88, "itemRef": "srv-offer-9931", "gameItemId": "bow-9", "itemName": "Arco Élfico", "attributes": "Ataque 140, Destreza +12, Encantado com Fogo", "unitAmountCents": 7000, "quantityListed": 5, "quantitySold": 0, "observedQuantity": null, "observedAt": null, "status": "ACTIVE", "createdAt": "2026-09-14T12:00:00.000Z", "updatedAt": "2026-09-14T12:00:00.000Z", "withdrawnAt": null} }Os campos que exigem atenção:
itemRefidentifica o anúncio e é a chave por onde ele é reencontrado depois (para ajustar ou retirar). É único por servidor e não reciclável: repetir umitemRefjá usado responde409, mesmo que o anúncio anterior já esteja retirado. Escolha um valor que sobreviva a um ciclo de save do seu servidor — é a capacidade B1 dos pré-requisitos.attributesé texto livre, montado por você — até 255 caracteres, e vazio é recusado. A plataforma não interpreta, não quebra em pares e não reformata: exibe como veio. Ele é a descrição do item para o comprador e a prova do que foi prometido numa disputa.unitAmountCentsé o preço unitário em centavos. É aqui que o preço é declarado — ele não viaja na compra depois.
Manter o anúncio ✅ disponível
Seção intitulada “Manter o anúncio ”O anúncio, uma vez registrado, só encolhe pelas próprias vendas da plataforma. Mas a moeda do jogo pode consumir a mesma listagem sem passar por nós, e o vendedor pode simplesmente retirar o item. Ajustar ou retirar anúncio (PUT /v1/api/market/listings) é como você conta isso à plataforma. É uma rota service (API key + JWS), servidor→servidor.
Ela tem duas ações:
PUT /v1/api/market/listingsX-Service-Api-Key: <sua-api-key>X-Lootfy-Signature: <protegido>..<assinatura>Content-Type: application/json
{ "action": "ADJUST_STOCK", "itemRef": "srv-offer-9931", "observedQuantity": 3 }Informa a quantidade que o servidor observa disponível agora. observedQuantity: 0 marca o anúncio como esgotado sem retirá-lo — uma observação futura pode corrigi-lo para cima.
PUT /v1/api/market/listingsX-Service-Api-Key: <sua-api-key>X-Lootfy-Signature: <protegido>..<assinatura>Content-Type: application/json
{ "action": "WITHDRAW", "itemRef": "srv-offer-9931" }Retira o anúncio de vez. WITHDRAW é definitivo: um anúncio retirado não volta a ficar ativo por observação de estoque.
Como esta é uma rota service, o jti é nonce: gere um novo a cada chamada. Repetir o mesmo envelope responde 401 Requisição já processada.