> For the complete documentation index, see [llms.txt](https://docs.stellic.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stellic.com/stellic-partner-api/registration/update-a-registration-time-ticket.md).

# Update a registration time ticket

Use this endpoint to move a ticket's window, for example to open registration earlier or extend it. Send `timestamp`, `end_timestamp`, or both, in UTC as `YYYY-MM-DD HH:MM`. Nothing else can change: to change the student, term, or `registration_type`, delete the ticket and create a new one.

## PUT /planner/registration/registration\_time/{registration\_time\_id}

>

```json
{"openapi":"3.0.0","info":{"title":"Stellic for Developers","version":"1.0"},"tags":[{"name":"Registration"}],"servers":[{"url":"https://{institution}.stellic.com/partnerapi/v1","variables":{"institution":{"default":"{institution}","description":"Your institution's Stellic subdomain: the part before `.stellic.com` in the URL you use to sign in. It becomes the host in every request, as in `https://{institution}.stellic.com/partnerapi/v1/...`. Replace the `{institution}` placeholder with your subdomain before sending."}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Personal Access Token issued by your Stellic integration partner. Send it as `Authorization: Bearer <token>` on every request. One token per institution; do not share across environments."}},"schemas":{"RegistrationTimeRequestPut":{"type":"object","properties":{"timestamp":{"type":"string","description":"When the window opens, in UTC, as `YYYY-MM-DD HH:MM`. Invalid or unparseable date values return 400."},"end_timestamp":{"type":"string","nullable":true,"description":"When the window closes, in UTC, as `YYYY-MM-DD HH:MM`. Leave it out to keep the stored end time; send `null` to clear it."}}},"RegistrationTimeResponse":{"type":"object","properties":{"registration_time_id":{"type":"string"},"registration_type":{"type":"string"},"timestamp":{"type":"string","description":"When the window opens, in UTC."},"end_timestamp":{"type":"string","nullable":true,"description":"When the window closes, in UTC, or `null` for a window with no end."},"student":{"type":"string","description":"Username of the student the ticket belongs to."},"usem":{"type":"object","properties":{"semester":{"type":"string"},"year":{"type":"integer"}}},"enrollment_levels":{"type":"array","description":"Enrollment levels the ticket is scoped to; empty when it applies to all levels.","items":{"type":"object","properties":{"name":{"type":"string"},"display_name":{"type":"string"}}}}}}}},"paths":{"/planner/registration/registration_time/{registration_time_id}":{"put":{"tags":["Registration"],"parameters":[{"name":"registration_time_id","in":"path","required":true,"description":"The ticket's identifier, as sent when it was created.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationTimeRequestPut"}}}},"responses":{"200":{"description":"Time ticket updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationTimeResponse"}}}},"400":{"description":"Validation failure. Body is `{\"success\": false, \"errors\": [{\"message\": \"...\"}]}`.\n\nCommon causes:\n- Empty body - returns `No payload provided`\n- Neither timestamp provided - returns ``At least one of `timestamp` or `end_timestamp` must be provided for updating.``\n- Time ticket not found - returns ``RegistrationTime with id: `{id}` does not exist``\n- Archived student - returns ``Cannot update a Registration Time id = `{id}` that links to a student who is no longer active: `{student_username}` ``\n- Empty or falsy `timestamp` (including `null`, `false`, `0`, an empty string, array, or object) - returns `Start timestamp cannot be empty.`\n- Unparseable timestamp values that reach the date parser - returns ``Invalid datetime format: `{value}`. Expected format is `YYYY-MM-DD HH:MM` ``\n- `end_timestamp` before `timestamp` (the stored value is used for the one you don't send) - returns `End timestamp cannot be before the start timestamp.`","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"errors":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"401":{"description":"Missing or invalid Bearer token."},"403":{"description":"Your IP address isn't on the allowlist for this endpoint. Contact Stellic to add it; the response includes the `client_ip` Stellic saw.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"client_ip":{"type":"string"}}}}}}}}}}}
```

#### What happens after the call

* The new window applies right away and the response is the updated ticket.

#### Notes

* **A single time is checked against the stored one.** Sending only `end_timestamp` that lands before the stored `timestamp` (or the reverse) returns a 400.
* **You can remove an end time.** Send `null` for `end_timestamp` to make the ticket open-ended without deleting and recreating it.
* **Tickets of archived students can't be changed.** You don't need to send `student_username`; the error identifies the student linked to the ticket.

#### Related APIs

* [`POST /planner/registration/registration_time/{registration_time_id}`](/stellic-partner-api/registration/create-a-registration-time-ticket.md) to create a ticket.
* [`DELETE /planner/registration/registration_time/{registration_time_id}`](/stellic-partner-api/registration/delete-a-registration-time-ticket.md) to remove a ticket.
