Skip to content

Commit 5ac7951

Browse files
zimegClaude
andcommitted
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 <svc-devxp-claude@slack-corp.com>
1 parent 1c5afec commit 5ac7951

4 files changed

Lines changed: 628 additions & 2 deletions

File tree

‎slack_sdk/web/async_client.py‎

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,6 +2165,204 @@ async def agents_sessions_setStatus(
21652165
kwargs = _remove_none_values(kwargs)
21662166
return await self.api_call("agents.sessions.setStatus", json=kwargs)
21672167

2168+
async def codeChannels_archive(
2169+
self,
2170+
*,
2171+
channel_id: str,
2172+
summary_message_ts: Optional[str] = None,
2173+
**kwargs,
2174+
) -> AsyncSlackResponse:
2175+
"""Archives a code channel, optionally recording a summary message on the channel.
2176+
https://docs.slack.dev/reference/methods/codeChannels.archive
2177+
"""
2178+
kwargs.update({"channel_id": channel_id, "summary_message_ts": summary_message_ts})
2179+
kwargs = _remove_none_values(kwargs)
2180+
return await self.api_call("codeChannels.archive", json=kwargs)
2181+
2182+
async def codeChannels_create(
2183+
self,
2184+
*,
2185+
name: str,
2186+
team_id: Optional[str] = None,
2187+
session_id: Optional[str] = None,
2188+
is_private: Optional[bool] = None,
2189+
origin_channel_id: Optional[str] = None,
2190+
origin_message_ts: Optional[str] = None,
2191+
**kwargs,
2192+
) -> AsyncSlackResponse:
2193+
"""Creates a dedicated code channel for an agent session.
2194+
https://docs.slack.dev/reference/methods/codeChannels.create
2195+
"""
2196+
kwargs.update(
2197+
{
2198+
"name": name,
2199+
"team_id": team_id,
2200+
"session_id": session_id,
2201+
"is_private": is_private,
2202+
"origin_channel_id": origin_channel_id,
2203+
"origin_message_ts": origin_message_ts,
2204+
}
2205+
)
2206+
kwargs = _remove_none_values(kwargs)
2207+
return await self.api_call("codeChannels.create", json=kwargs)
2208+
2209+
async def codeChannels_getCanvas(
2210+
self,
2211+
*,
2212+
channel_id: str,
2213+
canvas_id: str,
2214+
content_format: Optional[str] = None,
2215+
include_resolved: Optional[bool] = None,
2216+
**kwargs,
2217+
) -> AsyncSlackResponse:
2218+
"""Fetches a canvas attached to a code channel — full content plus comment threads — in a single round-trip.
2219+
https://docs.slack.dev/reference/methods/codeChannels.getCanvas
2220+
"""
2221+
kwargs.update(
2222+
{
2223+
"channel_id": channel_id,
2224+
"canvas_id": canvas_id,
2225+
"content_format": content_format,
2226+
"include_resolved": include_resolved,
2227+
}
2228+
)
2229+
kwargs = _remove_none_values(kwargs)
2230+
return await self.api_call("codeChannels.getCanvas", json=kwargs)
2231+
2232+
async def codeChannels_listViews(
2233+
self,
2234+
*,
2235+
channel_id: str,
2236+
**kwargs,
2237+
) -> AsyncSlackResponse:
2238+
"""Lists the views currently attached to a code channel.
2239+
https://docs.slack.dev/reference/methods/codeChannels.listViews
2240+
"""
2241+
kwargs.update({"channel_id": channel_id})
2242+
kwargs = _remove_none_values(kwargs)
2243+
return await self.api_call("codeChannels.listViews", json=kwargs)
2244+
2245+
async def codeChannels_removeView(
2246+
self,
2247+
*,
2248+
channel_id: str,
2249+
view_key: Optional[str] = None,
2250+
view_id: Optional[str] = None,
2251+
**kwargs,
2252+
) -> AsyncSlackResponse:
2253+
"""Removes a view from a code channel (provide exactly one of view_key or view_id).
2254+
https://docs.slack.dev/reference/methods/codeChannels.removeView
2255+
"""
2256+
kwargs.update({"channel_id": channel_id, "view_key": view_key, "view_id": view_id})
2257+
kwargs = _remove_none_values(kwargs)
2258+
return await self.api_call("codeChannels.removeView", json=kwargs)
2259+
2260+
async def codeChannels_rename(
2261+
self,
2262+
*,
2263+
channel_id: str,
2264+
name: str,
2265+
**kwargs,
2266+
) -> AsyncSlackResponse:
2267+
"""Renames a code channel.
2268+
https://docs.slack.dev/reference/methods/codeChannels.rename
2269+
"""
2270+
kwargs.update({"channel_id": channel_id, "name": name})
2271+
kwargs = _remove_none_values(kwargs)
2272+
return await self.api_call("codeChannels.rename", json=kwargs)
2273+
2274+
async def codeChannels_setCanvasContent(
2275+
self,
2276+
*,
2277+
channel_id: str,
2278+
canvas_id: str,
2279+
content: str,
2280+
**kwargs,
2281+
) -> AsyncSlackResponse:
2282+
"""Replaces the full markdown content of a canvas attached to a code channel, preserving the
2283+
comment threads on the sections your agent didn't change.
2284+
https://docs.slack.dev/reference/methods/codeChannels.setCanvasContent
2285+
"""
2286+
kwargs.update({"channel_id": channel_id, "canvas_id": canvas_id, "content": content})
2287+
kwargs = _remove_none_values(kwargs)
2288+
return await self.api_call("codeChannels.setCanvasContent", json=kwargs)
2289+
2290+
async def codeChannels_setCommands(
2291+
self,
2292+
*,
2293+
channel_id: str,
2294+
commands: List[Dict[str, Any]],
2295+
**kwargs,
2296+
) -> AsyncSlackResponse:
2297+
"""Registers the set of slash commands your agent offers in a code channel.
2298+
https://docs.slack.dev/reference/methods/codeChannels.setCommands
2299+
"""
2300+
kwargs.update({"channel_id": channel_id, "commands": commands})
2301+
kwargs = _remove_none_values(kwargs)
2302+
return await self.api_call("codeChannels.setCommands", json=kwargs)
2303+
2304+
async def codeChannels_setProperties(
2305+
self,
2306+
*,
2307+
channel_id: str,
2308+
code_channel: Optional[Dict[str, Any]] = None,
2309+
agent_resource: Optional[Dict[str, Any]] = None,
2310+
**kwargs,
2311+
) -> AsyncSlackResponse:
2312+
"""Sets properties on a code channel: context bar items and external resource details.
2313+
https://docs.slack.dev/reference/methods/codeChannels.setProperties
2314+
"""
2315+
kwargs.update(
2316+
{
2317+
"channel_id": channel_id,
2318+
"code_channel": code_channel,
2319+
"agent_resource": agent_resource,
2320+
}
2321+
)
2322+
kwargs = _remove_none_values(kwargs)
2323+
return await self.api_call("codeChannels.setProperties", json=kwargs)
2324+
2325+
async def codeChannels_setView(
2326+
self,
2327+
*,
2328+
channel_id: str,
2329+
type: Optional[str] = None,
2330+
view_key: Optional[str] = None,
2331+
content: Optional[str] = None,
2332+
blocks: Optional[List[Dict[str, Any]]] = None,
2333+
canvas_id: Optional[str] = None,
2334+
access_level: Optional[str] = None,
2335+
base_branch: Optional[str] = None,
2336+
head_branch: Optional[str] = None,
2337+
name: Optional[str] = None,
2338+
label: Optional[str] = None,
2339+
csp: Optional[Dict[str, Any]] = None,
2340+
**kwargs,
2341+
) -> AsyncSlackResponse:
2342+
"""Creates or updates a view in a code channel. Views can render HTML, diffs, Block Kit, or
2343+
canvases as tabs alongside the conversation.
2344+
https://docs.slack.dev/reference/methods/codeChannels.setView
2345+
"""
2346+
kwargs.update(
2347+
{
2348+
"channel_id": channel_id,
2349+
"type": type,
2350+
"view_key": view_key,
2351+
"content": content,
2352+
"blocks": blocks,
2353+
"canvas_id": canvas_id,
2354+
"access_level": access_level,
2355+
"base_branch": base_branch,
2356+
"head_branch": head_branch,
2357+
"name": name,
2358+
"label": label,
2359+
"csp": csp,
2360+
}
2361+
)
2362+
kwargs = _remove_none_values(kwargs)
2363+
return await self.api_call("codeChannels.setView", json=kwargs)
2364+
return await self.api_call("codeChannels.setView", json=kwargs)
2365+
21682366
async def assistant_threads_setTitle(
21692367
self,
21702368
*,

0 commit comments

Comments
 (0)