Skip to content

Resgata um produto com o saldo de pontos

POST/api/storefront/products/{productId}/redeem

Auth
Requires a token
API key:
store:write
X-CommunityId
X-CommunityId Send the X-CommunityId of the community the operation happens in.
Endpoint descriptions come straight from the API specification and are in Portuguese for now. The interface around them is translated.

Membro da comunidade do `X-CommunityId`, com o saldo de pontos ligado (gamificação ligada; senão 409 `points.unavailable`). Só produto com `pricingMode` `POINTS` ou `POINTS_OR_MONEY` (400 `points.notForPoints`), **1 unidade por resgate**. Nunca chama o processador de pagamento: a compra nasce `COMPLETED`, `pricePaid` 0, `paymentMethod` `POINTS`, `pointsPaid`, `provider` `NONE`, sem taxa, lançamento ou repasse; o acesso (curso, ingresso, download, espaço) é concedido como no gratuito; estoque e "1 por pessoa" valem (409); físico pede `shippingAddress`. Saldo menor que o preço → 400 `points.insufficient` com `data.missing` (inclusive com saldo negativo). Resgates em paralelo da mesma pessoa passam um de cada vez (trava por comunidade e pessoa): só gasta quem tem saldo. Com o mesmo `Idempotency-Key`, devolve a compra que já existe sem gastar de novo (200). Compra pela empresa (`companyId`) e cupom não valem com pontos. Pontos não se compram, não viram dinheiro e não se transferem. Valem as mesmas regras de acesso do checkout em dinheiro: o produto precisa estar à venda para a pessoa (numa Loja que ela abre ou com o link direto ligado) e, se for curso, evento ou download, o espaço dele precisa abrir para ela (restrição por grupo, plano, produto ou nível) — senão 403 `monetization.purchase.notPurchasable`; adicional (produto que exige plano) dá 400; comunidade suspensa dá 403; produto inativo, rascunho, excluído ou de outra comunidade dá 404.

Parameters

NameInTypeDescription
productIdrequiredpathstring (uuid)

Headers

NameTypeDescription
X-CommunityIdoptionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.
Idempotency-Keyoptionalstring

Request body application/json

NameTypeDescription
shippingAddressoptionalobjectSó produto físico, como no checkout.

Responses

StatusDescription
200O mesmo `Idempotency-Key` de um resgate feito: a compra que já existe, sem gastar de novo.
201Resgatado.
400Não aceita pontos, saldo insuficiente (`data.missing`), endereço faltando, empresa, adicional sem o plano.
401Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`).
403Produto fora de venda para a pessoa (Loja ou espaço que ela não abre, sem link direto) ou comunidade suspensa.
404Recurso não encontrado.
409Esgotado, já tem, ou saldo de pontos desligado.

curl example

curl -X POST "https://api.memberfy.net/api/storefront/products/<productId>/redeem" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{}'