Axuz Developers

POST /teams/{teamId}/billing/redeem-coupon

Resgata cupom pela primeira vez (não aplica ainda)

  • Access: Team admin
  • Service: https://api-billing.axuz.net

Accepted authentication

  • sessionCookie — Sessão plena Axuz (cookie de sessão da casa). Sessão restrita é 403 enrollment_required.
  • bearerSession — JWT de acesso da sessão em `Authorization: Bearer`.

Responde POST /teams/{teamId}/billing/coupons/ redeem — o time resgata um cupom pela primeira vez. Em transação com FOR UPDATE no coupon: valida validade/estoque/uniqueness por team; INSERT em coupon_redemptions; UPDATE incrementando used_count.

A unicidade do par (cupom, time) tem DUAS guardas, e é de propósito (O-014): o FOR UPDATE + EXISTS serializam quem entra por aqui, e idx_coupon_redemptions_team_unique (migration 007) recusa no banco quem escrever por qualquer outro caminho. A violação do índice volta 409, igual ao caminho do lock — ver isRedemptionConflict.

A aplicação do desconto na próxima invoice fica pro path de invoicing (ApplyCouponToInvoice).

Parameters

NameInTypeRequiredDescription
teamIdpathstringyes

Request body

application/json · Required

NameTypeRequiredDescription
codestringyes
{
  "code": "string"
}

Responses

200

ok

NameTypeRequiredDescription
okbooleanno

400

input inválido

NameTypeRequiredDescription
errorstringyes

401

Sem credencial valida

NameTypeRequiredDescription
errorstringyes

403

Sem permissao (nao e owner/admin; token sem escopo; token de integracao em rota nao permitida)

NameTypeRequiredDescription
errorstringyes

404

recurso não encontrado

NameTypeRequiredDescription
errorstringyes

409

já resgatado

NameTypeRequiredDescription
errorstringyes

410

inativo/expirado/exhausted

NameTypeRequiredDescription
errorstringyes

429

Limite de requisições excedido.

NameTypeRequiredDescription
errorstringyes

500

erro interno

NameTypeRequiredDescription
errorstringyes

Examples

"Try it" is turned off in this reference. Use the examples with your test credential.

curl

curl -sS -X POST 'https://api-billing.axuz.net/teams/TEAM_ID/billing/redeem-coupon' \
  -H "Authorization: Bearer $AXUZ_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code":"string"}'

Node.js

const res = await fetch("https://api-billing.axuz.net/teams/TEAM_ID/billing/redeem-coupon", {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.AXUZ_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "code": "string"
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
console.log(await res.json());

Python

import os
import requests

res = requests.request(
    "POST",
    "https://api-billing.axuz.net/teams/TEAM_ID/billing/redeem-coupon",
    headers={
        "Authorization": f"Bearer {os.environ['AXUZ_TOKEN']}",
    },
    json={
        "code": "string",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())