diff --git a/developers/events/gateway-events.mdx b/developers/events/gateway-events.mdx
index 1e69cd1ca4..182a315cda 100644
--- a/developers/events/gateway-events.mdx
+++ b/developers/events/gateway-events.mdx
@@ -428,6 +428,9 @@ Receive events are Gateway events encapsulated in an [event payload](/developers
| [Webhooks Update](/developers/events/gateway-events#webhooks-update) | Guild channel webhook was created, update, or deleted |
| [Message Poll Vote Add](/developers/events/gateway-events#message-poll-vote-add) | User voted on a poll |
| [Message Poll Vote Remove](/developers/events/gateway-events#message-poll-vote-remove) | User removed a vote on a poll |
+| [Guild Scheduled Event Exception Create](/developers/events/gateway-events#guild-scheduled-event-exception-create) | Guild scheduled event exception was created |
+| [Guild Scheduled Event Exception Update](/developers/events/gateway-events#guild-scheduled-event-exception-update) | Guild scheduled event exception was updated |
+| [Guild Scheduled Event Exception Delete](/developers/events/gateway-events#guild-scheduled-event-exception-delete) | Guild scheduled event exception was deleted |
#### Hello
@@ -969,11 +972,12 @@ Sent when a user has subscribed to a guild scheduled event.
###### Guild Scheduled Event User Add Event Fields
-| Field | Type | Description |
-|--------------------------|-----------|---------------------------------|
-| guild_scheduled_event_id | snowflake | ID of the guild scheduled event |
-| user_id | snowflake | ID of the user |
-| guild_id | snowflake | ID of the guild |
+| Field | Type | Description |
+|-------------------------------------|-----------|----------------------------------------------------------|
+| guild_scheduled_event_id | snowflake | ID of the guild scheduled event |
+| user_id | snowflake | ID of the user |
+| guild_id | snowflake | ID of the guild |
+| guild_scheduled_event_exception_id? | snowflake | ID of the guild scheduled event exception, if applicable |
#### Guild Scheduled Event User Remove
@@ -982,11 +986,24 @@ Sent when a user has unsubscribed from a guild scheduled event.
###### Guild Scheduled Event User Remove Event Fields
-| Field | Type | Description |
-|--------------------------|-----------|---------------------------------|
-| guild_scheduled_event_id | snowflake | ID of the guild scheduled event |
-| user_id | snowflake | ID of the user |
-| guild_id | snowflake | ID of the guild |
+| Field | Type | Description |
+|-------------------------------------|-----------|----------------------------------------------------------|
+| guild_scheduled_event_id | snowflake | ID of the guild scheduled event |
+| user_id | snowflake | ID of the user |
+| guild_id | snowflake | ID of the guild |
+| guild_scheduled_event_exception_id? | snowflake | ID of the guild scheduled event exception, if applicable |
+
+#### Guild Scheduled Event Exception Create
+
+Sent when a guild scheduled event exception is created. The inner payload is a [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) object with an additional `guild_id` key.
+
+#### Guild Scheduled Event Exception Update
+
+Sent when a guild scheduled event exception is updated. The inner payload is a [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) object with an additional `guild_id` key.
+
+#### Guild Scheduled Event Exception Delete
+
+Sent when a guild scheduled event exception is deleted. The inner payload is a [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) object with an additional `guild_id` key.
#### Guild Soundboard Sound Create
diff --git a/developers/events/gateway.mdx b/developers/events/gateway.mdx
index bd64d32720..1d70bbe2b3 100644
--- a/developers/events/gateway.mdx
+++ b/developers/events/gateway.mdx
@@ -408,6 +408,9 @@ GUILD_SCHEDULED_EVENTS (1 << 16)
- GUILD_SCHEDULED_EVENT_DELETE
- GUILD_SCHEDULED_EVENT_USER_ADD
- GUILD_SCHEDULED_EVENT_USER_REMOVE
+ - GUILD_SCHEDULED_EVENT_EXCEPTION_CREATE
+ - GUILD_SCHEDULED_EVENT_EXCEPTION_UPDATE
+ - GUILD_SCHEDULED_EVENT_EXCEPTION_DELETE
AUTO_MODERATION_CONFIGURATION (1 << 20)
- AUTO_MODERATION_RULE_CREATE
diff --git a/developers/resources/audit-log.mdx b/developers/resources/audit-log.mdx
index 3f858926da..875eeb46de 100644
--- a/developers/resources/audit-log.mdx
+++ b/developers/resources/audit-log.mdx
@@ -155,6 +155,9 @@ You should assume that your app may run into any field for the changed object, t
| HOME_SETTINGS_UPDATE | 191 | Guild Server Guide was updated | |
| VOICE_CHANNEL_STATUS_UPDATE | 192 | A voice channel status was updated by a user | |
| VOICE_CHANNEL_STATUS_DELETE | 193 | A voice channel status was deleted by a user | |
+| GUILD_SCHEDULED_EVENT_EXCEPTION_CREATE | 200 | Guild Scheduled Event Exception was created | [Guild Scheduled Event Exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) |
+| GUILD_SCHEDULED_EVENT_EXCEPTION_UPDATE | 201 | Guild Scheduled Event Exception was updated | [Guild Scheduled Event Exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) |
+| GUILD_SCHEDULED_EVENT_EXCEPTION_DELETE | 202 | Guild Scheduled Event Exception was deleted | [Guild Scheduled Event Exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) |
\* Object has exception(s) to available keys. See the [exceptions](/developers/resources/audit-log#audit-log-change-object-audit-log-change-exceptions) section below for details.
diff --git a/developers/resources/guild-scheduled-event.mdx b/developers/resources/guild-scheduled-event.mdx
index e1eb39aa2c..dba3bba142 100644
--- a/developers/resources/guild-scheduled-event.mdx
+++ b/developers/resources/guild-scheduled-event.mdx
@@ -14,25 +14,26 @@ A representation of a scheduled event in a [guild](/developers/resources/guild).
###### Guild Scheduled Event Structure
-| Field | Type | Description |
-|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| id | snowflake | the id of the scheduled event |
-| guild_id | snowflake | the guild id which the scheduled event belongs to |
-| channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` |
-| creator_id? * | ?snowflake | the id of the user that created the scheduled event * |
-| name | string | the name of the scheduled event (1-100 characters) |
-| description? | ?string | the description of the scheduled event (1-1000 characters) |
-| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start |
-| scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` |
-| privacy_level | [privacy level](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event |
-| status | [event status](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event |
-| entity_type | [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of the scheduled event |
-| entity_id | ?snowflake | the id of an entity associated with a guild scheduled event |
-| entity_metadata ** | ?[entity metadata](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event |
-| creator? | [user](/developers/resources/user#user-object) object | the user that created the scheduled event |
-| user_count? | integer | the number of users subscribed to the scheduled event |
-| image? | ?string | the [cover image hash](/developers/reference#image-formatting) of the scheduled event |
-| recurrence_rule | ?[recurrence rule](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object) | the definition for how often this event should recur |
+| Field | Type | Description |
+|----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| id | snowflake | the id of the scheduled event |
+| guild_id | snowflake | the guild id which the scheduled event belongs to |
+| channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` |
+| creator_id? * | ?snowflake | the id of the user that created the scheduled event * |
+| name | string | the name of the scheduled event (1-100 characters) |
+| description? | ?string | the description of the scheduled event (1-1000 characters) |
+| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start |
+| scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` |
+| privacy_level | [privacy level](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event |
+| status | [event status](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event |
+| entity_type | [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of the scheduled event |
+| entity_id | ?snowflake | the id of an entity associated with a guild scheduled event |
+| entity_metadata ** | ?[entity metadata](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event |
+| creator? | [user](/developers/resources/user#user-object) object | the user that created the scheduled event |
+| user_count? | integer | the number of users subscribed to the scheduled event |
+| image? | ?string | the [cover image hash](/developers/reference#image-formatting) of the scheduled event |
+| recurrence_rule | ?[recurrence rule](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object) | the definition for how often this event should recur |
+| guild_scheduled_event_exceptions | array of [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) objects | the exceptions to the recurrence rule of the guild scheduled event |
\* `creator_id` will be null and `creator` will not be included for events created before October 25th, 2021, when the concept of `creator_id` was introduced and tracked.
@@ -110,11 +111,12 @@ SCHEDULED --> CANCELED
###### Guild Scheduled Event User Structure
-| Field | Type | Description |
-|--------------------------|-----------------------------------------------------------------|-----------------------------------------------------------------------------------|
-| guild_scheduled_event_id | snowflake | the scheduled event id which the user subscribed to |
-| user | [user](/developers/resources/user#user-object) | user which subscribed to an event |
-| member? | [guild member](/developers/resources/guild#guild-member-object) | guild member data for this user for the guild which this event belongs to, if any |
+| Field | Type | Description |
+|-------------------------------------|-----------------------------------------------------------------|-----------------------------------------------------------------------------------------|
+| guild_scheduled_event_id | snowflake | the scheduled event id which the user subscribed to |
+| user | [user](/developers/resources/user#user-object) | user which subscribed to an event |
+| member? | [guild member](/developers/resources/guild#guild-member-object) | guild member data for this user for the guild which this event belongs to, if any |
+| guild_scheduled_event_exception_id? | snowflake | the id of the specific scheduled event exception that the user is subscribed to, if any |
### Guild Scheduled Event Recurrence Rule Object
Discord's recurrence rule is a subset of the behaviors [defined in the iCalendar RFC](https://datatracker.ietf.org/doc/html/rfc5545) and implemented by [python's dateutil rrule](https://dateutil.readthedocs.io/en/stable/rrule.html)
@@ -263,7 +265,7 @@ by_month_day = [24]
| Field | Type | Description |
|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|
-| n | int | The week to reoccur on. 1 - 5 |
+| n | integer | The week to reoccur on. 1 - 5 |
| day | [recurrence rule - weekday](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-weekday) | The day within the week to reoccur on |
@@ -284,6 +286,22 @@ by_month_day = [24]
| NOVEMBER | 11 |
| DECEMBER | 12 |
+### Guild Scheduled Event Exception Object
+A guild scheduled event exception represents a skipped or rescheduled recurrence for the scheduled event's [recurrence rule](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object). In the client, scheduled event exceptions are commonly highlighted as events that have had specific recurrences canceled.
+
+
+###### Guild Scheduled Event Exception Structure
+
+| Field | Type | Description |
+|----------------------|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------|
+| event_id | snowflake | the id of the scheduled event the exception belongs to |
+| event_exception_id * | snowflake | a snowflake containing the original scheduled start time of the scheduled event recurrence |
+| scheduled_start_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new time at when the scheduled event recurrence will start, if applicable |
+| scheduled_end_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new time at when the scheduled event recurrence will end, if applicable |
+| is_canceled | boolean | whether or not the scheduled event will be skipped on the recurrence |
+
+\* The snowflake in this field is not guranteed to be globally unique.
+
## List Scheduled Events for Guild
/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events
@@ -345,7 +363,7 @@ Get a guild scheduled event. Returns a [guild scheduled event](/developers/resou
## Modify Guild Scheduled Event
/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)
-Modify a guild scheduled event. Returns the modified [guild scheduled event](/developers/resources/guild-scheduled-event#guild-scheduled-event-object) object on success. Fires a [Guild Scheduled Event Update](/developers/events/gateway-events#guild-scheduled-event-update) Gateway event.
+Modify a guild scheduled event. Returns the modified [guild scheduled event](/developers/resources/guild-scheduled-event#guild-scheduled-event-object) object on success. Fires a [Guild Scheduled Event Update](/developers/events/gateway-events#guild-scheduled-event-update) Gateway event, and optionally multiple [Guild Scheduled Event Exception Delete](/developers/events/gateway-events#guild-scheduled-event-exception-delete) Gateway events.
To start or end an event, use this endpoint to modify the event's [status](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status) field.
@@ -359,6 +377,10 @@ This endpoint supports the `X-Audit-Log-Reason` header.
This endpoint silently discards `entity_metadata` for non-`EXTERNAL` events.
+
+Modifying the `recurrence_rule` may cause all exceptions for an event to be removed.
+
+
All parameters to this endpoint are optional.
@@ -392,6 +414,10 @@ All parameters to this endpoint are optional.
Delete a guild scheduled event. Returns a `204` on success. Fires a [Guild Scheduled Event Delete](/developers/events/gateway-events#guild-scheduled-event-delete) Gateway event.
+
+This endpoint supports the `X-Audit-Log-Reason` header.
+
+
## Get Guild Scheduled Event Users
/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/users
@@ -409,6 +435,104 @@ Get a list of guild scheduled event users subscribed to a guild scheduled event.
\* Provide a user id to `before` and `after` for pagination. Users will always be returned in ascending order by `user_id`. If both `before` and `after` are provided, only `before` is respected. Fetching users in-between `before` and `after` is not supported.
+## Create Guild Scheduled Event Exception
+/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions
+
+Create an exception for the guild scheduled event's recurrence rule. Returns the created [guild scheduled event exception object](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) on success. Fires a [Guild Scheduled Event Exception Create](/developers/events/gateway-events#guild-scheduled-event-exception-create) Gateway event.
+
+
+This endpoint supports the `X-Audit-Log-Reason` header.
+
+
+
+At minimum, you must provide a value for one of `is_canceled`, `scheduled_start_time`, or `scheduled_end_time`. Otherwise, the request will fail with an [180005 JSON error code](/developers/topics/opcodes-and-status-codes#json).
+
+
+###### JSON Params
+
+| Field | Type | Description |
+|-------------------------------|-----------------------------------------------------------------|---------------------------------------------------------------------------|
+| scheduled_start_time? | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled start time for the scheduled event's recurrence |
+| scheduled_end_time? | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled end time for the scheduled event's recurrence |
+| is_canceled? | boolean | whether the scheduled event should be skipped on this recurrence |
+
+## Modify Guild Scheduled Event Exception
+/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions/[\{exception.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object)
+
+Modify an exception for the guild scheduled event's recurrence rule. Returns the updated [guild scheduled event exception object](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) on success. Fires a [Guild Scheduled Event Exception Update](/developers/events/gateway-events#guild-scheduled-event-exception-update) Gateway event.
+
+
+This endpoint supports the `X-Audit-Log-Reason` header.
+
+
+
+All parameters to this endpoint are optional.
+
+
+###### JSON Params
+
+| Field | Type | Description |
+|----------------------|-----------------------------------------------------------------|-------------------------------------------------------------------|
+| scheduled_start_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled start time for the scheduled event's recurrence |
+| scheduled_end_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled end time for the scheduled event's recurrence |
+| is_canceled | boolean | whether the scheduled event should be skipped on this recurrence |
+
+## Delete Guild Scheduled Event Exception
+/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions/[\{exception.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object)
+
+Delete an exception for the guild scheduled event's recurrence rule. Returns a `204` empty response on success. Fires a [Guild Scheduled Event Exception Delete](/developers/events/gateway-events#guild-scheduled-event-exception-delete) Gateway event.
+
+
+This endpoint supports the `X-Audit-Log-Reason` header.
+
+
+## Get Guild Scheduled Event Exception Users
+/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions/[\{exception.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object)/users
+
+Get a list of guild scheduled event users subscribed to a specific guild scheduled event exception. Returns a list of [guild scheduled event user](/developers/resources/guild-scheduled-event#guild-scheduled-event-user-object) objects on success. Guild member data, if it exists, is included if the `with_member` query parameter is set.
+
+
+###### Query String Params
+
+| Field | Type | Description | Default |
+|--------------|--------------------------------------------------------|-----------------------------------------------|---------|
+| limit? | number | number of users to return (up to maximum 100) | 100 |
+| with_member? | [boolean](/developers/reference#boolean-query-strings) | include guild member data if it exists | false |
+| before? * | snowflake | consider only users before given user id | null |
+| after? * | snowflake | consider only users after given user id | null |
+
+\* Provide a user id to `before` and `after` for pagination. Users will always be returned in ascending order by `user_id`. If both `before` and `after` are provided, only `before` is respected. Fetching users in-between `before` and `after` is not supported.
+
+## Get Guild Scheduled Event User count
+/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/users/counts
+
+Get the amount of users that are currently subscribed to a guild scheduled event, and optionally the scheduled event's exceptions.
+
+
+###### Query String Params
+
+| Field | Type | Description |
+|--------------------------------------|---------------------|-------------------------------------------------------------------------------------------|
+| guild_scheduled_event_exception_ids? | array of snowflakes | the ids of the guild scheduled event exceptions to return user counts for (maximum of 10) |
+
+###### Response Body
+
+| Field | Type | Description |
+|----------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------|
+| guild_scheduled_event_count | integer | the amount of users that are subscribed to the guild scheduled event |
+| guild_scheduled_event_exception_counts | object | an object mapping guild scheduled event exception ids to the number of users that are subscribed to the exception |
+
+###### Example Response Body
+
+```json
+{
+ "guild_scheduled_event_count": 122,
+ "guild_scheduled_event_exception_counts": {
+ "1446863752396800000": 6,
+ "1449400467456000000": 7
+ }
+}
+```
## Guild Scheduled Event Status Update Automation