Eventos de dados
Quando um jogador revoga, esquece o seu jogo, troca o apelido ou exclui a conta, o uloggd avisa o seu servidor, e você repete o que ele fez.
A LGPD (art. 18 §6) obriga o uloggd a avisar todos com quem compartilhou os dados de um jogador quando ele os corrige ou apaga. No Arcade, esse alguém é você. Quando um jogador revoga o acesso do seu jogo, esquece o seu jogo, troca o apelido ou exclui a conta, o uloggd manda ao seu servidor um evento assinado, e você repete a correção ou a exclusão em até 15 dias.
Declare a URL
Todo lançamento que pede identify precisa declarar uma URL de eventos de
dados; sem ela, é recusado com data_events_url_required. A URL segue as
mesmas regras da URL de entrada (https, porta 443, um host público, veja
Hospedagem), só que a origem e o caminho
dela podem ser diferentes dos da entrada. Quem revisa confere que ela
funciona.
Os eventos
event | Quando | O que você faz |
|---|---|---|
grant_revoked | O jogador revogou o acesso do seu jogo em Configurações > Arcade. | Encerre as sessões do jogador, pare de usar o sub e o apelido que o uloggd entregou e apague o que você guarda com base naquele consentimento, exceto o que a lei deixa você manter. Se o jogador aceitar de novo depois, o sub é o mesmo. |
grant_forgotten | O jogador escolheu Esquecer este jogo. | Apague tudo o que está ligado àquele sub. Se o jogador voltar, volta com um sub novo. |
nickname_changed | O jogador editou o apelido. | Troque o apelido guardado pelo nickname do evento. |
account_deleted | A conta do jogador no uloggd foi excluída. | Apague tudo o que está ligado àquele sub. |
Só jogadores geram eventos: as identidades que quem revisa usa nas revisões nunca geram nenhum.
Entrega
POST /uloggd-events HTTP/1.1
Host: events.example.com
Content-Type: application/json
{"event_token":"eyJhbGciOiJFUzI1NiIs..."}- O uloggd envia à URL de eventos de dados do lançamento ao vivo do aplicativo, ou do lançamento aprovado mais recente quando nenhum está ao vivo. Nunca à sua URL de desenvolvimento, que troca só o endereço do jogo.
- Qualquer 2xx respondido em até 5 segundos é uma entrega. Responda assim que o token for verificado, e faça o trabalho depois.
- Redirecionamentos não são seguidos, e nenhum cookie é enviado.
- Uma entrega que falha é tentada de novo depois de 1 minuto, 5 minutos, 30 minutos, 2 horas e 6 horas, e então a cada 12 horas por 7 dias. Depois disso, o evento é marcado como falho.
- A seção Dados dos jogadores do portal mostra os eventos pendentes e os falhos, e enquanto as entregas falham você recebe no máximo um e-mail por dia por aplicativo.
- O mesmo evento pode chegar mais de uma vez: uma entrega que estourou o tempo depois de você tratá-la é tentada de novo. Faça cada tratamento idempotente.
- O
jtido token é o id do evento, e é o mesmo em toda nova tentativa. Elimine duplicados porjti. - Os eventos de um jogador chegam um de cada vez e em ordem: o seguinte espera enquanto o anterior está sendo entregue ou aguarda a próxima tentativa.
Antes da aprovação
- Até um lançamento do aplicativo ser aprovado ou estar ao vivo, não existe URL de eventos de dados para onde enviar.
- Os eventos das permissões que você mesmo deu nos seus testes, no modo de teste ou na URL de desenvolvimento, esperam sem ser tentados.
- Eles são entregues quando um lançamento com URL de eventos de dados é aprovado.
- Um evento que ainda espera depois de 30 dias é descartado.
O token do evento
header { "alg": "ES256", "typ": "uloggd-arcade-event+jwt", "kid": "arc-2026-10" }
payload {
"iss": "https://uloggd.com",
"aud": "ID_DO_SEU_APLICATIVO",
"sub": "4f1c2b7e-...",
"event": "nickname_changed",
"nickname": "Ada L.", só com nickname_changed
"iat": 1791860000,
"exp": 1792464800, iat + 7 dias
"jti": "5a0b13c4-..."
}Confira-o como você confere um token de identidade (veja
Identidade), com o mesmo conjunto de
chaves e a mesma tolerância de 60 segundos no relógio, com estas diferenças:
typ é uloggd-arcade-event+jwt; não há nonce, scope nem mode; e ele
vale por 7 dias, então só o recuse depois que exp passar. Num servidor que
não roda JavaScript, siga
Verificação em outras linguagens.
import { verifyEventToken } from "@uloggd/arcade-sdk/server";
app.post("/uloggd-events", express.json({ limit: "8kb" }), async (req, res) => {
let event;
try {
event = await verifyEventToken(req.body.event_token, {
appId: process.env.ULOGGD_APP_ID,
});
} catch {
return res.status(400).end();
}
// { subject, event, nickname?, id, issuedAt }
await jobs.enqueue(event); // tratado depois da resposta
res.status(204).end();
});O seu dever
Os termos de desenvolvedor do Arcade exigem que você aja sobre cada evento em até 15 dias, e que apague os dados dos jogadores quando o seu aplicativo é removido do Arcade. Guarde um registro do que você fez com cada um.
Verificação em outras linguagens
Verificadores completos dos tokens de identidade e de eventos de dados, com as mesmas regras e os mesmos códigos de recusa do SDK para Node.
Testes
Desenvolva offline no simulador, e depois jogue o seu jogo dentro do uloggd, da sua máquina ou de um lançamento, antes de alguém revisá-lo.