Skip to main content
All routes require:
Paths are store-scoped. Dashboard ceiling: manageCoupons. storeId in the JSON body is ignored.

List / create

Scopes: coupon:read · coupon:create · 201
discountType is percentage or fixed. Duplicate codes return 400.

Get / update / delete

Scopes: coupon:read · coupon:update · coupon:delete A coupon from another shop returns 404.