> For the complete documentation index, see [llms.txt](https://movemint.gitbook.io/movemint-developer-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://movemint.gitbook.io/movemint-developer-docs/open-api-specification/core-resources/discounts.md).

# Discounts

Manage event-level discount codes. Series-level and Group-level discounts are out of scope for this API — they remain in the admin UI.

## GET /api/v1/events/{handle}/discounts

> List event discounts

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Discounts","description":"Manage event-level discount codes. Series-level and Group-level discounts\nare out of scope for this API — they remain in the admin UI.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}}},"schemas":{"Discount":{"type":"object","required":["id","redemption_code","percentage_off","fixed_amount_off_cents","fixed_amount_off_dollars","times_redeemable","times_redeemed","redeem_by","description","minimum_event_participant_count","eligible_event_variant_ids"],"properties":{"id":{"type":"integer","format":"int64"},"redemption_code":{"type":"string"},"percentage_off":{"type":"integer","nullable":true},"fixed_amount_off_cents":{"type":"integer","nullable":true},"fixed_amount_off_dollars":{"type":"number","nullable":true},"times_redeemable":{"type":"integer","nullable":true},"times_redeemed":{"type":"integer"},"redeem_by":{"type":"string","format":"date-time","nullable":true},"description":{"type":"string","nullable":true},"minimum_event_participant_count":{"type":"integer","nullable":true},"eligible_event_variant_ids":{"type":"array","items":{"type":"integer","format":"int64"}}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/discounts":{"get":{"tags":["Discounts"],"summary":"List event discounts","operationId":"listEventDiscounts","parameters":[{"$ref":"#/components/parameters/EventHandle"}],"responses":{"200":{"description":"Discounts","content":{"application/json":{"schema":{"type":"object","required":["discounts"],"properties":{"discounts":{"type":"array","items":{"$ref":"#/components/schemas/Discount"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"}}}}}}
````

## POST /api/v1/events/{handle}/discounts

> Create a discount

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Discounts","description":"Manage event-level discount codes. Series-level and Group-level discounts\nare out of scope for this API — they remain in the admin UI.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}}},"schemas":{"CreateDiscountRequest":{"type":"object","required":["redemption_code"],"properties":{"redemption_code":{"type":"string"},"percentage_off":{"type":"integer","minimum":1,"maximum":100},"fixed_amount_off_cents":{"type":"integer","minimum":1},"times_redeemable":{"type":"integer","minimum":0},"redeem_by":{"type":"string","format":"date-time"},"description":{"type":"string"},"minimum_event_participant_count":{"type":"integer","minimum":0},"eligible_event_variant_ids":{"type":"array","items":{"type":"integer"}}}},"Discount":{"type":"object","required":["id","redemption_code","percentage_off","fixed_amount_off_cents","fixed_amount_off_dollars","times_redeemable","times_redeemed","redeem_by","description","minimum_event_participant_count","eligible_event_variant_ids"],"properties":{"id":{"type":"integer","format":"int64"},"redemption_code":{"type":"string"},"percentage_off":{"type":"integer","nullable":true},"fixed_amount_off_cents":{"type":"integer","nullable":true},"fixed_amount_off_dollars":{"type":"number","nullable":true},"times_redeemable":{"type":"integer","nullable":true},"times_redeemed":{"type":"integer"},"redeem_by":{"type":"string","format":"date-time","nullable":true},"description":{"type":"string","nullable":true},"minimum_event_participant_count":{"type":"integer","nullable":true},"eligible_event_variant_ids":{"type":"array","items":{"type":"integer","format":"int64"}}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/discounts":{"post":{"tags":["Discounts"],"summary":"Create a discount","operationId":"createEventDiscount","parameters":[{"$ref":"#/components/parameters/EventHandle"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDiscountRequest"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["discount"],"properties":{"discount":{"$ref":"#/components/schemas/Discount"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## GET /api/v1/events/{handle}/discounts/{id}

> Get a discount

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Discounts","description":"Manage event-level discount codes. Series-level and Group-level discounts\nare out of scope for this API — they remain in the admin UI.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}},"ResourceId":{"name":"id","in":"path","required":true,"description":"The ID of the resource","schema":{"type":"integer","format":"int64"}}},"schemas":{"Discount":{"type":"object","required":["id","redemption_code","percentage_off","fixed_amount_off_cents","fixed_amount_off_dollars","times_redeemable","times_redeemed","redeem_by","description","minimum_event_participant_count","eligible_event_variant_ids"],"properties":{"id":{"type":"integer","format":"int64"},"redemption_code":{"type":"string"},"percentage_off":{"type":"integer","nullable":true},"fixed_amount_off_cents":{"type":"integer","nullable":true},"fixed_amount_off_dollars":{"type":"number","nullable":true},"times_redeemable":{"type":"integer","nullable":true},"times_redeemed":{"type":"integer"},"redeem_by":{"type":"string","format":"date-time","nullable":true},"description":{"type":"string","nullable":true},"minimum_event_participant_count":{"type":"integer","nullable":true},"eligible_event_variant_ids":{"type":"array","items":{"type":"integer","format":"int64"}}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/discounts/{id}":{"get":{"tags":["Discounts"],"summary":"Get a discount","operationId":"getEventDiscount","parameters":[{"$ref":"#/components/parameters/EventHandle"},{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["discount"],"properties":{"discount":{"$ref":"#/components/schemas/Discount"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"}}}}}}
````

## DELETE /api/v1/events/{handle}/discounts/{id}

> Delete a discount

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Discounts","description":"Manage event-level discount codes. Series-level and Group-level discounts\nare out of scope for this API — they remain in the admin UI.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}},"ResourceId":{"name":"id","in":"path","required":true,"description":"The ID of the resource","schema":{"type":"integer","format":"int64"}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}}},"paths":{"/api/v1/events/{handle}/discounts/{id}":{"delete":{"tags":["Discounts"],"summary":"Delete a discount","operationId":"deleteEventDiscount","parameters":[{"$ref":"#/components/parameters/EventHandle"},{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean","enum":[true]}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"}}}}}}
````

## PATCH /api/v1/events/{handle}/discounts/{id}

> Update a discount

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Discounts","description":"Manage event-level discount codes. Series-level and Group-level discounts\nare out of scope for this API — they remain in the admin UI.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}},"ResourceId":{"name":"id","in":"path","required":true,"description":"The ID of the resource","schema":{"type":"integer","format":"int64"}}},"schemas":{"UpdateDiscountRequest":{"type":"object","properties":{"redemption_code":{"type":"string"},"percentage_off":{"type":"integer","minimum":1,"maximum":100},"fixed_amount_off_cents":{"type":"integer","minimum":1},"times_redeemable":{"type":"integer","minimum":0},"redeem_by":{"type":"string","format":"date-time"},"description":{"type":"string"},"eligible_event_variant_ids":{"type":"array","items":{"type":"integer"}}}},"Discount":{"type":"object","required":["id","redemption_code","percentage_off","fixed_amount_off_cents","fixed_amount_off_dollars","times_redeemable","times_redeemed","redeem_by","description","minimum_event_participant_count","eligible_event_variant_ids"],"properties":{"id":{"type":"integer","format":"int64"},"redemption_code":{"type":"string"},"percentage_off":{"type":"integer","nullable":true},"fixed_amount_off_cents":{"type":"integer","nullable":true},"fixed_amount_off_dollars":{"type":"number","nullable":true},"times_redeemable":{"type":"integer","nullable":true},"times_redeemed":{"type":"integer"},"redeem_by":{"type":"string","format":"date-time","nullable":true},"description":{"type":"string","nullable":true},"minimum_event_participant_count":{"type":"integer","nullable":true},"eligible_event_variant_ids":{"type":"array","items":{"type":"integer","format":"int64"}}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}},"ValidationError":{"type":"object","description":"A validation error response with a list of error messages","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"List of validation error messages"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/discounts/{id}":{"patch":{"tags":["Discounts"],"summary":"Update a discount","operationId":"updateEventDiscount","parameters":[{"$ref":"#/components/parameters/EventHandle"},{"$ref":"#/components/parameters/ResourceId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDiscountRequest"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","required":["discount"],"properties":{"discount":{"$ref":"#/components/schemas/Discount"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}}}}}}}
````
