From 5ac795164020ce3a3ef9e2749a00793b07361f0b Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Wed, 19 Aug 2026 15:16:13 -0700 Subject: [PATCH] feat(web-api): add codeChannels.* methods Add the codeChannels.* Web API methods (archive, create, getCanvas, listViews, removeView, rename, setCanvasContent, setCommands, setProperties, setView) with arguments aligned to the API reference, alphabetized, and registered in the method coverage test. Stacked on the agents.sessions.* methods. Co-Authored-By: Claude --- slack_sdk/web/async_client.py | 198 ++++++++++++++++++ slack_sdk/web/client.py | 198 ++++++++++++++++++ slack_sdk/web/legacy_client.py | 198 ++++++++++++++++++ .../web/test_web_client_coverage.py | 36 +++- 4 files changed, 628 insertions(+), 2 deletions(-) diff --git a/slack_sdk/web/async_client.py b/slack_sdk/web/async_client.py index c69fb4fc6..9ab005c83 100644 --- a/slack_sdk/web/async_client.py +++ b/slack_sdk/web/async_client.py @@ -2165,6 +2165,204 @@ async def agents_sessions_setStatus( kwargs = _remove_none_values(kwargs) return await self.api_call("agents.sessions.setStatus", json=kwargs) + async def codeChannels_archive( + self, + *, + channel_id: str, + summary_message_ts: Optional[str] = None, + **kwargs, + ) -> AsyncSlackResponse: + """Archives a code channel, optionally recording a summary message on the channel. + https://docs.slack.dev/reference/methods/codeChannels.archive + """ + kwargs.update({"channel_id": channel_id, "summary_message_ts": summary_message_ts}) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.archive", json=kwargs) + + async def codeChannels_create( + self, + *, + name: str, + team_id: Optional[str] = None, + session_id: Optional[str] = None, + is_private: Optional[bool] = None, + origin_channel_id: Optional[str] = None, + origin_message_ts: Optional[str] = None, + **kwargs, + ) -> AsyncSlackResponse: + """Creates a dedicated code channel for an agent session. + https://docs.slack.dev/reference/methods/codeChannels.create + """ + kwargs.update( + { + "name": name, + "team_id": team_id, + "session_id": session_id, + "is_private": is_private, + "origin_channel_id": origin_channel_id, + "origin_message_ts": origin_message_ts, + } + ) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.create", json=kwargs) + + async def codeChannels_getCanvas( + self, + *, + channel_id: str, + canvas_id: str, + content_format: Optional[str] = None, + include_resolved: Optional[bool] = None, + **kwargs, + ) -> AsyncSlackResponse: + """Fetches a canvas attached to a code channel — full content plus comment threads — in a single round-trip. + https://docs.slack.dev/reference/methods/codeChannels.getCanvas + """ + kwargs.update( + { + "channel_id": channel_id, + "canvas_id": canvas_id, + "content_format": content_format, + "include_resolved": include_resolved, + } + ) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.getCanvas", json=kwargs) + + async def codeChannels_listViews( + self, + *, + channel_id: str, + **kwargs, + ) -> AsyncSlackResponse: + """Lists the views currently attached to a code channel. + https://docs.slack.dev/reference/methods/codeChannels.listViews + """ + kwargs.update({"channel_id": channel_id}) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.listViews", json=kwargs) + + async def codeChannels_removeView( + self, + *, + channel_id: str, + view_key: Optional[str] = None, + view_id: Optional[str] = None, + **kwargs, + ) -> AsyncSlackResponse: + """Removes a view from a code channel (provide exactly one of view_key or view_id). + https://docs.slack.dev/reference/methods/codeChannels.removeView + """ + kwargs.update({"channel_id": channel_id, "view_key": view_key, "view_id": view_id}) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.removeView", json=kwargs) + + async def codeChannels_rename( + self, + *, + channel_id: str, + name: str, + **kwargs, + ) -> AsyncSlackResponse: + """Renames a code channel. + https://docs.slack.dev/reference/methods/codeChannels.rename + """ + kwargs.update({"channel_id": channel_id, "name": name}) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.rename", json=kwargs) + + async def codeChannels_setCanvasContent( + self, + *, + channel_id: str, + canvas_id: str, + content: str, + **kwargs, + ) -> AsyncSlackResponse: + """Replaces the full markdown content of a canvas attached to a code channel, preserving the + comment threads on the sections your agent didn't change. + https://docs.slack.dev/reference/methods/codeChannels.setCanvasContent + """ + kwargs.update({"channel_id": channel_id, "canvas_id": canvas_id, "content": content}) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.setCanvasContent", json=kwargs) + + async def codeChannels_setCommands( + self, + *, + channel_id: str, + commands: List[Dict[str, Any]], + **kwargs, + ) -> AsyncSlackResponse: + """Registers the set of slash commands your agent offers in a code channel. + https://docs.slack.dev/reference/methods/codeChannels.setCommands + """ + kwargs.update({"channel_id": channel_id, "commands": commands}) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.setCommands", json=kwargs) + + async def codeChannels_setProperties( + self, + *, + channel_id: str, + code_channel: Optional[Dict[str, Any]] = None, + agent_resource: Optional[Dict[str, Any]] = None, + **kwargs, + ) -> AsyncSlackResponse: + """Sets properties on a code channel: context bar items and external resource details. + https://docs.slack.dev/reference/methods/codeChannels.setProperties + """ + kwargs.update( + { + "channel_id": channel_id, + "code_channel": code_channel, + "agent_resource": agent_resource, + } + ) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.setProperties", json=kwargs) + + async def codeChannels_setView( + self, + *, + channel_id: str, + type: Optional[str] = None, + view_key: Optional[str] = None, + content: Optional[str] = None, + blocks: Optional[List[Dict[str, Any]]] = None, + canvas_id: Optional[str] = None, + access_level: Optional[str] = None, + base_branch: Optional[str] = None, + head_branch: Optional[str] = None, + name: Optional[str] = None, + label: Optional[str] = None, + csp: Optional[Dict[str, Any]] = None, + **kwargs, + ) -> AsyncSlackResponse: + """Creates or updates a view in a code channel. Views can render HTML, diffs, Block Kit, or + canvases as tabs alongside the conversation. + https://docs.slack.dev/reference/methods/codeChannels.setView + """ + kwargs.update( + { + "channel_id": channel_id, + "type": type, + "view_key": view_key, + "content": content, + "blocks": blocks, + "canvas_id": canvas_id, + "access_level": access_level, + "base_branch": base_branch, + "head_branch": head_branch, + "name": name, + "label": label, + "csp": csp, + } + ) + kwargs = _remove_none_values(kwargs) + return await self.api_call("codeChannels.setView", json=kwargs) + return await self.api_call("codeChannels.setView", json=kwargs) + async def assistant_threads_setTitle( self, *, diff --git a/slack_sdk/web/client.py b/slack_sdk/web/client.py index d908ec080..b76fde034 100644 --- a/slack_sdk/web/client.py +++ b/slack_sdk/web/client.py @@ -2155,6 +2155,204 @@ def agents_sessions_setStatus( kwargs = _remove_none_values(kwargs) return self.api_call("agents.sessions.setStatus", json=kwargs) + def codeChannels_archive( + self, + *, + channel_id: str, + summary_message_ts: Optional[str] = None, + **kwargs, + ) -> SlackResponse: + """Archives a code channel, optionally recording a summary message on the channel. + https://docs.slack.dev/reference/methods/codeChannels.archive + """ + kwargs.update({"channel_id": channel_id, "summary_message_ts": summary_message_ts}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.archive", json=kwargs) + + def codeChannels_create( + self, + *, + name: str, + team_id: Optional[str] = None, + session_id: Optional[str] = None, + is_private: Optional[bool] = None, + origin_channel_id: Optional[str] = None, + origin_message_ts: Optional[str] = None, + **kwargs, + ) -> SlackResponse: + """Creates a dedicated code channel for an agent session. + https://docs.slack.dev/reference/methods/codeChannels.create + """ + kwargs.update( + { + "name": name, + "team_id": team_id, + "session_id": session_id, + "is_private": is_private, + "origin_channel_id": origin_channel_id, + "origin_message_ts": origin_message_ts, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.create", json=kwargs) + + def codeChannels_getCanvas( + self, + *, + channel_id: str, + canvas_id: str, + content_format: Optional[str] = None, + include_resolved: Optional[bool] = None, + **kwargs, + ) -> SlackResponse: + """Fetches a canvas attached to a code channel — full content plus comment threads — in a single round-trip. + https://docs.slack.dev/reference/methods/codeChannels.getCanvas + """ + kwargs.update( + { + "channel_id": channel_id, + "canvas_id": canvas_id, + "content_format": content_format, + "include_resolved": include_resolved, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.getCanvas", json=kwargs) + + def codeChannels_listViews( + self, + *, + channel_id: str, + **kwargs, + ) -> SlackResponse: + """Lists the views currently attached to a code channel. + https://docs.slack.dev/reference/methods/codeChannels.listViews + """ + kwargs.update({"channel_id": channel_id}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.listViews", json=kwargs) + + def codeChannels_removeView( + self, + *, + channel_id: str, + view_key: Optional[str] = None, + view_id: Optional[str] = None, + **kwargs, + ) -> SlackResponse: + """Removes a view from a code channel (provide exactly one of view_key or view_id). + https://docs.slack.dev/reference/methods/codeChannels.removeView + """ + kwargs.update({"channel_id": channel_id, "view_key": view_key, "view_id": view_id}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.removeView", json=kwargs) + + def codeChannels_rename( + self, + *, + channel_id: str, + name: str, + **kwargs, + ) -> SlackResponse: + """Renames a code channel. + https://docs.slack.dev/reference/methods/codeChannels.rename + """ + kwargs.update({"channel_id": channel_id, "name": name}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.rename", json=kwargs) + + def codeChannels_setCanvasContent( + self, + *, + channel_id: str, + canvas_id: str, + content: str, + **kwargs, + ) -> SlackResponse: + """Replaces the full markdown content of a canvas attached to a code channel, preserving the + comment threads on the sections your agent didn't change. + https://docs.slack.dev/reference/methods/codeChannels.setCanvasContent + """ + kwargs.update({"channel_id": channel_id, "canvas_id": canvas_id, "content": content}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setCanvasContent", json=kwargs) + + def codeChannels_setCommands( + self, + *, + channel_id: str, + commands: List[Dict[str, Any]], + **kwargs, + ) -> SlackResponse: + """Registers the set of slash commands your agent offers in a code channel. + https://docs.slack.dev/reference/methods/codeChannels.setCommands + """ + kwargs.update({"channel_id": channel_id, "commands": commands}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setCommands", json=kwargs) + + def codeChannels_setProperties( + self, + *, + channel_id: str, + code_channel: Optional[Dict[str, Any]] = None, + agent_resource: Optional[Dict[str, Any]] = None, + **kwargs, + ) -> SlackResponse: + """Sets properties on a code channel: context bar items and external resource details. + https://docs.slack.dev/reference/methods/codeChannels.setProperties + """ + kwargs.update( + { + "channel_id": channel_id, + "code_channel": code_channel, + "agent_resource": agent_resource, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setProperties", json=kwargs) + + def codeChannels_setView( + self, + *, + channel_id: str, + type: Optional[str] = None, + view_key: Optional[str] = None, + content: Optional[str] = None, + blocks: Optional[List[Dict[str, Any]]] = None, + canvas_id: Optional[str] = None, + access_level: Optional[str] = None, + base_branch: Optional[str] = None, + head_branch: Optional[str] = None, + name: Optional[str] = None, + label: Optional[str] = None, + csp: Optional[Dict[str, Any]] = None, + **kwargs, + ) -> SlackResponse: + """Creates or updates a view in a code channel. Views can render HTML, diffs, Block Kit, or + canvases as tabs alongside the conversation. + https://docs.slack.dev/reference/methods/codeChannels.setView + """ + kwargs.update( + { + "channel_id": channel_id, + "type": type, + "view_key": view_key, + "content": content, + "blocks": blocks, + "canvas_id": canvas_id, + "access_level": access_level, + "base_branch": base_branch, + "head_branch": head_branch, + "name": name, + "label": label, + "csp": csp, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setView", json=kwargs) + return self.api_call("codeChannels.setView", json=kwargs) + def assistant_threads_setTitle( self, *, diff --git a/slack_sdk/web/legacy_client.py b/slack_sdk/web/legacy_client.py index c247280f7..d32519ffd 100644 --- a/slack_sdk/web/legacy_client.py +++ b/slack_sdk/web/legacy_client.py @@ -2166,6 +2166,204 @@ def agents_sessions_setStatus( kwargs = _remove_none_values(kwargs) return self.api_call("agents.sessions.setStatus", json=kwargs) + def codeChannels_archive( + self, + *, + channel_id: str, + summary_message_ts: Optional[str] = None, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Archives a code channel, optionally recording a summary message on the channel. + https://docs.slack.dev/reference/methods/codeChannels.archive + """ + kwargs.update({"channel_id": channel_id, "summary_message_ts": summary_message_ts}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.archive", json=kwargs) + + def codeChannels_create( + self, + *, + name: str, + team_id: Optional[str] = None, + session_id: Optional[str] = None, + is_private: Optional[bool] = None, + origin_channel_id: Optional[str] = None, + origin_message_ts: Optional[str] = None, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Creates a dedicated code channel for an agent session. + https://docs.slack.dev/reference/methods/codeChannels.create + """ + kwargs.update( + { + "name": name, + "team_id": team_id, + "session_id": session_id, + "is_private": is_private, + "origin_channel_id": origin_channel_id, + "origin_message_ts": origin_message_ts, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.create", json=kwargs) + + def codeChannels_getCanvas( + self, + *, + channel_id: str, + canvas_id: str, + content_format: Optional[str] = None, + include_resolved: Optional[bool] = None, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Fetches a canvas attached to a code channel — full content plus comment threads — in a single round-trip. + https://docs.slack.dev/reference/methods/codeChannels.getCanvas + """ + kwargs.update( + { + "channel_id": channel_id, + "canvas_id": canvas_id, + "content_format": content_format, + "include_resolved": include_resolved, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.getCanvas", json=kwargs) + + def codeChannels_listViews( + self, + *, + channel_id: str, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Lists the views currently attached to a code channel. + https://docs.slack.dev/reference/methods/codeChannels.listViews + """ + kwargs.update({"channel_id": channel_id}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.listViews", json=kwargs) + + def codeChannels_removeView( + self, + *, + channel_id: str, + view_key: Optional[str] = None, + view_id: Optional[str] = None, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Removes a view from a code channel (provide exactly one of view_key or view_id). + https://docs.slack.dev/reference/methods/codeChannels.removeView + """ + kwargs.update({"channel_id": channel_id, "view_key": view_key, "view_id": view_id}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.removeView", json=kwargs) + + def codeChannels_rename( + self, + *, + channel_id: str, + name: str, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Renames a code channel. + https://docs.slack.dev/reference/methods/codeChannels.rename + """ + kwargs.update({"channel_id": channel_id, "name": name}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.rename", json=kwargs) + + def codeChannels_setCanvasContent( + self, + *, + channel_id: str, + canvas_id: str, + content: str, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Replaces the full markdown content of a canvas attached to a code channel, preserving the + comment threads on the sections your agent didn't change. + https://docs.slack.dev/reference/methods/codeChannels.setCanvasContent + """ + kwargs.update({"channel_id": channel_id, "canvas_id": canvas_id, "content": content}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setCanvasContent", json=kwargs) + + def codeChannels_setCommands( + self, + *, + channel_id: str, + commands: List[Dict[str, Any]], + **kwargs, + ) -> Union[Future, SlackResponse]: + """Registers the set of slash commands your agent offers in a code channel. + https://docs.slack.dev/reference/methods/codeChannels.setCommands + """ + kwargs.update({"channel_id": channel_id, "commands": commands}) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setCommands", json=kwargs) + + def codeChannels_setProperties( + self, + *, + channel_id: str, + code_channel: Optional[Dict[str, Any]] = None, + agent_resource: Optional[Dict[str, Any]] = None, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Sets properties on a code channel: context bar items and external resource details. + https://docs.slack.dev/reference/methods/codeChannels.setProperties + """ + kwargs.update( + { + "channel_id": channel_id, + "code_channel": code_channel, + "agent_resource": agent_resource, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setProperties", json=kwargs) + + def codeChannels_setView( + self, + *, + channel_id: str, + type: Optional[str] = None, + view_key: Optional[str] = None, + content: Optional[str] = None, + blocks: Optional[List[Dict[str, Any]]] = None, + canvas_id: Optional[str] = None, + access_level: Optional[str] = None, + base_branch: Optional[str] = None, + head_branch: Optional[str] = None, + name: Optional[str] = None, + label: Optional[str] = None, + csp: Optional[Dict[str, Any]] = None, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Creates or updates a view in a code channel. Views can render HTML, diffs, Block Kit, or + canvases as tabs alongside the conversation. + https://docs.slack.dev/reference/methods/codeChannels.setView + """ + kwargs.update( + { + "channel_id": channel_id, + "type": type, + "view_key": view_key, + "content": content, + "blocks": blocks, + "canvas_id": canvas_id, + "access_level": access_level, + "base_branch": base_branch, + "head_branch": head_branch, + "name": name, + "label": label, + "csp": csp, + } + ) + kwargs = _remove_none_values(kwargs) + return self.api_call("codeChannels.setView", json=kwargs) + return self.api_call("codeChannels.setView", json=kwargs) + def assistant_threads_setTitle( self, *, diff --git a/tests/slack_sdk_async/web/test_web_client_coverage.py b/tests/slack_sdk_async/web/test_web_client_coverage.py index 337b3e914..e5e035623 100644 --- a/tests/slack_sdk_async/web/test_web_client_coverage.py +++ b/tests/slack_sdk_async/web/test_web_client_coverage.py @@ -13,9 +13,9 @@ class TestWebClientCoverage(unittest.TestCase): - # 308 endpoints as of August 19, 2026 + # 318 endpoints as of August 19, 2026 # Can be fetched by running `var methodNames = [].slice.call(document.getElementsByClassName('apiReferenceFilterableList__listItemLink')).map(e => e.href.replace("https://api.slack.com/methods/", ""));console.log(methodNames.toString());console.log(methodNames.length);` on https://api.slack.com/methods - all_api_methods = "admin.analytics.getFile,admin.apps.activities.list,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.config.lookup,admin.apps.config.set,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.audit.anomaly.allow.getItem,admin.audit.anomaly.allow.updateItem,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.bulkArchive,admin.conversations.bulkDelete,admin.conversations.bulkMove,admin.conversations.convertToPrivate,admin.conversations.convertToPublic,admin.conversations.create,admin.conversations.createForObjects,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.linkObjects,admin.conversations.lookup,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.unlinkObjects,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.functions.list,admin.functions.permissions.lookup,admin.functions.permissions.set,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.roles.addAssignments,admin.roles.listAssignments,admin.roles.removeAssignments,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,admin.workflows.collaborators.add,admin.workflows.collaborators.remove,admin.workflows.permissions.lookup,admin.workflows.search,admin.workflows.unpublish,api.test,apps.activities.list,apps.auth.external.delete,apps.auth.external.get,apps.connections.open,apps.uninstall,apps.datastore.bulkDelete,apps.datastore.bulkGet,apps.datastore.bulkPut,apps.datastore.count,apps.datastore.delete,apps.datastore.get,apps.datastore.put,apps.datastore.query,apps.datastore.update,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.user.connection.update,agents.sessions.rename,agents.sessions.setStatus,assistant.search.context,assistant.threads.setStatus,assistant.threads.setSuggestedPrompts,assistant.threads.setTitle,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,canvases.access.delete,canvases.access.set,canvases.create,canvases.delete,canvases.edit,canvases.sections.lookup,channels.mark,chat.appendStream,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.startStream,chat.stopStream,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,conversations.canvases.create,conversations.externalInvitePermissions.set,conversations.requestSharedInvite.approve,conversations.requestSharedInvite.deny,conversations.requestSharedInvite.list,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.completeUploadExternal,files.delete,files.getUploadURLExternal,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.comments.delete,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,functions.completeError,functions.completeSuccess,functions.distributions.permissions.add,functions.distributions.permissions.list,functions.distributions.permissions.remove,functions.distributions.permissions.set,functions.workflows.steps.list,functions.workflows.steps.responses.export,groups.mark,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,slackLists.access.delete,slackLists.access.set,slackLists.create,slackLists.update,slackLists.download.get,slackLists.download.start,slackLists.items.create,slackLists.items.delete,slackLists.items.deleteMultiple,slackLists.items.info,slackLists.items.list,slackLists.items.update,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.externalTeams.disconnect,team.externalTeams.list,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.discoverableContacts.lookup,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,workflows.featured.add,workflows.featured.list,workflows.featured.remove,workflows.featured.set,workflows.triggers.permissions.add,workflows.triggers.permissions.list,workflows.triggers.permissions.remove,workflows.triggers.permissions.set,im.list,im.mark,mpim.list,mpim.mark".split( + all_api_methods = "admin.analytics.getFile,admin.apps.activities.list,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.config.lookup,admin.apps.config.set,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.audit.anomaly.allow.getItem,admin.audit.anomaly.allow.updateItem,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.bulkArchive,admin.conversations.bulkDelete,admin.conversations.bulkMove,admin.conversations.convertToPrivate,admin.conversations.convertToPublic,admin.conversations.create,admin.conversations.createForObjects,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.linkObjects,admin.conversations.lookup,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.unlinkObjects,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.functions.list,admin.functions.permissions.lookup,admin.functions.permissions.set,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.roles.addAssignments,admin.roles.listAssignments,admin.roles.removeAssignments,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,admin.workflows.collaborators.add,admin.workflows.collaborators.remove,admin.workflows.permissions.lookup,admin.workflows.search,admin.workflows.unpublish,api.test,apps.activities.list,apps.auth.external.delete,apps.auth.external.get,apps.connections.open,apps.uninstall,apps.datastore.bulkDelete,apps.datastore.bulkGet,apps.datastore.bulkPut,apps.datastore.count,apps.datastore.delete,apps.datastore.get,apps.datastore.put,apps.datastore.query,apps.datastore.update,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.user.connection.update,agents.sessions.rename,agents.sessions.setStatus,assistant.search.context,assistant.threads.setStatus,assistant.threads.setSuggestedPrompts,assistant.threads.setTitle,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,canvases.access.delete,canvases.access.set,canvases.create,canvases.delete,canvases.edit,canvases.sections.lookup,channels.mark,codeChannels.archive,codeChannels.create,codeChannels.getCanvas,codeChannels.listViews,codeChannels.removeView,codeChannels.rename,codeChannels.setCanvasContent,codeChannels.setCommands,codeChannels.setProperties,codeChannels.setView,chat.appendStream,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.startStream,chat.stopStream,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,conversations.canvases.create,conversations.externalInvitePermissions.set,conversations.requestSharedInvite.approve,conversations.requestSharedInvite.deny,conversations.requestSharedInvite.list,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.completeUploadExternal,files.delete,files.getUploadURLExternal,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.comments.delete,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,functions.completeError,functions.completeSuccess,functions.distributions.permissions.add,functions.distributions.permissions.list,functions.distributions.permissions.remove,functions.distributions.permissions.set,functions.workflows.steps.list,functions.workflows.steps.responses.export,groups.mark,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,slackLists.access.delete,slackLists.access.set,slackLists.create,slackLists.update,slackLists.download.get,slackLists.download.start,slackLists.items.create,slackLists.items.delete,slackLists.items.deleteMultiple,slackLists.items.info,slackLists.items.list,slackLists.items.update,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.externalTeams.disconnect,team.externalTeams.list,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.discoverableContacts.lookup,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,workflows.featured.add,workflows.featured.list,workflows.featured.remove,workflows.featured.set,workflows.triggers.permissions.add,workflows.triggers.permissions.list,workflows.triggers.permissions.remove,workflows.triggers.permissions.set,im.list,im.mark,mpim.list,mpim.mark".split( "," ) @@ -1169,6 +1169,38 @@ async def run_method(self, method_name, method, async_method): elif method_name == "agents_sessions_setStatus": self.api_methods_to_call.remove(method(channel_id="C123", status="processing")["method"]) await async_method(channel_id="C123", status="processing") + elif method_name == "codeChannels_archive": + self.api_methods_to_call.remove(method(channel_id="C123")["method"]) + await async_method(channel_id="C123") + elif method_name == "codeChannels_create": + self.api_methods_to_call.remove( + method(name="Fix flaky test", origin_channel_id="C123", origin_message_ts="1717171717.123456")["method"] + ) + await async_method(name="Fix flaky test", origin_channel_id="C123", origin_message_ts="1717171717.123456") + elif method_name == "codeChannels_getCanvas": + self.api_methods_to_call.remove(method(channel_id="C123", canvas_id="F123")["method"]) + await async_method(channel_id="C123", canvas_id="F123") + elif method_name == "codeChannels_listViews": + self.api_methods_to_call.remove(method(channel_id="C123")["method"]) + await async_method(channel_id="C123") + elif method_name == "codeChannels_removeView": + self.api_methods_to_call.remove(method(channel_id="C123", view_id="V123")["method"]) + await async_method(channel_id="C123", view_id="V123") + elif method_name == "codeChannels_rename": + self.api_methods_to_call.remove(method(channel_id="C123", name="new-name")["method"]) + await async_method(channel_id="C123", name="new-name") + elif method_name == "codeChannels_setCanvasContent": + self.api_methods_to_call.remove(method(channel_id="C123", canvas_id="F123", content="# Plan")["method"]) + await async_method(channel_id="C123", canvas_id="F123", content="# Plan") + elif method_name == "codeChannels_setCommands": + self.api_methods_to_call.remove(method(channel_id="C123", commands=[])["method"]) + await async_method(channel_id="C123", commands=[]) + elif method_name == "codeChannels_setProperties": + self.api_methods_to_call.remove(method(channel_id="C123")["method"]) + await async_method(channel_id="C123") + elif method_name == "codeChannels_setView": + self.api_methods_to_call.remove(method(channel_id="C123", type="diff")["method"]) + await async_method(channel_id="C123", type="diff") else: self.api_methods_to_call.remove(method(*{})["method"]) await async_method(*{})