Branches of the approved listing, for choosing where you are redeeming
Owner or staff of that merchant (checked from the database). Send the chosen id as outletId with validate or redeem; it is recorded with the redemption. Empty until the merchant's listing is approved.
Authorization
bearer In: header
Path Parameters
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidResponse Body
application/json
application/json
curl -X GET "https://example.com/v1/rewards/merchants/497f6eca-6276-4993-bfeb-53cbbbba6f08/outlets"{ "outlets": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "area": "string" } ]}Your claim with a short-lived signed QR and online fallback code GET
Proof is private and contains no PII. Refresh the QR before its expiresAt. Pickup always requires online merchant authorization and an atomic redemption; offline signature verification alone cannot confirm inventory or collection. The digital_voucher kind uses this claim proof as its voucher; no external voucher delivery is implied.
Redeem a reward proof as active merchant owner/staff POST
Requires a Better Auth session and an active merchant owner/staff role checked from the database. Corporate users and unrelated merchants have no access; a live platform admin role does not bypass merchant membership. Optional outletId records the branch of the redemption (409 reward_wrong_outlet when the voucher does not work there). Returns no customer account, name, phone, identity-document or health data. Repeated collection returns already_redeemed.