> 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/deferrals.md).

# Deferrals

Configure participant deferrals (rolling registration credit forward to a future event). The API exposes the primary deferral schedule for an event; admin users with multi-tier deferrals continue to manage them via the admin UI.

## Read the event's primary deferral schedule

> Returns the active (lowest-position, not yet expired) deferral\
> schedule, or \`null\` if none exists.<br>

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Deferrals","description":"Configure participant deferrals (rolling registration credit forward to a\nfuture event). The API exposes the primary deferral schedule for an\nevent; admin users with multi-tier deferrals continue to manage them via\nthe 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":{"DeferralSchedule":{"type":"object","required":["id","defer_to_event_id","defer_to_group_id","valid_until","timezone","discount_type","discount_amount"],"properties":{"id":{"type":"integer","format":"int64"},"defer_to_event_id":{"type":"integer","format":"int64","nullable":true,"description":"Event id participants get credit for, or null if the credit goes to a Group."},"defer_to_group_id":{"type":"integer","format":"int64","nullable":true,"description":"Group id participants get credit for, or null when defer_to_event_id is set."},"valid_until":{"type":"string","format":"date-time","nullable":true,"description":"Cutoff datetime for accepting deferral requests."},"timezone":{"type":"string","nullable":true,"description":"IANA timezone of the schedule."},"discount_type":{"type":"string","enum":["percentage","fixed_amount"]},"discount_amount":{"type":"integer","description":"0–100 when discount_type=percentage, integer cents when fixed_amount."}}},"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}/deferral_schedule":{"get":{"tags":["Deferrals"],"summary":"Read the event's primary deferral schedule","description":"Returns the active (lowest-position, not yet expired) deferral\nschedule, or `null` if none exists.\n","operationId":"getDeferralSchedule","parameters":[{"$ref":"#/components/parameters/EventHandle"}],"responses":{"200":{"description":"Deferral schedule (or null)","content":{"application/json":{"schema":{"type":"object","required":["deferral_schedule"],"properties":{"deferral_schedule":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/DeferralSchedule"}]}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"}}}}}}
````

## Create, update, or remove the primary deferral schedule

> Pass \`allow\_deferrals: false\` to delete all deferral schedules for the\
> event. Otherwise pass the configuration fields; if a schedule already\
> exists it is updated in place, otherwise a new one is created.\
> The \`defer\_to\_event\_id\` must reference an event that already exists.<br>

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Deferrals","description":"Configure participant deferrals (rolling registration credit forward to a\nfuture event). The API exposes the primary deferral schedule for an\nevent; admin users with multi-tier deferrals continue to manage them via\nthe 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":{"DeferralScheduleUpdate":{"type":"object","properties":{"allow_deferrals":{"type":"boolean","description":"Pass false to delete all deferral schedules for the event."},"defer_to_event_id":{"type":"integer","format":"int64","nullable":true,"description":"Required (when allow_deferrals is not false). Event id the participant will get credit for."},"valid_until":{"type":"string","format":"date-time","nullable":true},"timezone":{"type":"string","nullable":true},"discount_type":{"type":"string","enum":["percentage","fixed_amount"]},"discount_amount":{"type":"number","description":"0–100 when percentage; integer cents when fixed_amount."}}},"DeferralSchedule":{"type":"object","required":["id","defer_to_event_id","defer_to_group_id","valid_until","timezone","discount_type","discount_amount"],"properties":{"id":{"type":"integer","format":"int64"},"defer_to_event_id":{"type":"integer","format":"int64","nullable":true,"description":"Event id participants get credit for, or null if the credit goes to a Group."},"defer_to_group_id":{"type":"integer","format":"int64","nullable":true,"description":"Group id participants get credit for, or null when defer_to_event_id is set."},"valid_until":{"type":"string","format":"date-time","nullable":true,"description":"Cutoff datetime for accepting deferral requests."},"timezone":{"type":"string","nullable":true,"description":"IANA timezone of the schedule."},"discount_type":{"type":"string","enum":["percentage","fixed_amount"]},"discount_amount":{"type":"integer","description":"0–100 when discount_type=percentage, integer cents when fixed_amount."}}},"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}/deferral_schedule":{"patch":{"tags":["Deferrals"],"summary":"Create, update, or remove the primary deferral schedule","description":"Pass `allow_deferrals: false` to delete all deferral schedules for the\nevent. Otherwise pass the configuration fields; if a schedule already\nexists it is updated in place, otherwise a new one is created.\nThe `defer_to_event_id` must reference an event that already exists.\n","operationId":"updateDeferralSchedule","parameters":[{"$ref":"#/components/parameters/EventHandle"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeferralScheduleUpdate"}}}},"responses":{"200":{"description":"Schedule created/updated, or all schedules removed","content":{"application/json":{"schema":{"type":"object","required":["deferral_schedule"],"properties":{"deferral_schedule":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/DeferralSchedule"}]}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"},"422":{"description":"Validation error or unknown defer_to_event_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://movemint.gitbook.io/movemint-developer-docs/open-api-specification/core-resources/deferrals.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
