///|
/// HTTP methods accepted by Discord REST routes.
pub using @ahttp {type RequestMethod}
///|
/// Invalid metadata supplied while constructing a custom REST route.
pub(all) suberror CustomRouteError {
InvalidPath(path~ : String)
EmptyBucket
} derive(Debug)
///|
/// One variant per Discord REST endpoint. A route knows its HTTP method, its
/// concrete path (including query string), and its rate-limit bucket key
/// (path template with major parameters kept and minor ones squashed).
pub(all) enum Route {
Custom(
request_method~ : @ahttp.RequestMethod,
path~ : String,
bucket_key~ : String,
is_interaction~ : Bool,
supports_reason~ : Bool
)
GetGateway
GetGatewayBot
GetCurrentApplication
EditCurrentApplication
GetApplicationActivityInstance(
application_id~ : @model.ApplicationId,
instance_id~ : String
)
GetApplicationRoleConnectionMetadataRecords(
application_id~ : @model.ApplicationId
)
UpdateApplicationRoleConnectionMetadataRecords(
application_id~ : @model.ApplicationId
)
ListApplicationEmojis(application_id~ : @model.ApplicationId)
GetApplicationEmoji(
application_id~ : @model.ApplicationId,
emoji_id~ : @model.EmojiId
)
CreateApplicationEmoji(application_id~ : @model.ApplicationId)
ModifyApplicationEmoji(
application_id~ : @model.ApplicationId,
emoji_id~ : @model.EmojiId
)
DeleteApplicationEmoji(
application_id~ : @model.ApplicationId,
emoji_id~ : @model.EmojiId
)
ListEntitlements(application_id~ : @model.ApplicationId, query~ : String)
GetEntitlement(
application_id~ : @model.ApplicationId,
entitlement_id~ : @model.EntitlementId
)
CreateTestEntitlement(application_id~ : @model.ApplicationId)
ConsumeEntitlement(
application_id~ : @model.ApplicationId,
entitlement_id~ : @model.EntitlementId
)
DeleteTestEntitlement(
application_id~ : @model.ApplicationId,
entitlement_id~ : @model.EntitlementId
)
ListSkus(application_id~ : @model.ApplicationId)
ListSkuSubscriptions(sku_id~ : @model.SkuId, query~ : String)
GetSkuSubscription(
sku_id~ : @model.SkuId,
subscription_id~ : @model.SubscriptionId
)
GetCurrentUser
GetCurrentUserGuilds(query~ : String)
GetCurrentUserConnections
GetCurrentUserGuildMember(guild_id~ : @model.GuildId)
GetCurrentUserApplicationRoleConnection(
application_id~ : @model.ApplicationId
)
UpdateCurrentUserApplicationRoleConnection(
application_id~ : @model.ApplicationId
)
DeleteCurrentUserApplicationRoleConnection(
application_id~ : @model.ApplicationId
)
LeaveGuild(guild_id~ : @model.GuildId)
GetUser(user_id~ : @model.UserId)
ModifyCurrentUser
CreateDm
GetCurrentAuthorizationInformation
GetCurrentBotApplicationInformation
GetChannel(channel_id~ : @model.ChannelId)
ModifyChannel(channel_id~ : @model.ChannelId)
DeleteChannel(channel_id~ : @model.ChannelId)
GetChannelMessages(channel_id~ : @model.ChannelId, query~ : String)
GetChannelMessage(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId
)
CreateMessage(channel_id~ : @model.ChannelId)
EditMessage(channel_id~ : @model.ChannelId, message_id~ : @model.MessageId)
DeleteMessage(channel_id~ : @model.ChannelId, message_id~ : @model.MessageId)
BulkDeleteMessages(channel_id~ : @model.ChannelId)
CreateReaction(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId,
emoji~ : String
)
DeleteOwnReaction(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId,
emoji~ : String
)
DeleteUserReaction(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId,
emoji~ : String,
user_id~ : @model.UserId
)
DeleteAllReactions(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId
)
DeleteAllReactionsForEmoji(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId,
emoji~ : String
)
CrosspostMessage(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId
)
GetReactions(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId,
emoji~ : String,
query~ : String
)
GetPollAnswerVoters(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId,
answer_id~ : Int,
query~ : String
)
ExpirePoll(channel_id~ : @model.ChannelId, message_id~ : @model.MessageId)
SendSoundboardSound(channel_id~ : @model.ChannelId)
TriggerTypingIndicator(channel_id~ : @model.ChannelId)
PinMessage(channel_id~ : @model.ChannelId, message_id~ : @model.MessageId)
UnpinMessage(channel_id~ : @model.ChannelId, message_id~ : @model.MessageId)
GetChannelPins(channel_id~ : @model.ChannelId, query~ : String)
// Kept for source compatibility with the deprecated array-returning API.
GetPinnedMessages(channel_id~ : @model.ChannelId)
EditChannelPermissions(
channel_id~ : @model.ChannelId,
overwrite_id~ : @model.GenericId
)
DeleteChannelPermission(
channel_id~ : @model.ChannelId,
overwrite_id~ : @model.GenericId
)
GetChannelInvites(channel_id~ : @model.ChannelId)
CreateChannelInvite(channel_id~ : @model.ChannelId)
FollowAnnouncementChannel(channel_id~ : @model.ChannelId)
SetVoiceChannelStatus(channel_id~ : @model.ChannelId)
GroupDmAddRecipient(channel_id~ : @model.ChannelId, user_id~ : @model.UserId)
GroupDmRemoveRecipient(
channel_id~ : @model.ChannelId,
user_id~ : @model.UserId
)
CreateWebhook(channel_id~ : @model.ChannelId)
GetChannelWebhooks(channel_id~ : @model.ChannelId)
StartThreadFromMessage(
channel_id~ : @model.ChannelId,
message_id~ : @model.MessageId
)
StartThreadWithoutMessage(channel_id~ : @model.ChannelId)
JoinThread(channel_id~ : @model.ChannelId)
LeaveThread(channel_id~ : @model.ChannelId)
ListThreadMembers(channel_id~ : @model.ChannelId, query~ : String)
GetThreadMember(
channel_id~ : @model.ChannelId,
user_id~ : @model.UserId,
query~ : String
)
AddThreadMember(channel_id~ : @model.ChannelId, user_id~ : @model.UserId)
RemoveThreadMember(channel_id~ : @model.ChannelId, user_id~ : @model.UserId)
ListPublicArchivedThreads(channel_id~ : @model.ChannelId, query~ : String)
ListPrivateArchivedThreads(channel_id~ : @model.ChannelId, query~ : String)
ListJoinedPrivateArchivedThreads(
channel_id~ : @model.ChannelId,
query~ : String
)
ListActiveGuildThreads(guild_id~ : @model.GuildId)
SearchGuildMessages(guild_id~ : @model.GuildId, query~ : String)
GetGuild(guild_id~ : @model.GuildId)
GetGuildWithCounts(guild_id~ : @model.GuildId, query~ : String)
ModifyGuild(guild_id~ : @model.GuildId)
GetGuildPreview(guild_id~ : @model.GuildId)
GetGuildChannels(guild_id~ : @model.GuildId)
CreateGuildChannel(guild_id~ : @model.GuildId)
ModifyGuildChannelPositions(guild_id~ : @model.GuildId)
GetGuildMember(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
ListGuildMembers(guild_id~ : @model.GuildId, query~ : String)
SearchGuildMembers(guild_id~ : @model.GuildId, query~ : String)
ModifyGuildMember(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
ModifyCurrentMember(guild_id~ : @model.GuildId)
AddGuildMember(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
GetGuildRoles(guild_id~ : @model.GuildId)
GetGuildRole(guild_id~ : @model.GuildId, role_id~ : @model.RoleId)
CreateGuildRole(guild_id~ : @model.GuildId)
ModifyGuildRolePositions(guild_id~ : @model.GuildId)
ModifyGuildRole(guild_id~ : @model.GuildId, role_id~ : @model.RoleId)
DeleteGuildRole(guild_id~ : @model.GuildId, role_id~ : @model.RoleId)
AddGuildMemberRole(
guild_id~ : @model.GuildId,
user_id~ : @model.UserId,
role_id~ : @model.RoleId
)
RemoveGuildMemberRole(
guild_id~ : @model.GuildId,
user_id~ : @model.UserId,
role_id~ : @model.RoleId
)
RemoveGuildMember(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
CreateGuildBan(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
RemoveGuildBan(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
GetGuildBan(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
GetGuildBans(guild_id~ : @model.GuildId, query~ : String)
BulkGuildBan(guild_id~ : @model.GuildId)
GetGuildPruneCount(guild_id~ : @model.GuildId, query~ : String)
BeginGuildPrune(guild_id~ : @model.GuildId)
GetGuildVoiceRegions(guild_id~ : @model.GuildId)
GetGuildInvites(guild_id~ : @model.GuildId)
GetGuildIntegrations(guild_id~ : @model.GuildId)
DeleteGuildIntegration(
guild_id~ : @model.GuildId,
integration_id~ : @model.IntegrationId
)
GetGuildVanityUrl(guild_id~ : @model.GuildId)
GetGuildWidgetSettings(guild_id~ : @model.GuildId)
ModifyGuildWidget(guild_id~ : @model.GuildId)
GetGuildWidget(guild_id~ : @model.GuildId)
GetGuildWelcomeScreen(guild_id~ : @model.GuildId)
ModifyGuildWelcomeScreen(guild_id~ : @model.GuildId)
GetGuildOnboarding(guild_id~ : @model.GuildId)
ModifyGuildOnboarding(guild_id~ : @model.GuildId)
ModifyGuildIncidentActions(guild_id~ : @model.GuildId)
GetGuildAuditLog(guild_id~ : @model.GuildId, query~ : String)
ListAutoModerationRules(guild_id~ : @model.GuildId)
GetAutoModerationRule(
guild_id~ : @model.GuildId,
rule_id~ : @model.AutoModerationRuleId
)
CreateAutoModerationRule(guild_id~ : @model.GuildId)
ModifyAutoModerationRule(
guild_id~ : @model.GuildId,
rule_id~ : @model.AutoModerationRuleId
)
DeleteAutoModerationRule(
guild_id~ : @model.GuildId,
rule_id~ : @model.AutoModerationRuleId
)
ListGuildStickers(guild_id~ : @model.GuildId)
GetGuildSticker(guild_id~ : @model.GuildId, sticker_id~ : @model.StickerId)
CreateGuildSticker(guild_id~ : @model.GuildId)
ModifyGuildSticker(guild_id~ : @model.GuildId, sticker_id~ : @model.StickerId)
DeleteGuildSticker(guild_id~ : @model.GuildId, sticker_id~ : @model.StickerId)
ListGuildScheduledEvents(guild_id~ : @model.GuildId, query~ : String)
CreateGuildScheduledEvent(guild_id~ : @model.GuildId)
GetGuildScheduledEvent(
guild_id~ : @model.GuildId,
event_id~ : @model.ScheduledEventId,
query~ : String
)
ModifyGuildScheduledEvent(
guild_id~ : @model.GuildId,
event_id~ : @model.ScheduledEventId
)
DeleteGuildScheduledEvent(
guild_id~ : @model.GuildId,
event_id~ : @model.ScheduledEventId
)
ListGuildScheduledEventUsers(
guild_id~ : @model.GuildId,
event_id~ : @model.ScheduledEventId,
query~ : String
)
ListGuildSoundboardSounds(guild_id~ : @model.GuildId)
CreateGuildSoundboardSound(guild_id~ : @model.GuildId)
GetGuildSoundboardSound(
guild_id~ : @model.GuildId,
sound_id~ : @model.SoundboardSoundId
)
ModifyGuildSoundboardSound(
guild_id~ : @model.GuildId,
sound_id~ : @model.SoundboardSoundId
)
DeleteGuildSoundboardSound(
guild_id~ : @model.GuildId,
sound_id~ : @model.SoundboardSoundId
)
GetGuildWebhooks(guild_id~ : @model.GuildId)
ListGuildEmojis(guild_id~ : @model.GuildId)
GetGuildEmoji(guild_id~ : @model.GuildId, emoji_id~ : @model.EmojiId)
CreateGuildEmoji(guild_id~ : @model.GuildId)
ModifyGuildEmoji(guild_id~ : @model.GuildId, emoji_id~ : @model.EmojiId)
DeleteGuildEmoji(guild_id~ : @model.GuildId, emoji_id~ : @model.EmojiId)
GetSticker(sticker_id~ : @model.StickerId)
ListStickerPacks
GetStickerPack(pack_id~ : @model.StickerPackId)
ListDefaultSoundboardSounds
ListVoiceRegions
GetCurrentUserVoiceState(guild_id~ : @model.GuildId)
GetUserVoiceState(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
ModifyCurrentUserVoiceState(guild_id~ : @model.GuildId)
ModifyUserVoiceState(guild_id~ : @model.GuildId, user_id~ : @model.UserId)
GetGuildTemplate(template_code~ : String)
CreateGuildFromTemplate(template_code~ : String)
GetGuildTemplates(guild_id~ : @model.GuildId)
CreateGuildTemplate(guild_id~ : @model.GuildId)
SyncGuildTemplate(guild_id~ : @model.GuildId, template_code~ : String)
ModifyGuildTemplate(guild_id~ : @model.GuildId, template_code~ : String)
DeleteGuildTemplate(guild_id~ : @model.GuildId, template_code~ : String)
CreateStageInstance
GetStageInstance(channel_id~ : @model.ChannelId)
ModifyStageInstance(channel_id~ : @model.ChannelId)
DeleteStageInstance(channel_id~ : @model.ChannelId)
GetInvite(code~ : String, query~ : String)
DeleteInvite(code~ : String)
UpdateInviteTargetUsers(code~ : String)
GetInviteTargetUsersJobStatus(code~ : String)
GetWebhook(webhook_id~ : @model.WebhookId)
ModifyWebhook(webhook_id~ : @model.WebhookId)
DeleteWebhook(webhook_id~ : @model.WebhookId)
GetWebhookWithToken(webhook_id~ : @model.WebhookId, token~ : String)
ModifyWebhookWithToken(webhook_id~ : @model.WebhookId, token~ : String)
DeleteWebhookWithToken(webhook_id~ : @model.WebhookId, token~ : String)
ExecuteWebhook(
webhook_id~ : @model.WebhookId,
token~ : String,
query~ : String
)
ExecuteSlackCompatibleWebhook(
webhook_id~ : @model.WebhookId,
token~ : String,
query~ : String
)
ExecuteGithubCompatibleWebhook(
webhook_id~ : @model.WebhookId,
token~ : String,
query~ : String
)
GetWebhookMessage(
webhook_id~ : @model.WebhookId,
token~ : String,
message_id~ : @model.MessageId,
query~ : String
)
EditWebhookMessage(
webhook_id~ : @model.WebhookId,
token~ : String,
message_id~ : @model.MessageId,
query~ : String
)
DeleteWebhookMessage(
webhook_id~ : @model.WebhookId,
token~ : String,
message_id~ : @model.MessageId,
query~ : String
)
CreateInteractionResponse(
interaction_id~ : @model.InteractionId,
token~ : String,
query~ : String
)
GetOriginalInteractionResponse(
application_id~ : @model.ApplicationId,
token~ : String
)
EditOriginalInteractionResponse(
application_id~ : @model.ApplicationId,
token~ : String
)
DeleteOriginalInteractionResponse(
application_id~ : @model.ApplicationId,
token~ : String
)
CreateFollowupMessage(application_id~ : @model.ApplicationId, token~ : String)
GetFollowupMessage(
application_id~ : @model.ApplicationId,
token~ : String,
message_id~ : @model.MessageId
)
EditFollowupMessage(
application_id~ : @model.ApplicationId,
token~ : String,
message_id~ : @model.MessageId
)
DeleteFollowupMessage(
application_id~ : @model.ApplicationId,
token~ : String,
message_id~ : @model.MessageId
)
GetGlobalCommands(application_id~ : @model.ApplicationId, query~ : String)
CreateGlobalCommand(application_id~ : @model.ApplicationId)
GetGlobalCommand(
application_id~ : @model.ApplicationId,
command_id~ : @model.CommandId
)
EditGlobalCommand(
application_id~ : @model.ApplicationId,
command_id~ : @model.CommandId
)
DeleteGlobalCommand(
application_id~ : @model.ApplicationId,
command_id~ : @model.CommandId
)
BulkOverwriteGlobalCommands(application_id~ : @model.ApplicationId)
GetGuildCommands(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId,
query~ : String
)
CreateGuildCommand(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId
)
GetGuildCommand(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId,
command_id~ : @model.CommandId
)
EditGuildCommand(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId,
command_id~ : @model.CommandId
)
DeleteGuildCommand(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId,
command_id~ : @model.CommandId
)
BulkOverwriteGuildCommands(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId
)
GetGuildApplicationCommandPermissions(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId
)
GetApplicationCommandPermissions(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId,
command_id~ : @model.CommandId
)
EditApplicationCommandPermissions(
application_id~ : @model.ApplicationId,
guild_id~ : @model.GuildId,
command_id~ : @model.CommandId
)
}
///|
/// Construct a route for a Discord REST endpoint without a typed wrapper.
///
/// `path` is relative to the configured API base and must start with `/`; it
/// may include a query string. When `bucket` is omitted, the rate limiter uses
/// a custom-route namespace plus the HTTP method and query-free concrete path.
/// Supply a bucket explicitly to group minor resource IDs, for example
/// `PATCH:/guilds/123/auto-moderation/rules/{}`.
///
/// Set `is_interaction=true` only for interaction or webhook-token endpoints:
/// these skip the global rate limit and omit bot-token authentication.
///
/// ```mbt check
/// test "derive stable metadata for a custom route" {
/// let route = @http.Route::custom(
/// request_method=Get,
/// path="/guilds/100/stickers?limit=25",
/// )
/// inspect(route.path(), content="/guilds/100/stickers?limit=25")
/// inspect(route.bucket(), content="CUSTOM:GET:/guilds/100/stickers")
/// assert_true(route.needs_auth())
/// }
/// ```
pub fn Route::custom(
request_method~ : @ahttp.RequestMethod,
path~ : String,
bucket? : String,
is_interaction? : Bool = false,
supports_reason? : Bool = false,
) -> Route raise CustomRouteError {
guard path.has_prefix("/") && !path.has_prefix("//") && !path.contains("#") else {
raise InvalidPath(path~)
}
let bucket_key = match bucket {
Some(value) => {
guard !value.is_empty() else { raise EmptyBucket }
value
}
None => {
let bucket_path = match path.split_once("?") {
Some((value, _)) => value.to_owned()
None => path
}
"CUSTOM:\{@debug.to_string(request_method).to_upper()}:\{bucket_path}"
}
}
Custom(request_method~, path~, bucket_key~, is_interaction~, supports_reason~)
}
///|
/// The HTTP method this route is requested with.
pub fn Route::method_(self : Route) -> @ahttp.RequestMethod {
match self {
Custom(request_method~, ..) => request_method
GetGateway
| GetGatewayBot
| GetCurrentApplication
| GetApplicationActivityInstance(..)
| GetApplicationRoleConnectionMetadataRecords(..)
| ListApplicationEmojis(..)
| GetApplicationEmoji(..)
| ListEntitlements(..)
| GetEntitlement(..)
| ListSkus(..)
| ListSkuSubscriptions(..)
| GetSkuSubscription(..)
| GetCurrentUser
| GetCurrentUserGuilds(..)
| GetCurrentUserConnections
| GetCurrentUserGuildMember(..)
| GetCurrentUserApplicationRoleConnection(..)
| GetCurrentAuthorizationInformation
| GetCurrentBotApplicationInformation
| GetUser(..)
| GetChannel(..)
| GetChannelMessages(..)
| GetChannelMessage(..)
| SearchGuildMessages(..)
| GetReactions(..)
| GetPollAnswerVoters(..)
| GetChannelPins(..)
| GetPinnedMessages(..)
| GetChannelInvites(..)
| GetChannelWebhooks(..)
| ListThreadMembers(..)
| GetThreadMember(..)
| ListPublicArchivedThreads(..)
| ListPrivateArchivedThreads(..)
| ListJoinedPrivateArchivedThreads(..)
| ListActiveGuildThreads(..)
| GetGuild(..)
| GetGuildWithCounts(..)
| GetGuildPreview(..)
| GetGuildChannels(..)
| GetGuildMember(..)
| ListGuildMembers(..)
| SearchGuildMembers(..)
| GetGuildRole(..)
| GetGuildRoles(..)
| GetGuildBan(..)
| GetGuildBans(..)
| GetGuildPruneCount(..)
| GetGuildVoiceRegions(..)
| GetGuildInvites(..)
| GetGuildIntegrations(..)
| GetGuildVanityUrl(..)
| GetGuildWidgetSettings(..)
| GetGuildWidget(..)
| GetGuildWelcomeScreen(..)
| GetGuildOnboarding(..)
| GetGuildAuditLog(..)
| ListAutoModerationRules(..)
| GetAutoModerationRule(..)
| ListGuildStickers(..)
| GetGuildSticker(..)
| ListGuildScheduledEvents(..)
| GetGuildScheduledEvent(..)
| ListGuildScheduledEventUsers(..)
| ListGuildSoundboardSounds(..)
| GetGuildSoundboardSound(..)
| GetGuildWebhooks(..)
| ListGuildEmojis(..)
| GetGuildEmoji(..)
| GetSticker(..)
| ListStickerPacks
| GetStickerPack(..)
| ListDefaultSoundboardSounds
| ListVoiceRegions
| GetCurrentUserVoiceState(..)
| GetUserVoiceState(..)
| GetGuildTemplate(..)
| GetGuildTemplates(..)
| GetStageInstance(..)
| GetInvite(..)
| GetInviteTargetUsersJobStatus(..)
| GetWebhook(..)
| GetWebhookWithToken(..)
| GetWebhookMessage(..)
| GetOriginalInteractionResponse(..)
| GetFollowupMessage(..)
| GetGlobalCommands(..)
| GetGlobalCommand(..)
| GetGuildCommands(..)
| GetGuildCommand(..)
| GetGuildApplicationCommandPermissions(..)
| GetApplicationCommandPermissions(..) => Get
CreateDm
| CreateMessage(..)
| CreateTestEntitlement(..)
| ConsumeEntitlement(..)
| ExpirePoll(..)
| SendSoundboardSound(..)
| BulkDeleteMessages(..)
| CrosspostMessage(..)
| FollowAnnouncementChannel(..)
| TriggerTypingIndicator(..)
| StartThreadFromMessage(..)
| StartThreadWithoutMessage(..)
| CreateGuildChannel(..)
| CreateGuildRole(..)
| BulkGuildBan(..)
| BeginGuildPrune(..)
| CreateChannelInvite(..)
| CreateWebhook(..)
| CreateGuildEmoji(..)
| CreateApplicationEmoji(..)
| CreateAutoModerationRule(..)
| CreateGuildSticker(..)
| CreateGuildScheduledEvent(..)
| CreateGuildSoundboardSound(..)
| CreateGuildFromTemplate(..)
| CreateGuildTemplate(..)
| CreateStageInstance
| ExecuteWebhook(..)
| ExecuteSlackCompatibleWebhook(..)
| ExecuteGithubCompatibleWebhook(..)
| CreateInteractionResponse(..)
| CreateFollowupMessage(..)
| CreateGlobalCommand(..)
| CreateGuildCommand(..) => Post
ModifyCurrentUser
| EditCurrentApplication
| ModifyChannel(..)
| EditMessage(..)
| ModifyGuild(..)
| ModifyGuildChannelPositions(..)
| ModifyGuildMember(..)
| ModifyCurrentMember(..)
| ModifyGuildRole(..)
| ModifyGuildRolePositions(..)
| ModifyGuildWidget(..)
| ModifyGuildWelcomeScreen(..)
| ModifyWebhook(..)
| ModifyWebhookWithToken(..)
| EditWebhookMessage(..)
| ModifyGuildEmoji(..)
| ModifyApplicationEmoji(..)
| ModifyAutoModerationRule(..)
| ModifyGuildSticker(..)
| ModifyGuildScheduledEvent(..)
| ModifyGuildSoundboardSound(..)
| ModifyCurrentUserVoiceState(..)
| ModifyUserVoiceState(..)
| ModifyGuildTemplate(..)
| ModifyStageInstance(..)
| EditOriginalInteractionResponse(..)
| EditFollowupMessage(..)
| EditGlobalCommand(..)
| EditGuildCommand(..) => Patch
DeleteChannel(..)
| DeleteMessage(..)
| DeleteOwnReaction(..)
| DeleteUserReaction(..)
| DeleteAllReactions(..)
| DeleteAllReactionsForEmoji(..)
| GroupDmRemoveRecipient(..)
| DeleteChannelPermission(..)
| UnpinMessage(..)
| LeaveThread(..)
| RemoveThreadMember(..)
| DeleteGuildRole(..)
| DeleteGuildIntegration(..)
| RemoveGuildMemberRole(..)
| RemoveGuildMember(..)
| RemoveGuildBan(..)
| DeleteInvite(..)
| DeleteWebhook(..)
| DeleteWebhookWithToken(..)
| DeleteWebhookMessage(..)
| DeleteGuildEmoji(..)
| DeleteApplicationEmoji(..)
| DeleteTestEntitlement(..)
| DeleteAutoModerationRule(..)
| DeleteGuildSticker(..)
| DeleteGuildScheduledEvent(..)
| DeleteGuildSoundboardSound(..)
| DeleteGuildTemplate(..)
| DeleteStageInstance(..)
| DeleteOriginalInteractionResponse(..)
| DeleteFollowupMessage(..)
| DeleteGlobalCommand(..)
| DeleteGuildCommand(..)
| DeleteCurrentUserApplicationRoleConnection(..)
| LeaveGuild(..) => Delete
CreateReaction(..)
| EditChannelPermissions(..)
| PinMessage(..)
| JoinThread(..)
| AddThreadMember(..)
| SetVoiceChannelStatus(..)
| GroupDmAddRecipient(..)
| AddGuildMemberRole(..)
| AddGuildMember(..)
| CreateGuildBan(..)
| BulkOverwriteGlobalCommands(..)
| BulkOverwriteGuildCommands(..)
| EditApplicationCommandPermissions(..)
| UpdateApplicationRoleConnectionMetadataRecords(..)
| UpdateCurrentUserApplicationRoleConnection(..)
| SyncGuildTemplate(..)
| UpdateInviteTargetUsers(..) => Put
ModifyGuildOnboarding(..) | ModifyGuildIncidentActions(..) => Put
}
}
///|
/// The request path relative to the API base URL, with all route parameters
/// substituted.
pub fn Route::path(self : Route) -> String {
match self {
Custom(path~, ..) => path
GetGateway => "/gateway"
GetGatewayBot => "/gateway/bot"
GetCurrentApplication | EditCurrentApplication => "/applications/@me"
GetApplicationActivityInstance(application_id~, instance_id~) =>
"/applications/\{application_id}/activity-instances/\{instance_id}"
GetApplicationRoleConnectionMetadataRecords(application_id~)
| UpdateApplicationRoleConnectionMetadataRecords(application_id~) =>
"/applications/\{application_id}/role-connections/metadata"
ListApplicationEmojis(application_id~)
| CreateApplicationEmoji(application_id~) =>
"/applications/\{application_id}/emojis"
GetApplicationEmoji(application_id~, emoji_id~)
| ModifyApplicationEmoji(application_id~, emoji_id~)
| DeleteApplicationEmoji(application_id~, emoji_id~) =>
"/applications/\{application_id}/emojis/\{emoji_id}"
ListEntitlements(application_id~, query~) =>
"/applications/\{application_id}/entitlements\{query}"
CreateTestEntitlement(application_id~) =>
"/applications/\{application_id}/entitlements"
GetEntitlement(application_id~, entitlement_id~)
| DeleteTestEntitlement(application_id~, entitlement_id~) =>
"/applications/\{application_id}/entitlements/\{entitlement_id}"
ConsumeEntitlement(application_id~, entitlement_id~) =>
"/applications/\{application_id}/entitlements/\{entitlement_id}/consume"
ListSkus(application_id~) => "/applications/\{application_id}/skus"
ListSkuSubscriptions(sku_id~, query~) =>
"/skus/\{sku_id}/subscriptions\{query}"
GetSkuSubscription(sku_id~, subscription_id~) =>
"/skus/\{sku_id}/subscriptions/\{subscription_id}"
GetCurrentUser | ModifyCurrentUser => "/users/@me"
GetCurrentUserGuilds(query~) => "/users/@me/guilds\{query}"
GetCurrentUserConnections => "/users/@me/connections"
GetCurrentUserGuildMember(guild_id~) =>
"/users/@me/guilds/\{guild_id}/member"
GetCurrentUserApplicationRoleConnection(application_id~)
| UpdateCurrentUserApplicationRoleConnection(application_id~)
| DeleteCurrentUserApplicationRoleConnection(application_id~) =>
"/users/@me/applications/\{application_id}/role-connection"
LeaveGuild(guild_id~) => "/users/@me/guilds/\{guild_id}"
GetUser(user_id~) => "/users/\{user_id}"
CreateDm => "/users/@me/channels"
GetCurrentAuthorizationInformation => "/oauth2/@me"
GetCurrentBotApplicationInformation => "/oauth2/applications/@me"
GetChannel(channel_id~)
| ModifyChannel(channel_id~)
| DeleteChannel(channel_id~) => "/channels/\{channel_id}"
GetChannelMessages(channel_id~, query~) =>
"/channels/\{channel_id}/messages\{query}"
GetChannelMessage(channel_id~, message_id~)
| EditMessage(channel_id~, message_id~)
| DeleteMessage(channel_id~, message_id~) =>
"/channels/\{channel_id}/messages/\{message_id}"
CreateMessage(channel_id~) => "/channels/\{channel_id}/messages"
BulkDeleteMessages(channel_id~) =>
"/channels/\{channel_id}/messages/bulk-delete"
CreateReaction(channel_id~, message_id~, emoji~)
| DeleteOwnReaction(channel_id~, message_id~, emoji~) =>
"/channels/\{channel_id}/messages/\{message_id}/reactions/\{emoji}/@me"
DeleteUserReaction(channel_id~, message_id~, emoji~, user_id~) =>
"/channels/\{channel_id}/messages/\{message_id}/reactions/\{emoji}/\{user_id}"
DeleteAllReactions(channel_id~, message_id~) =>
"/channels/\{channel_id}/messages/\{message_id}/reactions"
DeleteAllReactionsForEmoji(channel_id~, message_id~, emoji~) =>
"/channels/\{channel_id}/messages/\{message_id}/reactions/\{emoji}"
CrosspostMessage(channel_id~, message_id~) =>
"/channels/\{channel_id}/messages/\{message_id}/crosspost"
GetReactions(channel_id~, message_id~, emoji~, query~) =>
"/channels/\{channel_id}/messages/\{message_id}/reactions/\{emoji}\{query}"
GetPollAnswerVoters(channel_id~, message_id~, answer_id~, query~) =>
"/channels/\{channel_id}/polls/\{message_id}/answers/\{answer_id}\{query}"
ExpirePoll(channel_id~, message_id~) =>
"/channels/\{channel_id}/polls/\{message_id}/expire"
SendSoundboardSound(channel_id~) =>
"/channels/\{channel_id}/send-soundboard-sound"
TriggerTypingIndicator(channel_id~) => "/channels/\{channel_id}/typing"
PinMessage(channel_id~, message_id~)
| UnpinMessage(channel_id~, message_id~) =>
"/channels/\{channel_id}/messages/pins/\{message_id}"
GetChannelPins(channel_id~, query~) =>
"/channels/\{channel_id}/messages/pins\{query}"
GetPinnedMessages(channel_id~) => "/channels/\{channel_id}/pins"
EditChannelPermissions(channel_id~, overwrite_id~)
| DeleteChannelPermission(channel_id~, overwrite_id~) =>
"/channels/\{channel_id}/permissions/\{overwrite_id}"
GetChannelInvites(channel_id~) | CreateChannelInvite(channel_id~) =>
"/channels/\{channel_id}/invites"
FollowAnnouncementChannel(channel_id~) =>
"/channels/\{channel_id}/followers"
SetVoiceChannelStatus(channel_id~) => "/channels/\{channel_id}/voice-status"
GroupDmAddRecipient(channel_id~, user_id~)
| GroupDmRemoveRecipient(channel_id~, user_id~) =>
"/channels/\{channel_id}/recipients/\{user_id}"
CreateWebhook(channel_id~) | GetChannelWebhooks(channel_id~) =>
"/channels/\{channel_id}/webhooks"
StartThreadFromMessage(channel_id~, message_id~) =>
"/channels/\{channel_id}/messages/\{message_id}/threads"
StartThreadWithoutMessage(channel_id~) => "/channels/\{channel_id}/threads"
JoinThread(channel_id~) | LeaveThread(channel_id~) =>
"/channels/\{channel_id}/thread-members/@me"
ListThreadMembers(channel_id~, query~) =>
"/channels/\{channel_id}/thread-members\{query}"
GetThreadMember(channel_id~, user_id~, query~) =>
"/channels/\{channel_id}/thread-members/\{user_id}\{query}"
AddThreadMember(channel_id~, user_id~)
| RemoveThreadMember(channel_id~, user_id~) =>
"/channels/\{channel_id}/thread-members/\{user_id}"
ListPublicArchivedThreads(channel_id~, query~) =>
"/channels/\{channel_id}/threads/archived/public\{query}"
ListPrivateArchivedThreads(channel_id~, query~) =>
"/channels/\{channel_id}/threads/archived/private\{query}"
ListJoinedPrivateArchivedThreads(channel_id~, query~) =>
"/channels/\{channel_id}/users/@me/threads/archived/private\{query}"
ListActiveGuildThreads(guild_id~) => "/guilds/\{guild_id}/threads/active"
SearchGuildMessages(guild_id~, query~) =>
"/guilds/\{guild_id}/messages/search\{query}"
GetGuild(guild_id~) => "/guilds/\{guild_id}"
GetGuildWithCounts(guild_id~, query~) => "/guilds/\{guild_id}\{query}"
ModifyGuild(guild_id~) => "/guilds/\{guild_id}"
GetGuildPreview(guild_id~) => "/guilds/\{guild_id}/preview"
GetGuildChannels(guild_id~)
| CreateGuildChannel(guild_id~)
| ModifyGuildChannelPositions(guild_id~) => "/guilds/\{guild_id}/channels"
GetGuildMember(guild_id~, user_id~)
| ModifyGuildMember(guild_id~, user_id~)
| AddGuildMember(guild_id~, user_id~)
| RemoveGuildMember(guild_id~, user_id~) =>
"/guilds/\{guild_id}/members/\{user_id}"
ListGuildMembers(guild_id~, query~) => "/guilds/\{guild_id}/members\{query}"
SearchGuildMembers(guild_id~, query~) =>
"/guilds/\{guild_id}/members/search\{query}"
ModifyCurrentMember(guild_id~) => "/guilds/\{guild_id}/members/@me"
GetGuildRoles(guild_id~)
| CreateGuildRole(guild_id~)
| ModifyGuildRolePositions(guild_id~) => "/guilds/\{guild_id}/roles"
GetGuildRole(guild_id~, role_id~)
| ModifyGuildRole(guild_id~, role_id~)
| DeleteGuildRole(guild_id~, role_id~) =>
"/guilds/\{guild_id}/roles/\{role_id}"
AddGuildMemberRole(guild_id~, user_id~, role_id~)
| RemoveGuildMemberRole(guild_id~, user_id~, role_id~) =>
"/guilds/\{guild_id}/members/\{user_id}/roles/\{role_id}"
GetGuildBan(guild_id~, user_id~)
| CreateGuildBan(guild_id~, user_id~)
| RemoveGuildBan(guild_id~, user_id~) =>
"/guilds/\{guild_id}/bans/\{user_id}"
GetGuildBans(guild_id~, query~) => "/guilds/\{guild_id}/bans\{query}"
BulkGuildBan(guild_id~) => "/guilds/\{guild_id}/bulk-ban"
GetGuildPruneCount(guild_id~, query~) => "/guilds/\{guild_id}/prune\{query}"
BeginGuildPrune(guild_id~) => "/guilds/\{guild_id}/prune"
GetGuildVoiceRegions(guild_id~) => "/guilds/\{guild_id}/regions"
GetGuildInvites(guild_id~) => "/guilds/\{guild_id}/invites"
GetGuildIntegrations(guild_id~) => "/guilds/\{guild_id}/integrations"
DeleteGuildIntegration(guild_id~, integration_id~) =>
"/guilds/\{guild_id}/integrations/\{integration_id}"
GetGuildVanityUrl(guild_id~) => "/guilds/\{guild_id}/vanity-url"
GetGuildWidgetSettings(guild_id~) | ModifyGuildWidget(guild_id~) =>
"/guilds/\{guild_id}/widget"
GetGuildWidget(guild_id~) => "/guilds/\{guild_id}/widget.json"
GetGuildWelcomeScreen(guild_id~) | ModifyGuildWelcomeScreen(guild_id~) =>
"/guilds/\{guild_id}/welcome-screen"
GetGuildOnboarding(guild_id~) | ModifyGuildOnboarding(guild_id~) =>
"/guilds/\{guild_id}/onboarding"
ModifyGuildIncidentActions(guild_id~) =>
"/guilds/\{guild_id}/incident-actions"
GetGuildAuditLog(guild_id~, query~) =>
"/guilds/\{guild_id}/audit-logs\{query}"
ListAutoModerationRules(guild_id~) | CreateAutoModerationRule(guild_id~) =>
"/guilds/\{guild_id}/auto-moderation/rules"
GetAutoModerationRule(guild_id~, rule_id~)
| ModifyAutoModerationRule(guild_id~, rule_id~)
| DeleteAutoModerationRule(guild_id~, rule_id~) =>
"/guilds/\{guild_id}/auto-moderation/rules/\{rule_id}"
ListGuildStickers(guild_id~) | CreateGuildSticker(guild_id~) =>
"/guilds/\{guild_id}/stickers"
GetGuildSticker(guild_id~, sticker_id~)
| ModifyGuildSticker(guild_id~, sticker_id~)
| DeleteGuildSticker(guild_id~, sticker_id~) =>
"/guilds/\{guild_id}/stickers/\{sticker_id}"
ListGuildScheduledEvents(guild_id~, query~) =>
"/guilds/\{guild_id}/scheduled-events\{query}"
CreateGuildScheduledEvent(guild_id~) =>
"/guilds/\{guild_id}/scheduled-events"
GetGuildScheduledEvent(guild_id~, event_id~, query~) =>
"/guilds/\{guild_id}/scheduled-events/\{event_id}\{query}"
ModifyGuildScheduledEvent(guild_id~, event_id~)
| DeleteGuildScheduledEvent(guild_id~, event_id~) =>
"/guilds/\{guild_id}/scheduled-events/\{event_id}"
ListGuildScheduledEventUsers(guild_id~, event_id~, query~) =>
"/guilds/\{guild_id}/scheduled-events/\{event_id}/users\{query}"
ListGuildSoundboardSounds(guild_id~)
| CreateGuildSoundboardSound(guild_id~) =>
"/guilds/\{guild_id}/soundboard-sounds"
GetGuildSoundboardSound(guild_id~, sound_id~)
| ModifyGuildSoundboardSound(guild_id~, sound_id~)
| DeleteGuildSoundboardSound(guild_id~, sound_id~) =>
"/guilds/\{guild_id}/soundboard-sounds/\{sound_id}"
GetGuildWebhooks(guild_id~) => "/guilds/\{guild_id}/webhooks"
ListGuildEmojis(guild_id~) | CreateGuildEmoji(guild_id~) =>
"/guilds/\{guild_id}/emojis"
GetGuildEmoji(guild_id~, emoji_id~)
| ModifyGuildEmoji(guild_id~, emoji_id~)
| DeleteGuildEmoji(guild_id~, emoji_id~) =>
"/guilds/\{guild_id}/emojis/\{emoji_id}"
GetSticker(sticker_id~) => "/stickers/\{sticker_id}"
ListStickerPacks => "/sticker-packs"
GetStickerPack(pack_id~) => "/sticker-packs/\{pack_id}"
ListDefaultSoundboardSounds => "/soundboard-default-sounds"
ListVoiceRegions => "/voice/regions"
GetCurrentUserVoiceState(guild_id~)
| ModifyCurrentUserVoiceState(guild_id~) =>
"/guilds/\{guild_id}/voice-states/@me"
GetUserVoiceState(guild_id~, user_id~)
| ModifyUserVoiceState(guild_id~, user_id~) =>
"/guilds/\{guild_id}/voice-states/\{user_id}"
GetGuildTemplate(template_code~)
| CreateGuildFromTemplate(template_code~) =>
"/guilds/templates/\{template_code}"
GetGuildTemplates(guild_id~) | CreateGuildTemplate(guild_id~) =>
"/guilds/\{guild_id}/templates"
SyncGuildTemplate(guild_id~, template_code~)
| ModifyGuildTemplate(guild_id~, template_code~)
| DeleteGuildTemplate(guild_id~, template_code~) =>
"/guilds/\{guild_id}/templates/\{template_code}"
CreateStageInstance => "/stage-instances"
GetStageInstance(channel_id~)
| ModifyStageInstance(channel_id~)
| DeleteStageInstance(channel_id~) => "/stage-instances/\{channel_id}"
GetInvite(code~, query~) => "/invites/\{code}\{query}"
DeleteInvite(code~) => "/invites/\{code}"
UpdateInviteTargetUsers(code~) => "/invites/\{code}/target-users"
GetInviteTargetUsersJobStatus(code~) =>
"/invites/\{code}/target-users/job-status"
GetWebhook(webhook_id~)
| ModifyWebhook(webhook_id~)
| DeleteWebhook(webhook_id~) => "/webhooks/\{webhook_id}"
GetWebhookWithToken(webhook_id~, token~)
| ModifyWebhookWithToken(webhook_id~, token~)
| DeleteWebhookWithToken(webhook_id~, token~) =>
"/webhooks/\{webhook_id}/\{token}"
ExecuteWebhook(webhook_id~, token~, query~) =>
"/webhooks/\{webhook_id}/\{token}\{query}"
ExecuteSlackCompatibleWebhook(webhook_id~, token~, query~) =>
"/webhooks/\{webhook_id}/\{token}/slack\{query}"
ExecuteGithubCompatibleWebhook(webhook_id~, token~, query~) =>
"/webhooks/\{webhook_id}/\{token}/github\{query}"
GetWebhookMessage(webhook_id~, token~, message_id~, query~)
| EditWebhookMessage(webhook_id~, token~, message_id~, query~)
| DeleteWebhookMessage(webhook_id~, token~, message_id~, query~) =>
"/webhooks/\{webhook_id}/\{token}/messages/\{message_id}\{query}"
CreateInteractionResponse(interaction_id~, token~, query~) =>
"/interactions/\{interaction_id}/\{token}/callback\{query}"
GetOriginalInteractionResponse(application_id~, token~)
| EditOriginalInteractionResponse(application_id~, token~)
| DeleteOriginalInteractionResponse(application_id~, token~) =>
"/webhooks/\{application_id}/\{token}/messages/@original"
CreateFollowupMessage(application_id~, token~) =>
"/webhooks/\{application_id}/\{token}"
GetFollowupMessage(application_id~, token~, message_id~)
| EditFollowupMessage(application_id~, token~, message_id~)
| DeleteFollowupMessage(application_id~, token~, message_id~) =>
"/webhooks/\{application_id}/\{token}/messages/\{message_id}"
GetGlobalCommands(application_id~, query~) =>
"/applications/\{application_id}/commands\{query}"
CreateGlobalCommand(application_id~)
| BulkOverwriteGlobalCommands(application_id~) =>
"/applications/\{application_id}/commands"
GetGlobalCommand(application_id~, command_id~)
| EditGlobalCommand(application_id~, command_id~)
| DeleteGlobalCommand(application_id~, command_id~) =>
"/applications/\{application_id}/commands/\{command_id}"
GetGuildCommands(application_id~, guild_id~, query~) =>
"/applications/\{application_id}/guilds/\{guild_id}/commands\{query}"
CreateGuildCommand(application_id~, guild_id~)
| BulkOverwriteGuildCommands(application_id~, guild_id~) =>
"/applications/\{application_id}/guilds/\{guild_id}/commands"
GetGuildCommand(application_id~, guild_id~, command_id~)
| EditGuildCommand(application_id~, guild_id~, command_id~)
| DeleteGuildCommand(application_id~, guild_id~, command_id~) =>
"/applications/\{application_id}/guilds/\{guild_id}/commands/\{command_id}"
GetGuildApplicationCommandPermissions(application_id~, guild_id~) =>
"/applications/\{application_id}/guilds/\{guild_id}/commands/permissions"
GetApplicationCommandPermissions(application_id~, guild_id~, command_id~)
| EditApplicationCommandPermissions(application_id~, guild_id~, command_id~) =>
"/applications/\{application_id}/guilds/\{guild_id}/commands/\{command_id}/permissions"
}
}
///|
/// Rate-limit bucket key: method plus path template with application, channel,
/// guild, and webhook ID/token majors kept while minor resource IDs are
/// squashed.
pub fn Route::bucket(self : Route) -> String {
match self {
Custom(bucket_key~, ..) => bucket_key
GetGateway => "GET:/gateway"
GetGatewayBot => "GET:/gateway/bot"
GetCurrentApplication => "GET:/applications/@me"
EditCurrentApplication => "PATCH:/applications/@me"
GetApplicationActivityInstance(application_id~, ..) =>
"GET:/applications/\{application_id}/activity-instances/{}"
GetApplicationRoleConnectionMetadataRecords(application_id~) =>
"GET:/applications/\{application_id}/role-connections/metadata"
UpdateApplicationRoleConnectionMetadataRecords(application_id~) =>
"PUT:/applications/\{application_id}/role-connections/metadata"
ListApplicationEmojis(application_id~) =>
"GET:/applications/\{application_id}/emojis"
GetApplicationEmoji(application_id~, ..) =>
"GET:/applications/\{application_id}/emojis/{}"
CreateApplicationEmoji(application_id~) =>
"POST:/applications/\{application_id}/emojis"
ModifyApplicationEmoji(application_id~, ..) =>
"PATCH:/applications/\{application_id}/emojis/{}"
DeleteApplicationEmoji(application_id~, ..) =>
"DELETE:/applications/\{application_id}/emojis/{}"
ListEntitlements(application_id~, ..) =>
"GET:/applications/\{application_id}/entitlements"
GetEntitlement(application_id~, ..) =>
"GET:/applications/\{application_id}/entitlements/{}"
CreateTestEntitlement(application_id~) =>
"POST:/applications/\{application_id}/entitlements"
ConsumeEntitlement(application_id~, ..) =>
"POST:/applications/\{application_id}/entitlements/{}/consume"
DeleteTestEntitlement(application_id~, ..) =>
"DELETE:/applications/\{application_id}/entitlements/{}"
ListSkus(application_id~) => "GET:/applications/\{application_id}/skus"
ListSkuSubscriptions(..) => "GET:/skus/{}/subscriptions"
GetSkuSubscription(..) => "GET:/skus/{}/subscriptions/{}"
GetCurrentUser => "GET:/users/@me"
GetCurrentUserGuilds(..) => "GET:/users/@me/guilds"
GetCurrentUserConnections => "GET:/users/@me/connections"
GetCurrentUserGuildMember(guild_id~) =>
"GET:/users/@me/guilds/\{guild_id}/member"
GetCurrentUserApplicationRoleConnection(application_id~) =>
"GET:/users/@me/applications/\{application_id}/role-connection"
UpdateCurrentUserApplicationRoleConnection(application_id~) =>
"PUT:/users/@me/applications/\{application_id}/role-connection"
DeleteCurrentUserApplicationRoleConnection(application_id~) =>
"DELETE:/users/@me/applications/\{application_id}/role-connection"
LeaveGuild(guild_id~) => "DELETE:/users/@me/guilds/\{guild_id}"
ModifyCurrentUser => "PATCH:/users/@me"
GetUser(..) => "GET:/users/{}"
CreateDm => "POST:/users/@me/channels"
GetCurrentAuthorizationInformation => "GET:/oauth2/@me"
GetCurrentBotApplicationInformation => "GET:/oauth2/applications/@me"
GetChannel(channel_id~) => "GET:/channels/\{channel_id}"
ModifyChannel(channel_id~) => "PATCH:/channels/\{channel_id}"
DeleteChannel(channel_id~) => "DELETE:/channels/\{channel_id}"
GetChannelMessages(channel_id~, ..) =>
"GET:/channels/\{channel_id}/messages"
GetChannelMessage(channel_id~, ..) =>
"GET:/channels/\{channel_id}/messages/{}"
CreateMessage(channel_id~) => "POST:/channels/\{channel_id}/messages"
EditMessage(channel_id~, ..) => "PATCH:/channels/\{channel_id}/messages/{}"
DeleteMessage(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/messages/{}"
BulkDeleteMessages(channel_id~) =>
"POST:/channels/\{channel_id}/messages/bulk-delete"
CreateReaction(channel_id~, ..) =>
"PUT:/channels/\{channel_id}/messages/{}/reactions/{}"
DeleteOwnReaction(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/messages/{}/reactions/{}"
DeleteUserReaction(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/messages/{}/reactions/{}"
DeleteAllReactions(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/messages/{}/reactions"
DeleteAllReactionsForEmoji(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/messages/{}/reactions/{}"
CrosspostMessage(channel_id~, ..) =>
"POST:/channels/\{channel_id}/messages/{}/crosspost"
GetReactions(channel_id~, ..) =>
"GET:/channels/\{channel_id}/messages/{}/reactions/{}"
GetPollAnswerVoters(channel_id~, ..) =>
"GET:/channels/\{channel_id}/polls/{}/answers/{}"
ExpirePoll(channel_id~, ..) =>
"POST:/channels/\{channel_id}/polls/{}/expire"
SendSoundboardSound(channel_id~) =>
"POST:/channels/\{channel_id}/send-soundboard-sound"
TriggerTypingIndicator(channel_id~) => "POST:/channels/\{channel_id}/typing"
PinMessage(channel_id~, ..) =>
"PUT:/channels/\{channel_id}/messages/pins/{}"
UnpinMessage(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/messages/pins/{}"
GetChannelPins(channel_id~, ..) =>
"GET:/channels/\{channel_id}/messages/pins"
GetPinnedMessages(channel_id~) => "GET:/channels/\{channel_id}/pins"
EditChannelPermissions(channel_id~, ..) =>
"PUT:/channels/\{channel_id}/permissions/{}"
DeleteChannelPermission(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/permissions/{}"
GetChannelInvites(channel_id~) => "GET:/channels/\{channel_id}/invites"
CreateChannelInvite(channel_id~) => "POST:/channels/\{channel_id}/invites"
FollowAnnouncementChannel(channel_id~) =>
"POST:/channels/\{channel_id}/followers"
SetVoiceChannelStatus(channel_id~) =>
"PUT:/channels/\{channel_id}/voice-status"
GroupDmAddRecipient(channel_id~, ..) =>
"PUT:/channels/\{channel_id}/recipients/{}"
GroupDmRemoveRecipient(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/recipients/{}"
CreateWebhook(channel_id~) => "POST:/channels/\{channel_id}/webhooks"
GetChannelWebhooks(channel_id~) => "GET:/channels/\{channel_id}/webhooks"
StartThreadFromMessage(channel_id~, ..) =>
"POST:/channels/\{channel_id}/messages/{}/threads"
StartThreadWithoutMessage(channel_id~) =>
"POST:/channels/\{channel_id}/threads"
JoinThread(channel_id~) => "PUT:/channels/\{channel_id}/thread-members/@me"
LeaveThread(channel_id~) =>
"DELETE:/channels/\{channel_id}/thread-members/@me"
ListThreadMembers(channel_id~, ..) =>
"GET:/channels/\{channel_id}/thread-members"
GetThreadMember(channel_id~, ..) =>
"GET:/channels/\{channel_id}/thread-members/{}"
AddThreadMember(channel_id~, ..) =>
"PUT:/channels/\{channel_id}/thread-members/{}"
RemoveThreadMember(channel_id~, ..) =>
"DELETE:/channels/\{channel_id}/thread-members/{}"
ListPublicArchivedThreads(channel_id~, ..) =>
"GET:/channels/\{channel_id}/threads/archived/public"
ListPrivateArchivedThreads(channel_id~, ..) =>
"GET:/channels/\{channel_id}/threads/archived/private"
ListJoinedPrivateArchivedThreads(channel_id~, ..) =>
"GET:/channels/\{channel_id}/users/@me/threads/archived/private"
ListActiveGuildThreads(guild_id~) =>
"GET:/guilds/\{guild_id}/threads/active"
SearchGuildMessages(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/messages/search"
GetGuild(guild_id~) | GetGuildWithCounts(guild_id~, ..) =>
"GET:/guilds/\{guild_id}"
ModifyGuild(guild_id~) => "PATCH:/guilds/\{guild_id}"
GetGuildPreview(guild_id~) => "GET:/guilds/\{guild_id}/preview"
GetGuildChannels(guild_id~) => "GET:/guilds/\{guild_id}/channels"
CreateGuildChannel(guild_id~) => "POST:/guilds/\{guild_id}/channels"
ModifyGuildChannelPositions(guild_id~) =>
"PATCH:/guilds/\{guild_id}/channels"
GetGuildMember(guild_id~, ..) => "GET:/guilds/\{guild_id}/members/{}"
ListGuildMembers(guild_id~, ..) => "GET:/guilds/\{guild_id}/members"
SearchGuildMembers(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/members/search"
ModifyGuildMember(guild_id~, ..) => "PATCH:/guilds/\{guild_id}/members/{}"
AddGuildMember(guild_id~, ..) => "PUT:/guilds/\{guild_id}/members/{}"
ModifyCurrentMember(guild_id~) => "PATCH:/guilds/\{guild_id}/members/@me"
GetGuildRoles(guild_id~) => "GET:/guilds/\{guild_id}/roles"
GetGuildRole(guild_id~, ..) => "GET:/guilds/\{guild_id}/roles/{}"
CreateGuildRole(guild_id~) => "POST:/guilds/\{guild_id}/roles"
ModifyGuildRolePositions(guild_id~) => "PATCH:/guilds/\{guild_id}/roles"
ModifyGuildRole(guild_id~, ..) => "PATCH:/guilds/\{guild_id}/roles/{}"
DeleteGuildRole(guild_id~, ..) => "DELETE:/guilds/\{guild_id}/roles/{}"
AddGuildMemberRole(guild_id~, ..) =>
"PUT:/guilds/\{guild_id}/members/{}/roles/{}"
RemoveGuildMemberRole(guild_id~, ..) =>
"DELETE:/guilds/\{guild_id}/members/{}/roles/{}"
RemoveGuildMember(guild_id~, ..) => "DELETE:/guilds/\{guild_id}/members/{}"
CreateGuildBan(guild_id~, ..) => "PUT:/guilds/\{guild_id}/bans/{}"
RemoveGuildBan(guild_id~, ..) => "DELETE:/guilds/\{guild_id}/bans/{}"
GetGuildBan(guild_id~, ..) => "GET:/guilds/\{guild_id}/bans/{}"
GetGuildBans(guild_id~, ..) => "GET:/guilds/\{guild_id}/bans"
BulkGuildBan(guild_id~) => "POST:/guilds/\{guild_id}/bulk-ban"
GetGuildPruneCount(guild_id~, ..) => "GET:/guilds/\{guild_id}/prune"
BeginGuildPrune(guild_id~) => "POST:/guilds/\{guild_id}/prune"
GetGuildVoiceRegions(guild_id~) => "GET:/guilds/\{guild_id}/regions"
GetGuildInvites(guild_id~) => "GET:/guilds/\{guild_id}/invites"
GetGuildIntegrations(guild_id~) => "GET:/guilds/\{guild_id}/integrations"
DeleteGuildIntegration(guild_id~, ..) =>
"DELETE:/guilds/\{guild_id}/integrations/{}"
GetGuildVanityUrl(guild_id~) => "GET:/guilds/\{guild_id}/vanity-url"
GetGuildWidgetSettings(guild_id~) => "GET:/guilds/\{guild_id}/widget"
ModifyGuildWidget(guild_id~) => "PATCH:/guilds/\{guild_id}/widget"
GetGuildWidget(guild_id~) => "GET:/guilds/\{guild_id}/widget.json"
GetGuildWelcomeScreen(guild_id~) => "GET:/guilds/\{guild_id}/welcome-screen"
ModifyGuildWelcomeScreen(guild_id~) =>
"PATCH:/guilds/\{guild_id}/welcome-screen"
GetGuildOnboarding(guild_id~) => "GET:/guilds/\{guild_id}/onboarding"
ModifyGuildOnboarding(guild_id~) => "PUT:/guilds/\{guild_id}/onboarding"
ModifyGuildIncidentActions(guild_id~) =>
"PUT:/guilds/\{guild_id}/incident-actions"
GetGuildAuditLog(guild_id~, ..) => "GET:/guilds/\{guild_id}/audit-logs"
ListAutoModerationRules(guild_id~) =>
"GET:/guilds/\{guild_id}/auto-moderation/rules"
GetAutoModerationRule(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/auto-moderation/rules/{}"
CreateAutoModerationRule(guild_id~) =>
"POST:/guilds/\{guild_id}/auto-moderation/rules"
ModifyAutoModerationRule(guild_id~, ..) =>
"PATCH:/guilds/\{guild_id}/auto-moderation/rules/{}"
DeleteAutoModerationRule(guild_id~, ..) =>
"DELETE:/guilds/\{guild_id}/auto-moderation/rules/{}"
ListGuildStickers(guild_id~) => "GET:/guilds/\{guild_id}/stickers"
GetGuildSticker(guild_id~, ..) => "GET:/guilds/\{guild_id}/stickers/{}"
CreateGuildSticker(guild_id~) => "POST:/guilds/\{guild_id}/stickers"
ModifyGuildSticker(guild_id~, ..) => "PATCH:/guilds/\{guild_id}/stickers/{}"
DeleteGuildSticker(guild_id~, ..) =>
"DELETE:/guilds/\{guild_id}/stickers/{}"
ListGuildScheduledEvents(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/scheduled-events"
CreateGuildScheduledEvent(guild_id~) =>
"POST:/guilds/\{guild_id}/scheduled-events"
GetGuildScheduledEvent(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/scheduled-events/{}"
ModifyGuildScheduledEvent(guild_id~, ..) =>
"PATCH:/guilds/\{guild_id}/scheduled-events/{}"
DeleteGuildScheduledEvent(guild_id~, ..) =>
"DELETE:/guilds/\{guild_id}/scheduled-events/{}"
ListGuildScheduledEventUsers(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/scheduled-events/{}/users"
ListGuildSoundboardSounds(guild_id~) =>
"GET:/guilds/\{guild_id}/soundboard-sounds"
CreateGuildSoundboardSound(guild_id~) =>
"POST:/guilds/\{guild_id}/soundboard-sounds"
GetGuildSoundboardSound(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/soundboard-sounds/{}"
ModifyGuildSoundboardSound(guild_id~, ..) =>
"PATCH:/guilds/\{guild_id}/soundboard-sounds/{}"
DeleteGuildSoundboardSound(guild_id~, ..) =>
"DELETE:/guilds/\{guild_id}/soundboard-sounds/{}"
GetGuildWebhooks(guild_id~) => "GET:/guilds/\{guild_id}/webhooks"
ListGuildEmojis(guild_id~) => "GET:/guilds/\{guild_id}/emojis"
GetGuildEmoji(guild_id~, ..) => "GET:/guilds/\{guild_id}/emojis/{}"
CreateGuildEmoji(guild_id~) => "POST:/guilds/\{guild_id}/emojis"
ModifyGuildEmoji(guild_id~, ..) => "PATCH:/guilds/\{guild_id}/emojis/{}"
DeleteGuildEmoji(guild_id~, ..) => "DELETE:/guilds/\{guild_id}/emojis/{}"
GetSticker(..) => "GET:/stickers/{}"
ListStickerPacks => "GET:/sticker-packs"
GetStickerPack(..) => "GET:/sticker-packs/{}"
ListDefaultSoundboardSounds => "GET:/soundboard-default-sounds"
ListVoiceRegions => "GET:/voice/regions"
GetCurrentUserVoiceState(guild_id~) =>
"GET:/guilds/\{guild_id}/voice-states/@me"
GetUserVoiceState(guild_id~, ..) =>
"GET:/guilds/\{guild_id}/voice-states/{}"
ModifyCurrentUserVoiceState(guild_id~) =>
"PATCH:/guilds/\{guild_id}/voice-states/@me"
ModifyUserVoiceState(guild_id~, ..) =>
"PATCH:/guilds/\{guild_id}/voice-states/{}"
GetGuildTemplate(..) => "GET:/guilds/templates/{}"
CreateGuildFromTemplate(..) => "POST:/guilds/templates/{}"
GetGuildTemplates(guild_id~) => "GET:/guilds/\{guild_id}/templates"
CreateGuildTemplate(guild_id~) => "POST:/guilds/\{guild_id}/templates"
SyncGuildTemplate(guild_id~, ..) => "PUT:/guilds/\{guild_id}/templates/{}"
ModifyGuildTemplate(guild_id~, ..) =>
"PATCH:/guilds/\{guild_id}/templates/{}"
DeleteGuildTemplate(guild_id~, ..) =>
"DELETE:/guilds/\{guild_id}/templates/{}"
CreateStageInstance => "POST:/stage-instances"
GetStageInstance(channel_id~) => "GET:/stage-instances/\{channel_id}"
ModifyStageInstance(channel_id~) => "PATCH:/stage-instances/\{channel_id}"
DeleteStageInstance(channel_id~) => "DELETE:/stage-instances/\{channel_id}"
GetInvite(..) => "GET:/invites/{}"
DeleteInvite(..) => "DELETE:/invites/{}"
UpdateInviteTargetUsers(..) => "PUT:/invites/{}/target-users"
GetInviteTargetUsersJobStatus(..) =>
"GET:/invites/{}/target-users/job-status"
GetWebhook(webhook_id~) => "GET:/webhooks/\{webhook_id}"
ModifyWebhook(webhook_id~) => "PATCH:/webhooks/\{webhook_id}"
DeleteWebhook(webhook_id~) => "DELETE:/webhooks/\{webhook_id}"
GetWebhookWithToken(webhook_id~, token~) =>
"GET:/webhooks/\{webhook_id}/\{token}"
ModifyWebhookWithToken(webhook_id~, token~) =>
"PATCH:/webhooks/\{webhook_id}/\{token}"
DeleteWebhookWithToken(webhook_id~, token~) =>
"DELETE:/webhooks/\{webhook_id}/\{token}"
ExecuteWebhook(webhook_id~, token~, ..) =>
"POST:/webhooks/\{webhook_id}/\{token}"
ExecuteSlackCompatibleWebhook(webhook_id~, token~, ..) =>
"POST:/webhooks/\{webhook_id}/\{token}/slack"
ExecuteGithubCompatibleWebhook(webhook_id~, token~, ..) =>
"POST:/webhooks/\{webhook_id}/\{token}/github"
GetWebhookMessage(webhook_id~, token~, ..) =>
"GET:/webhooks/\{webhook_id}/\{token}/messages/{}"
EditWebhookMessage(webhook_id~, token~, ..) =>
"PATCH:/webhooks/\{webhook_id}/\{token}/messages/{}"
DeleteWebhookMessage(webhook_id~, token~, ..) =>
"DELETE:/webhooks/\{webhook_id}/\{token}/messages/{}"
CreateInteractionResponse(..) => "POST:/interactions/{}/{}/callback"
GetOriginalInteractionResponse(application_id~, token~) =>
"GET:/webhooks/\{application_id}/\{token}/messages/@original"
EditOriginalInteractionResponse(application_id~, token~) =>
"PATCH:/webhooks/\{application_id}/\{token}/messages/@original"
DeleteOriginalInteractionResponse(application_id~, token~) =>
"DELETE:/webhooks/\{application_id}/\{token}/messages/@original"
CreateFollowupMessage(application_id~, token~) =>
"POST:/webhooks/\{application_id}/\{token}"
GetFollowupMessage(application_id~, token~, ..) =>
"GET:/webhooks/\{application_id}/\{token}/messages/{}"
EditFollowupMessage(application_id~, token~, ..) =>
"PATCH:/webhooks/\{application_id}/\{token}/messages/{}"
DeleteFollowupMessage(application_id~, token~, ..) =>
"DELETE:/webhooks/\{application_id}/\{token}/messages/{}"
GetGlobalCommands(application_id~, ..) =>
"GET:/applications/\{application_id}/commands"
CreateGlobalCommand(application_id~) =>
"POST:/applications/\{application_id}/commands"
GetGlobalCommand(application_id~, ..) =>
"GET:/applications/\{application_id}/commands/{}"
EditGlobalCommand(application_id~, ..) =>
"PATCH:/applications/\{application_id}/commands/{}"
DeleteGlobalCommand(application_id~, ..) =>
"DELETE:/applications/\{application_id}/commands/{}"
BulkOverwriteGlobalCommands(application_id~) =>
"PUT:/applications/\{application_id}/commands"
GetGuildCommands(application_id~, guild_id~, ..) =>
"GET:/applications/\{application_id}/guilds/\{guild_id}/commands"
CreateGuildCommand(application_id~, guild_id~) =>
"POST:/applications/\{application_id}/guilds/\{guild_id}/commands"
GetGuildCommand(application_id~, guild_id~, ..) =>
"GET:/applications/\{application_id}/guilds/\{guild_id}/commands/{}"
EditGuildCommand(application_id~, guild_id~, ..) =>
"PATCH:/applications/\{application_id}/guilds/\{guild_id}/commands/{}"
DeleteGuildCommand(application_id~, guild_id~, ..) =>
"DELETE:/applications/\{application_id}/guilds/\{guild_id}/commands/{}"
BulkOverwriteGuildCommands(application_id~, guild_id~) =>
"PUT:/applications/\{application_id}/guilds/\{guild_id}/commands"
GetGuildApplicationCommandPermissions(application_id~, guild_id~) =>
"GET:/applications/\{application_id}/guilds/\{guild_id}/commands/permissions"
GetApplicationCommandPermissions(application_id~, guild_id~, ..) =>
"GET:/applications/\{application_id}/guilds/\{guild_id}/commands/{}/permissions"
EditApplicationCommandPermissions(application_id~, guild_id~, ..) =>
"PUT:/applications/\{application_id}/guilds/\{guild_id}/commands/{}/permissions"
}
}
///|
/// Interaction/webhook-token endpoints are exempt from the global limit.
pub fn Route::is_interaction(self : Route) -> Bool {
match self {
Custom(is_interaction~, ..) => is_interaction
CreateInteractionResponse(..)
| GetOriginalInteractionResponse(..)
| EditOriginalInteractionResponse(..)
| DeleteOriginalInteractionResponse(..)
| CreateFollowupMessage(..)
| GetFollowupMessage(..)
| EditFollowupMessage(..)
| DeleteFollowupMessage(..)
| ExecuteWebhook(..)
| GetWebhookWithToken(..)
| ModifyWebhookWithToken(..)
| DeleteWebhookWithToken(..)
| ExecuteSlackCompatibleWebhook(..)
| ExecuteGithubCompatibleWebhook(..)
| GetWebhookMessage(..)
| EditWebhookMessage(..)
| DeleteWebhookMessage(..) => true
_ => false
}
}
///|
/// Whether the endpoint accepts the X-Audit-Log-Reason header.
pub fn Route::supports_reason(self : Route) -> Bool {
match self {
Custom(supports_reason~, ..) => supports_reason
ModifyChannel(..)
| DeleteChannel(..)
| DeleteMessage(..)
| BulkDeleteMessages(..)
| PinMessage(..)
| UnpinMessage(..)
| EditChannelPermissions(..)
| DeleteChannelPermission(..)
| CreateChannelInvite(..)
| FollowAnnouncementChannel(..)
| SetVoiceChannelStatus(..)
| CreateWebhook(..)
| ModifyWebhook(..)
| DeleteWebhook(..)
| DeleteInvite(..)
| CreateGuildEmoji(..)
| ModifyGuildEmoji(..)
| DeleteGuildEmoji(..)
| StartThreadFromMessage(..)
| StartThreadWithoutMessage(..)
| ModifyGuild(..)
| CreateGuildChannel(..)
| ModifyGuildChannelPositions(..)
| ModifyGuildRole(..)
| ModifyGuildRolePositions(..)
| CreateGuildRole(..)
| DeleteGuildRole(..)
| AddGuildMemberRole(..)
| RemoveGuildMemberRole(..)
| RemoveGuildMember(..)
| CreateGuildBan(..)
| BulkGuildBan(..)
| RemoveGuildBan(..)
| BeginGuildPrune(..)
| DeleteGuildIntegration(..)
| ModifyGuildWidget(..)
| ModifyGuildWelcomeScreen(..)
| ModifyGuildOnboarding(..)
| ModifyGuildMember(..)
| ModifyCurrentMember(..)
| CreateAutoModerationRule(..)
| ModifyAutoModerationRule(..)
| DeleteAutoModerationRule(..)
| CreateGuildSticker(..)
| ModifyGuildSticker(..)
| DeleteGuildSticker(..)
| CreateGuildScheduledEvent(..)
| ModifyGuildScheduledEvent(..)
| DeleteGuildScheduledEvent(..)
| CreateStageInstance
| ModifyStageInstance(..)
| DeleteStageInstance(..)
| CreateGuildSoundboardSound(..)
| ModifyGuildSoundboardSound(..)
| DeleteGuildSoundboardSound(..) => true
_ => false
}
}
///|
/// Interaction callbacks and webhook-token routes are called without the bot
/// token because the token in the URL authenticates them.
pub fn Route::needs_auth(self : Route) -> Bool {
!self.is_interaction()
}