diff --git a/discord/http.py b/discord/http.py
index 608487e86..c2d668fbb 100644
--- a/discord/http.py
+++ b/discord/http.py
@@ -1303,6 +1303,44 @@ class HTTPClient:
         )
         return self.request(r)
 
+    def get_guild_application_command_permissions(self, application_id, guild_id) -> Response[List[interactions.GuildApplicationCommandPermissions]]:
+        r = Route(
+            'GET',
+            '/applications/{application_id}/guilds/{guild_id}/commands/permissions',
+            application_id=application_id,
+            guild_id=guild_id,
+        )
+        return self.request(r)
+
+    def get_application_command_permissions(self, application_id, guild_id, command_id) -> Response[interactions.GuildApplicationCommandPermissions]:
+        r = Route(
+            'GET',
+            '/applications/{application_id}/guilds/{guild_id}/commands/{command_id}/permissions',
+            application_id=application_id,
+            guild_id=guild_id,
+            command_id=command_id,
+        )
+        return self.request(r)
+
+    def edit_application_command_permissions(self, application_id, guild_id, command_id, payload):
+        r = Route(
+            'PUT',
+            '/applications/{application_id}/guilds/{guild_id}/commands/{command_id}/permissions',
+            application_id=application_id,
+            guild_id=guild_id,
+            command_id=command_id,
+        )
+        return self.request(r, json=payload)
+
+    def bulk_edit_guild_application_command_permissions(self, application_id, guild_id, payload):
+        r = Route(
+            'PUT',
+            '/applications/{application_id}/guilds/{guild_id}/commands/permissions',
+            application_id=application_id,
+            guild_id=guild_id,
+        )
+        return self.request(r, json=payload)
+
     # Misc
 
     def application_info(self):
diff --git a/discord/types/interactions.py b/discord/types/interactions.py
index 6c7c26546..07cb19324 100644
--- a/discord/types/interactions.py
+++ b/discord/types/interactions.py
@@ -24,11 +24,13 @@ DEALINGS IN THE SOFTWARE.
 
 from __future__ import annotations
 
-from typing import TypedDict, Union, List, Literal
+from typing import Dict, TypedDict, Union, List, Literal
 from .snowflake import Snowflake
 from .message import AllowedMentions
+from .channel import PartialChannel
 from .embed import Embed
 from .member import Member
+from .role import Role
 from .user import User
 
 
@@ -48,7 +50,7 @@ class _ApplicationCommandOptionOptional(TypedDict, total=False):
     options: List[ApplicationCommandOption]
 
 
-ApplicationCommandOptionType = Literal[1, 2, 3, 4, 5, 6, 7, 8]
+ApplicationCommandOptionType = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9]
 
 
 class ApplicationCommandOption(_ApplicationCommandOptionOptional):
@@ -63,6 +65,25 @@ class ApplicationCommandOptionChoice(TypedDict):
     value: Union[str, int]
 
 
+ApplicationCommandPermissionType = Literal[1, 2]
+
+
+class ApplicationCommandPermissions(TypedDict):
+    id: Snowflake
+    type: ApplicationCommandPermissionType
+    permission: bool
+
+
+class PartialGuildApplicationCommandPermissions(TypedDict):
+    id: Snowflake
+    permissions: List[ApplicationCommandPermissions]
+
+
+class GuildApplicationCommandPermissions(PartialGuildApplicationCommandPermissions):
+    application_id: Snowflake
+    guild_id: Snowflake
+
+
 InteractionType = Literal[1, 2]
 
 
@@ -73,10 +94,19 @@ class _ApplicationCommandInteractionDataOptionOptional(TypedDict, total=False):
 
 class ApplicationCommandInteractionDataOption(_ApplicationCommandInteractionDataOptionOptional):
     name: str
+    type: ApplicationCommandOptionType
+
+
+class ApplicationCommandInteractionDataResolved(TypedDict, total=False):
+    users: Dict[Snowflake, User]
+    members: Dict[Snowflake, Member]
+    roles: Dict[Snowflake, Role]
+    channels: Dict[Snowflake, PartialChannel]
 
 
 class _ApplicationCommandInteractionDataOptional(TypedDict, total=False):
     options: List[ApplicationCommandInteractionDataOption]
+    resolved: ApplicationCommandInteractionDataResolved
 
 
 class ApplicationCommandInteractionData(_ApplicationCommandInteractionDataOptional):