Skip to main content
POST
/
rewards
/
{reward_uid}
/
redeem
Resgatar Reward
curl --request POST \
  --url https://api.example.com/rewards/{reward_uid}/redeem \
  --header 'Content-Type: application/json' \
  --data '
{
  "quantity": 123,
  "notes": "<string>"
}
'
{
  "success": true,
  "redemption": {
    "id": "rdm_001",
    "reward_uid": "rwd_001",
    "product_name": "Pizza Margherita Grande",
    "points_spent": 200,
    "quantity": 1,
    "status": "pending",
    "code": "INDIQ-A1B2C3",
    "qr_code_url": "https://api.indiqai.com/qr/rdm_001",
    "expires_at": "2024-06-27T23:59:59Z",
    "created_at": "2024-06-20T15:30:00Z"
  },
  "updated_balance": {
    "points_before": 350,
    "points_after": 150,
    "points_spent": 200
  }
}

Resgatar Reward

Troca pontos do usuário por um prêmio específico.

Path Parameters

reward_uid
string
required
UID do reward a ser resgatado

Request Body

quantity
integer
default:1
Quantidade de unidades (se aplicável)
notes
string
Observações para o resgate

Request

curl -X POST "https://api.indiqai.com/api/v1/rewards/rwd_001/redeem" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "quantity": 1,
    "notes": "Sem cebola, por favor"
  }'

Response

{
  "success": true,
  "redemption": {
    "id": "rdm_001",
    "reward_uid": "rwd_001",
    "product_name": "Pizza Margherita Grande",
    "points_spent": 200,
    "quantity": 1,
    "status": "pending",
    "code": "INDIQ-A1B2C3",
    "qr_code_url": "https://api.indiqai.com/qr/rdm_001",
    "expires_at": "2024-06-27T23:59:59Z",
    "created_at": "2024-06-20T15:30:00Z"
  },
  "updated_balance": {
    "points_before": 350,
    "points_after": 150,
    "points_spent": 200
  }
}

Campos da Resposta

redemption
object
Dados do resgate realizado
updated_balance
object
Saldo atualizado após o resgate

Status do Resgate

Resgate realizado, aguardando uso no estabelecimento. O usuário deve apresentar o código ou QR Code.
Prêmio foi entregue e validado pelo estabelecimento.
Prazo de uso expirou sem validação. Os pontos não são devolvidos automaticamente.
Resgate cancelado (pelo usuário ou admin). Pontos são devolvidos.

Validações

O endpoint valida:
  • Usuário tem pontos suficientes
  • Reward existe e está ativo
  • Tem estoque disponível
  • Não expirou
  • Usuário não excedeu limite de resgates (se houver)

Fluxo Completo

1

Usuário escolhe prêmio

No app, visualiza catálogo e seleciona reward
2

Confirma resgate

Chama POST /rewards/{uid}/redeem
3

Recebe código

App exibe código e QR Code
4

Apresenta no estabelecimento

Funcionário valida usando dashboard ou app
5

Prêmio entregue

Status muda para validated

Cache Invalidation

Após resgate bem-sucedido, o cache da timeline e do saldo é automaticamente invalidado.