Pode ser minha década de experiência trabalhando em bancos, mas a maneira como imagino o resgate de pontos é emitindo eventos personalizados de valor negativo.
Por exemplo, digamos que você tenha um usuário que queira resgatar pontos por uma camiseta, e essa camiseta custe 10 mil pontos. O fluxo em seu sistema de resgate seria:
-
Verifique se o usuário tem pontos suficientes:
curl https://meta.discourse.org/u/falco.json -s | jq . | grep score "gamification_score": 89386, -
Emita um evento de “saque de pontos”
jo -p user_id="13" date="2023-04-14" points="-10000" description="Resgate de Camiseta - pedido #123" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Você vai querer envolver isso em um semáforo de algum tipo, pois este é o exemplo clássico de uso deles, mas essa é a essência do fluxo de trabalho proposto.
Este é um recurso muito recente, então me diga se o fluxo de trabalho proposto não funcionar corretamente.
Está funcionando bem para mim, tanto no navegador quanto via API. É um endpoint de administrador, então você precisa estar logado como administrador pelo navegador ou passar chaves de API como explicado no OP.
