GreenFlow docs

Cupons

Os cupons de desconto se encaixam em /fleet/show (pré-visualização do preço) e em /bookings (aplicar na venda). A lógica de validação é compartilhada; os motivos de erro são estáveis.

POST /coupons/validate

Pré-verificação antes de mostrar um desconto na UI. Idempotente — audita cada tentativa mas não consome slot de uso.

bash
curl -X POST https://greenflow.live/api/v1/coupons/validate \
  -H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "SUMMER25",
    "brand": 11,
    "rate": "011880",
    "country_id": 31,
    "days": 3
  }'
json
{
  "data": {
    "code": "SUMMER25",
    "discount_type": "percentage",
    "discount_value": 25.0,
    "currency": null,
    "discount_code": "S25BR",
    "stackable": false
  }
}

Fluxo em três passos

Chame POST /coupons/validate da UI, depois passe coupon_code em POST /fleet/show para ver o preço com desconto, e novamente em POST /bookings para fixá-lo. O último passo é o que consome o slot de uso.

Erros

HTTPBodyCausa
404{"error": "coupon_not_found"}Code doesn't exist.
422{"error": "coupon_not_valid"}Expired, outside window, no uses left.
422{"error": "coupon_brand_or_rate_mismatch"}Brand or rate does not apply.
422{"error": "coupon_country_mismatch"}Country does not apply.
422{"error": "coupon_days_out_of_range"}Days outside min/max.