From c9c1af57d3f98d47fe8b913d90e0c5ab444d97c1 Mon Sep 17 00:00:00 2001
From: Eden Zimbelman Classes
def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -2821,6 +2821,7 @@ Classes
link_names: Optional[bool] = None,
username: Optional[str] = None,
parse: Optional[str] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Sends an ephemeral message to a user in a channel.
@@ -2840,11 +2841,12 @@ Classes
"link_names": link_names,
"username": username,
"parse": parse,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postEphemeral", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postEphemeral", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postEphemeral", json=kwargs)
@@ -2868,6 +2870,7 @@ Classes
username: Optional[str] = None,
parse: Optional[str] = None, # none, full
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Sends a message to a channel.
@@ -2892,11 +2895,12 @@ Classes
"username": username,
"parse": parse,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postMessage", json=kwargs)
@@ -2905,7 +2909,7 @@ Classes
*,
channel: str,
post_at: Union[str, int],
- text: str,
+ text: Optional[str] = None,
as_user: Optional[bool] = None,
attachments: Optional[Union[str, Sequence[Union[Dict, Attachment]]]] = None,
blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None,
@@ -2916,6 +2920,7 @@ Classes
unfurl_media: Optional[bool] = None,
link_names: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Schedules a message.
@@ -2936,11 +2941,12 @@ Classes
"unfurl_media": unfurl_media,
"link_names": link_names,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.scheduleMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.scheduleMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.scheduleMessage", json=kwargs)
@@ -2993,6 +2999,7 @@ Classes
parse: Optional[str] = None, # none, full
reply_broadcast: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Updates a message in a channel.
@@ -3010,6 +3017,7 @@ Classes
"parse": parse,
"reply_broadcast": reply_broadcast,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
if isinstance(file_ids, (list, tuple)):
@@ -3018,7 +3026,7 @@ Classes
kwargs.update({"file_ids": file_ids})
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.update", kwargs)
+ _warn_if_message_text_content_is_missing("chat.update", kwargs)
# NOTE: intentionally using json over params for API methods using blocks/attachments
return self.api_call("chat.update", json=kwargs)
@@ -5542,6 +5550,72 @@ Classes
# NOTE: Intentionally using json for the "view" parameter
return self.api_call("views.publish", json=kwargs)
+ def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.add", params=kwargs)
+
+ def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return self.api_call("workflows.featured.list", params=kwargs)
+
+ def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.remove", params=kwargs)
+
+ def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.set", params=kwargs)
+
def workflows_stepCompleted(
self,
*,
@@ -8019,7 +8093,7 @@ Methods
https://api.slack.com/methods/admin.users.invite
-def admin_users_list(self,
*,
team_id: str,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> SlackResponse
+def admin_users_list(self,
*,
team_id: str | None = None,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> SlackResponse
def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -9866,7 +9940,7 @@ Methods
https://api.slack.com/methods/chat.meMessage
-def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
**kwargs) ‑> SlackResponse
+def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
-def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
-def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
-def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
+def workflows_featured_add(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.add", params=kwargs)
+Add featured workflows to a channel. +https://api.slack.com/methods/workflows.featured.add
+def workflows_featured_list(self, *, channel_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return self.api_call("workflows.featured.list", params=kwargs)
+List the featured workflows for specified channels. +https://api.slack.com/methods/workflows.featured.list
+def workflows_featured_remove(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.remove", params=kwargs)
+Remove featured workflows from a channel. +https://api.slack.com/methods/workflows.featured.remove
+def workflows_featured_set(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.set", params=kwargs)
+Set featured workflows for a channel. +https://api.slack.com/methods/workflows.featured.set
def workflows_stepCompleted(self, *, workflow_step_execute_id: str, outputs: dict | None = None, **kwargs) ‑> SlackResponse
WebClient
views_publish
views_push
views_update
+workflows_featured_add
+workflows_featured_list
+workflows_featured_remove
+workflows_featured_set
workflows_stepCompleted
workflows_stepFailed
workflows_updateStep
diff --git a/docs/reference/models/blocks/basic_components.html b/docs/reference/models/blocks/basic_components.html
index ac7ce17a..7b56352d 100644
--- a/docs/reference/models/blocks/basic_components.html
+++ b/docs/reference/models/blocks/basic_components.html
@@ -56,7 +56,7 @@ Classes
Expand source code
class ConfirmObject(JsonObject):
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementations
+ attributes: Set[str] = set()
title_max_length = 100
text_max_length = 300
@@ -164,7 +164,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
@@ -546,7 +546,7 @@ Inherited members
different required formats in different situations
"""
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementations
+ attributes: Set[str] = set()
logger = logging.getLogger(__name__)
label_max_length = 75
@@ -719,7 +719,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
@@ -828,7 +828,7 @@ Inherited members
different required formats in different situations
"""
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementations
+ attributes: Set[str] = set()
label_max_length = 75
options_max_length = 100
logger = logging.getLogger(__name__)
@@ -932,7 +932,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
diff --git a/docs/reference/models/blocks/blocks.html b/docs/reference/models/blocks/blocks.html
index a995554f..efb2e41a 100644
--- a/docs/reference/models/blocks/blocks.html
+++ b/docs/reference/models/blocks/blocks.html
@@ -228,6 +228,8 @@ Inherited members
return CallBlock(**block)
elif type == HeaderBlock.type:
return HeaderBlock(**block)
+ elif type == MarkdownBlock.type:
+ return MarkdownBlock(**block)
elif type == VideoBlock.type:
return VideoBlock(**block)
elif type == RichTextBlock.type:
@@ -261,6 +263,7 @@ Subclasses
HeaderBlock
ImageBlock
InputBlock
+MarkdownBlock
RichTextBlock
SectionBlock
VideoBlock
@@ -1098,6 +1101,113 @@ Inherited members
+
+class MarkdownBlock
+(*, text: str, block_id: str | None = None, **others: dict)
+
+
+
+
+Expand source code
+
+class MarkdownBlock(Block):
+ type = "markdown"
+ text_max_length = 12000
+
+ @property
+ def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union({"text"})
+
+ def __init__(
+ self,
+ *,
+ text: str,
+ block_id: Optional[str] = None,
+ **others: dict,
+ ):
+ """Displays formatted markdown.
+ https://docs.slack.dev/reference/block-kit/blocks/markdown-block/
+
+ Args:
+ block_id: A string acting as a unique identifier for a block. If not specified, one will be generated.
+ Maximum length for this field is 255 characters.
+ block_id should be unique for each message and each iteration of a message.
+ If a message is updated, use a new block_id.
+ text (required): The standard markdown-formatted text. Limit 12,000 characters max.
+ """
+ super().__init__(type=self.type, block_id=block_id)
+ show_unknown_key_warning(self, others)
+
+ self.text = text
+
+ @JsonValidator("text attribute must be specified")
+ def _validate_text(self):
+ return self.text != ""
+
+ @JsonValidator(f"text attribute cannot exceed {text_max_length} characters")
+ def _validate_alt_text_length(self):
+ return len(self.text) <= self.text_max_length
+
+Blocks are a series of components that can be combined
+to create visually rich and compellingly interactive messages.
+https://api.slack.com/reference/block-kit/blocks
+Displays formatted markdown.
+https://docs.slack.dev/reference/block-kit/blocks/markdown-block/
+Args
+
+block_id
+- A string acting as a unique identifier for a block. If not specified, one will be generated.
+Maximum length for this field is 255 characters.
+block_id should be unique for each message and each iteration of a message.
+If a message is updated, use a new block_id.
+text
: required
+- The standard markdown-formatted text. Limit 12,000 characters max.
+
+Ancestors
+
+- Block
+- JsonObject
+- BaseObject
+
+Class variables
+
+var text_max_length
+-
+
The type of the None singleton.
+
+var type
+-
+
The type of the None singleton.
+
+
+Instance variables
+
+prop attributes : Set[str]
+-
+
+
+Expand source code
+
+@property
+def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union({"text"})
+
+Build an unordered collection of unique elements.
+
+
+Inherited members
+
+Block
:
+
+
+
+
class RichTextBlock
(*,
elements: Sequence[dict | RichTextElement],
block_id: str | None = None,
**others: dict)
@@ -1652,6 +1762,14 @@ MarkdownBlock
+
+
+
RichTextBlock
attributes
diff --git a/docs/reference/models/blocks/index.html b/docs/reference/models/blocks/index.html
index d3327ac9..7a69ec6e 100644
--- a/docs/reference/models/blocks/index.html
+++ b/docs/reference/models/blocks/index.html
@@ -250,6 +250,8 @@ Inherited members
return CallBlock(**block)
elif type == HeaderBlock.type:
return HeaderBlock(**block)
+ elif type == MarkdownBlock.type:
+ return MarkdownBlock(**block)
elif type == VideoBlock.type:
return VideoBlock(**block)
elif type == RichTextBlock.type:
@@ -283,6 +285,7 @@ Subclasses
- HeaderBlock
- ImageBlock
- InputBlock
+- MarkdownBlock
- RichTextBlock
- SectionBlock
- VideoBlock
@@ -1130,7 +1133,7 @@ Inherited members
Expand source code
class ConfirmObject(JsonObject):
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementations
+ attributes: Set[str] = set()
title_max_length = 100
text_max_length = 300
@@ -1238,7 +1241,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
@@ -3579,6 +3582,113 @@ Inherited members
+
+class MarkdownBlock
+(*, text: str, block_id: str | None = None, **others: dict)
+
+
+
+
+Expand source code
+
+class MarkdownBlock(Block):
+ type = "markdown"
+ text_max_length = 12000
+
+ @property
+ def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union({"text"})
+
+ def __init__(
+ self,
+ *,
+ text: str,
+ block_id: Optional[str] = None,
+ **others: dict,
+ ):
+ """Displays formatted markdown.
+ https://docs.slack.dev/reference/block-kit/blocks/markdown-block/
+
+ Args:
+ block_id: A string acting as a unique identifier for a block. If not specified, one will be generated.
+ Maximum length for this field is 255 characters.
+ block_id should be unique for each message and each iteration of a message.
+ If a message is updated, use a new block_id.
+ text (required): The standard markdown-formatted text. Limit 12,000 characters max.
+ """
+ super().__init__(type=self.type, block_id=block_id)
+ show_unknown_key_warning(self, others)
+
+ self.text = text
+
+ @JsonValidator("text attribute must be specified")
+ def _validate_text(self):
+ return self.text != ""
+
+ @JsonValidator(f"text attribute cannot exceed {text_max_length} characters")
+ def _validate_alt_text_length(self):
+ return len(self.text) <= self.text_max_length
+
+Blocks are a series of components that can be combined
+to create visually rich and compellingly interactive messages.
+https://api.slack.com/reference/block-kit/blocks
+Displays formatted markdown.
+https://docs.slack.dev/reference/block-kit/blocks/markdown-block/
+Args
+
+block_id
+- A string acting as a unique identifier for a block. If not specified, one will be generated.
+Maximum length for this field is 255 characters.
+block_id should be unique for each message and each iteration of a message.
+If a message is updated, use a new block_id.
+text
: required
+- The standard markdown-formatted text. Limit 12,000 characters max.
+
+Ancestors
+
+- Block
+- JsonObject
+- BaseObject
+
+Class variables
+
+var text_max_length
+-
+
The type of the None singleton.
+
+var type
+-
+
The type of the None singleton.
+
+
+Instance variables
+
+prop attributes : Set[str]
+-
+
+
+Expand source code
+
+@property
+def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union({"text"})
+
+Build an unordered collection of unique elements.
+
+
+Inherited members
+
+Block
:
+
+
+
+
class MarkdownTextObject
(*, text: str, verbatim: bool | None = None)
@@ -3936,7 +4046,7 @@ Inherited members
different required formats in different situations
"""
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementations
+ attributes: Set[str] = set()
logger = logging.getLogger(__name__)
label_max_length = 75
@@ -4109,7 +4219,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
@@ -4218,7 +4328,7 @@ Inherited members
different required formats in different situations
"""
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementations
+ attributes: Set[str] = set()
label_max_length = 75
options_max_length = 100
logger = logging.getLogger(__name__)
@@ -4322,7 +4432,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
@@ -7465,6 +7575,14 @@ LinkButtonElement
+MarkdownBlock
+
+
+
MarkdownTextObject
attributes
diff --git a/docs/reference/models/dialoags.html b/docs/reference/models/dialoags.html
index 2657bdbe..d850bd9c 100644
--- a/docs/reference/models/dialoags.html
+++ b/docs/reference/models/dialoags.html
@@ -247,7 +247,7 @@ Inherited members
Expand source code
class DialogBuilder(JsonObject):
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementation
+ attributes: Set[str] = set()
_callback_id: Optional[str]
_elements: List[Union[DialogTextComponent, AbstractDialogSelector]]
@@ -687,7 +687,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
diff --git a/docs/reference/models/dialogs/index.html b/docs/reference/models/dialogs/index.html
index d077673e..85cc3757 100644
--- a/docs/reference/models/dialogs/index.html
+++ b/docs/reference/models/dialogs/index.html
@@ -247,7 +247,7 @@ Inherited members
Expand source code
class DialogBuilder(JsonObject):
- attributes = {} # type: ignore[assignment] # no attributes because to_dict has unique implementation
+ attributes: Set[str] = set()
_callback_id: Optional[str]
_elements: List[Union[DialogTextComponent, AbstractDialogSelector]]
@@ -687,7 +687,7 @@ Ancestors
Class variables
-var attributes
+var attributes : Set[str]
-
The type of the None singleton.
diff --git a/docs/reference/oauth/installation_store/async_cacheable_installation_store.html b/docs/reference/oauth/installation_store/async_cacheable_installation_store.html
index 100c62c4..a3820517 100644
--- a/docs/reference/oauth/installation_store/async_cacheable_installation_store.html
+++ b/docs/reference/oauth/installation_store/async_cacheable_installation_store.html
@@ -74,7 +74,7 @@ Classes
def logger(self) -> Logger:
return self.underlying.logger
- async def async_save(self, installation: Installation): # type: ignore[explicit-override]
+ async def async_save(self, installation: Installation):
# Invalidate cache data for update operations
key = f"{installation.enterprise_id or ''}-{installation.team_id or ''}"
if key in self.cached_bots:
@@ -84,14 +84,14 @@ Classes
self.cached_installations.pop(key)
return await self.underlying.async_save(installation)
- async def async_save_bot(self, bot: Bot): # type: ignore[explicit-override]
+ async def async_save_bot(self, bot: Bot):
# Invalidate cache data for update operations
key = f"{bot.enterprise_id or ''}-{bot.team_id or ''}"
if key in self.cached_bots:
self.cached_bots.pop(key)
return await self.underlying.async_save_bot(bot)
- async def async_find_bot( # type: ignore[explicit-override]
+ async def async_find_bot(
self,
*,
enterprise_id: Optional[str],
@@ -112,7 +112,7 @@ Classes
self.cached_bots[key] = bot
return bot
- async def async_find_installation( # type: ignore[explicit-override]
+ async def async_find_installation(
self,
*,
enterprise_id: Optional[str],
diff --git a/docs/reference/oauth/installation_store/cacheable_installation_store.html b/docs/reference/oauth/installation_store/cacheable_installation_store.html
index 5e2802f1..54bb7662 100644
--- a/docs/reference/oauth/installation_store/cacheable_installation_store.html
+++ b/docs/reference/oauth/installation_store/cacheable_installation_store.html
@@ -74,7 +74,7 @@ Classes
def logger(self) -> Logger:
return self.underlying.logger
- def save(self, installation: Installation): # type: ignore[explicit-override]
+ def save(self, installation: Installation):
# Invalidate cache data for update operations
key = f"{installation.enterprise_id or ''}-{installation.team_id or ''}"
if key in self.cached_bots:
@@ -85,14 +85,14 @@ Classes
return self.underlying.save(installation)
- def save_bot(self, bot: Bot): # type: ignore[explicit-override]
+ def save_bot(self, bot: Bot):
# Invalidate cache data for update operations
key = f"{bot.enterprise_id or ''}-{bot.team_id or ''}"
if key in self.cached_bots:
self.cached_bots.pop(key)
return self.underlying.save_bot(bot)
- def find_bot( # type: ignore[explicit-override]
+ def find_bot(
self,
*,
enterprise_id: Optional[str],
@@ -113,7 +113,7 @@ Classes
self.cached_bots[key] = bot
return bot
- def find_installation( # type: ignore[explicit-override]
+ def find_installation(
self,
*,
enterprise_id: Optional[str],
diff --git a/docs/reference/socket_mode/client.html b/docs/reference/socket_mode/client.html
index dda047bd..3c8c615f 100644
--- a/docs/reference/socket_mode/client.html
+++ b/docs/reference/socket_mode/client.html
@@ -167,7 +167,7 @@ Classes
for listener in self.message_listeners:
try:
- listener(self, message, raw_message) # type: ignore[call-arg, arg-type]
+ listener(self, message, raw_message) # type: ignore[call-arg, arg-type, misc]
except Exception as e:
self.logger.exception(f"Failed to run a message listener: {e}")
@@ -431,7 +431,7 @@ Methods
for listener in self.message_listeners:
try:
- listener(self, message, raw_message) # type: ignore[call-arg, arg-type]
+ listener(self, message, raw_message) # type: ignore[call-arg, arg-type, misc]
except Exception as e:
self.logger.exception(f"Failed to run a message listener: {e}")
diff --git a/docs/reference/socket_mode/websocket_client/index.html b/docs/reference/socket_mode/websocket_client/index.html
index 20a1f0ac..6cce0c78 100644
--- a/docs/reference/socket_mode/websocket_client/index.html
+++ b/docs/reference/socket_mode/websocket_client/index.html
@@ -91,7 +91,7 @@ Classes
auto_reconnect_enabled: bool
default_auto_reconnect_enabled: bool
- close: bool # type: ignore[assignment]
+ closed: bool
connect_operation_lock: Lock
on_open_listeners: List[Callable[[WebSocketApp], None]]
@@ -258,7 +258,7 @@ Classes
)
raise e
- def close(self) -> None: # type: ignore[explicit-override, no-redef]
+ def close(self) -> None:
self.closed = True
self.auto_reconnect_enabled = False
self.disconnect()
@@ -384,7 +384,7 @@ Methods
Expand source code
-def close(self) -> None: # type: ignore[explicit-override, no-redef]
+def close(self) -> None:
self.closed = True
self.auto_reconnect_enabled = False
self.disconnect()
diff --git a/docs/reference/web/async_client.html b/docs/reference/web/async_client.html
index 86403ce5..1ad20c35 100644
--- a/docs/reference/web/async_client.html
+++ b/docs/reference/web/async_client.html
@@ -1752,7 +1752,7 @@ Classes
async def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -2717,6 +2717,7 @@ Classes
link_names: Optional[bool] = None,
username: Optional[str] = None,
parse: Optional[str] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Sends an ephemeral message to a user in a channel.
@@ -2736,11 +2737,12 @@ Classes
"link_names": link_names,
"username": username,
"parse": parse,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postEphemeral", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postEphemeral", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return await self.api_call("chat.postEphemeral", json=kwargs)
@@ -2764,6 +2766,7 @@ Classes
username: Optional[str] = None,
parse: Optional[str] = None, # none, full
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Sends a message to a channel.
@@ -2788,11 +2791,12 @@ Classes
"username": username,
"parse": parse,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return await self.api_call("chat.postMessage", json=kwargs)
@@ -2801,7 +2805,7 @@ Classes
*,
channel: str,
post_at: Union[str, int],
- text: str,
+ text: Optional[str] = None,
as_user: Optional[bool] = None,
attachments: Optional[Union[str, Sequence[Union[Dict, Attachment]]]] = None,
blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None,
@@ -2812,6 +2816,7 @@ Classes
unfurl_media: Optional[bool] = None,
link_names: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Schedules a message.
@@ -2832,11 +2837,12 @@ Classes
"unfurl_media": unfurl_media,
"link_names": link_names,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.scheduleMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.scheduleMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return await self.api_call("chat.scheduleMessage", json=kwargs)
@@ -2889,6 +2895,7 @@ Classes
parse: Optional[str] = None, # none, full
reply_broadcast: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Updates a message in a channel.
@@ -2906,6 +2913,7 @@ Classes
"parse": parse,
"reply_broadcast": reply_broadcast,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
if isinstance(file_ids, (list, tuple)):
@@ -2914,7 +2922,7 @@ Classes
kwargs.update({"file_ids": file_ids})
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.update", kwargs)
+ _warn_if_message_text_content_is_missing("chat.update", kwargs)
# NOTE: intentionally using json over params for API methods using blocks/attachments
return await self.api_call("chat.update", json=kwargs)
@@ -5438,6 +5446,72 @@ Classes
# NOTE: Intentionally using json for the "view" parameter
return await self.api_call("views.publish", json=kwargs)
+ async def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> AsyncSlackResponse:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return await self.api_call("workflows.featured.add", params=kwargs)
+
+ async def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> AsyncSlackResponse:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return await self.api_call("workflows.featured.list", params=kwargs)
+
+ async def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> AsyncSlackResponse:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return await self.api_call("workflows.featured.remove", params=kwargs)
+
+ async def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> AsyncSlackResponse:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return await self.api_call("workflows.featured.set", params=kwargs)
+
async def workflows_stepCompleted(
self,
*,
@@ -7915,7 +7989,7 @@ Methods
https://api.slack.com/methods/admin.users.invite
-async def admin_users_list(self,
*,
team_id: str,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> AsyncSlackResponse
+async def admin_users_list(self,
*,
team_id: str | None = None,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> AsyncSlackResponse
-
@@ -7925,7 +7999,7 @@
Methods
async def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -9762,7 +9836,7 @@ Methods
https://api.slack.com/methods/chat.meMessage
-async def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
**kwargs) ‑> AsyncSlackResponse
+async def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
markdown_text: str | None = None,
**kwargs) ‑> AsyncSlackResponse
-
@@ -9784,6 +9858,7 @@
Methods
link_names: Optional[bool] = None,
username: Optional[str] = None,
parse: Optional[str] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Sends an ephemeral message to a user in a channel.
@@ -9803,11 +9878,12 @@ Methods
"link_names": link_names,
"username": username,
"parse": parse,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postEphemeral", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postEphemeral", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return await self.api_call("chat.postEphemeral", json=kwargs)
@@ -9815,7 +9891,7 @@ Methods
https://api.slack.com/methods/chat.postEphemeral
-async def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> AsyncSlackResponse
+async def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> AsyncSlackResponse
-
@@ -9842,6 +9918,7 @@
Methods
username: Optional[str] = None,
parse: Optional[str] = None, # none, full
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Sends a message to a channel.
@@ -9866,11 +9943,12 @@ Methods
"username": username,
"parse": parse,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return await self.api_call("chat.postMessage", json=kwargs)
@@ -9878,7 +9956,7 @@ Methods
https://api.slack.com/methods/chat.postMessage
-async def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> AsyncSlackResponse
+async def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> AsyncSlackResponse
-
@@ -9890,7 +9968,7 @@
Methods
*,
channel: str,
post_at: Union[str, int],
- text: str,
+ text: Optional[str] = None,
as_user: Optional[bool] = None,
attachments: Optional[Union[str, Sequence[Union[Dict, Attachment]]]] = None,
blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None,
@@ -9901,6 +9979,7 @@ Methods
unfurl_media: Optional[bool] = None,
link_names: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Schedules a message.
@@ -9921,11 +10000,12 @@ Methods
"unfurl_media": unfurl_media,
"link_names": link_names,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.scheduleMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.scheduleMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return await self.api_call("chat.scheduleMessage", json=kwargs)
@@ -10016,7 +10096,7 @@ Methods
https://api.slack.com/methods/chat.unfurl
-async def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> AsyncSlackResponse
+async def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> AsyncSlackResponse
-
@@ -10037,6 +10117,7 @@
Methods
parse: Optional[str] = None, # none, full
reply_broadcast: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Updates a message in a channel.
@@ -10054,6 +10135,7 @@ Methods
"parse": parse,
"reply_broadcast": reply_broadcast,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
if isinstance(file_ids, (list, tuple)):
@@ -10062,7 +10144,7 @@ Methods
kwargs.update({"file_ids": file_ids})
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.update", kwargs)
+ _warn_if_message_text_content_is_missing("chat.update", kwargs)
# NOTE: intentionally using json over params for API methods using blocks/attachments
return await self.api_call("chat.update", json=kwargs)
@@ -14090,6 +14172,116 @@ Methods
to learn more about updating views and avoiding race conditions with the hash argument.
https://api.slack.com/methods/views.update
+
+async def workflows_featured_add(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> AsyncSlackResponse
+
+
+
+
+Expand source code
+
+async def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> AsyncSlackResponse:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return await self.api_call("workflows.featured.add", params=kwargs)
+
+Add featured workflows to a channel.
+https://api.slack.com/methods/workflows.featured.add
+
+
+async def workflows_featured_list(self, *, channel_ids: str | Sequence[str], **kwargs) ‑> AsyncSlackResponse
+
+
+
+
+Expand source code
+
+async def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> AsyncSlackResponse:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return await self.api_call("workflows.featured.list", params=kwargs)
+
+List the featured workflows for specified channels.
+https://api.slack.com/methods/workflows.featured.list
+
+
+async def workflows_featured_remove(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> AsyncSlackResponse
+
+
+
+
+Expand source code
+
+async def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> AsyncSlackResponse:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return await self.api_call("workflows.featured.remove", params=kwargs)
+
+Remove featured workflows from a channel.
+https://api.slack.com/methods/workflows.featured.remove
+
+
+async def workflows_featured_set(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> AsyncSlackResponse
+
+
+
+
+Expand source code
+
+async def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> AsyncSlackResponse:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return await self.api_call("workflows.featured.set", params=kwargs)
+
+Set featured workflows for a channel.
+https://api.slack.com/methods/workflows.featured.set
+
async def workflows_stepCompleted(self, *, workflow_step_execute_id: str, outputs: dict | None = None, **kwargs) ‑> AsyncSlackResponse
@@ -14513,6 +14705,10 @@ views_publish
views_push
views_update
+workflows_featured_add
+workflows_featured_list
+workflows_featured_remove
+workflows_featured_set
workflows_stepCompleted
workflows_stepFailed
workflows_updateStep
diff --git a/docs/reference/web/client.html b/docs/reference/web/client.html
index 28212dff..a3765bfa 100644
--- a/docs/reference/web/client.html
+++ b/docs/reference/web/client.html
@@ -1752,7 +1752,7 @@ Classes
def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -2717,6 +2717,7 @@ Classes
link_names: Optional[bool] = None,
username: Optional[str] = None,
parse: Optional[str] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Sends an ephemeral message to a user in a channel.
@@ -2736,11 +2737,12 @@ Classes
"link_names": link_names,
"username": username,
"parse": parse,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postEphemeral", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postEphemeral", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postEphemeral", json=kwargs)
@@ -2764,6 +2766,7 @@ Classes
username: Optional[str] = None,
parse: Optional[str] = None, # none, full
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Sends a message to a channel.
@@ -2788,11 +2791,12 @@ Classes
"username": username,
"parse": parse,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postMessage", json=kwargs)
@@ -2801,7 +2805,7 @@ Classes
*,
channel: str,
post_at: Union[str, int],
- text: str,
+ text: Optional[str] = None,
as_user: Optional[bool] = None,
attachments: Optional[Union[str, Sequence[Union[Dict, Attachment]]]] = None,
blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None,
@@ -2812,6 +2816,7 @@ Classes
unfurl_media: Optional[bool] = None,
link_names: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Schedules a message.
@@ -2832,11 +2837,12 @@ Classes
"unfurl_media": unfurl_media,
"link_names": link_names,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.scheduleMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.scheduleMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.scheduleMessage", json=kwargs)
@@ -2889,6 +2895,7 @@ Classes
parse: Optional[str] = None, # none, full
reply_broadcast: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Updates a message in a channel.
@@ -2906,6 +2913,7 @@ Classes
"parse": parse,
"reply_broadcast": reply_broadcast,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
if isinstance(file_ids, (list, tuple)):
@@ -2914,7 +2922,7 @@ Classes
kwargs.update({"file_ids": file_ids})
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.update", kwargs)
+ _warn_if_message_text_content_is_missing("chat.update", kwargs)
# NOTE: intentionally using json over params for API methods using blocks/attachments
return self.api_call("chat.update", json=kwargs)
@@ -5438,6 +5446,72 @@ Classes
# NOTE: Intentionally using json for the "view" parameter
return self.api_call("views.publish", json=kwargs)
+ def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.add", params=kwargs)
+
+ def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return self.api_call("workflows.featured.list", params=kwargs)
+
+ def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.remove", params=kwargs)
+
+ def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> SlackResponse:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.set", params=kwargs)
+
def workflows_stepCompleted(
self,
*,
@@ -7915,7 +7989,7 @@ Methods
https://api.slack.com/methods/admin.users.invite
-def admin_users_list(self,
*,
team_id: str,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> SlackResponse
+def admin_users_list(self,
*,
team_id: str | None = None,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> SlackResponse
@@ -7925,7 +7999,7 @@ Methods
def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -9762,7 +9836,7 @@ Methods
https://api.slack.com/methods/chat.meMessage
-def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
**kwargs) ‑> SlackResponse
+def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
@@ -9784,6 +9858,7 @@ Methods
link_names: Optional[bool] = None,
username: Optional[str] = None,
parse: Optional[str] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Sends an ephemeral message to a user in a channel.
@@ -9803,11 +9878,12 @@ Methods
"link_names": link_names,
"username": username,
"parse": parse,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postEphemeral", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postEphemeral", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postEphemeral", json=kwargs)
@@ -9815,7 +9891,7 @@ Methods
https://api.slack.com/methods/chat.postEphemeral
-def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
@@ -9842,6 +9918,7 @@ Methods
username: Optional[str] = None,
parse: Optional[str] = None, # none, full
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> SlackResponse:
"""Sends a message to a channel.
@@ -9866,11 +9943,12 @@ Methods
"username": username,
"parse": parse,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postMessage", json=kwargs)
@@ -9878,7 +9956,7 @@
-def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
-def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
+def workflows_featured_add(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.add", params=kwargs)
+Add featured workflows to a channel. +https://api.slack.com/methods/workflows.featured.add
+def workflows_featured_list(self, *, channel_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return self.api_call("workflows.featured.list", params=kwargs)
+List the featured workflows for specified channels. +https://api.slack.com/methods/workflows.featured.list
+def workflows_featured_remove(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.remove", params=kwargs)
+Remove featured workflows from a channel. +https://api.slack.com/methods/workflows.featured.remove
+def workflows_featured_set(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.set", params=kwargs)
+Set featured workflows for a channel. +https://api.slack.com/methods/workflows.featured.set
def workflows_stepCompleted(self, *, workflow_step_execute_id: str, outputs: dict | None = None, **kwargs) ‑> SlackResponse
views_publish
views_push
views_update
workflows_featured_add
workflows_featured_list
workflows_featured_remove
workflows_featured_set
workflows_stepCompleted
workflows_stepFailed
workflows_updateStep
-def admin_users_list(self,
*,
team_id: str,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> SlackResponse
+def admin_users_list(self,
*,
team_id: str | None = None,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> SlackResponse
def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -10123,7 +10197,7 @@ Methods
https://api.slack.com/methods/chat.meMessage
-def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
**kwargs) ‑> SlackResponse
+def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
-def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
-def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
-def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> SlackResponse
+def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> SlackResponse
+def workflows_featured_add(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.add", params=kwargs)
+Add featured workflows to a channel. +https://api.slack.com/methods/workflows.featured.add
+def workflows_featured_list(self, *, channel_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return self.api_call("workflows.featured.list", params=kwargs)
+List the featured workflows for specified channels. +https://api.slack.com/methods/workflows.featured.list
+def workflows_featured_remove(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.remove", params=kwargs)
+Remove featured workflows from a channel. +https://api.slack.com/methods/workflows.featured.remove
+def workflows_featured_set(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> SlackResponse
+
def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> SlackResponse:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.set", params=kwargs)
+Set featured workflows for a channel. +https://api.slack.com/methods/workflows.featured.set
def workflows_stepCompleted(self, *, workflow_step_execute_id: str, outputs: dict | None = None, **kwargs) ‑> SlackResponse
Web
views_publish
views_push
views_update
+workflows_featured_add
+workflows_featured_list
+workflows_featured_remove
+workflows_featured_set
workflows_stepCompleted
workflows_stepFailed
workflows_updateStep
diff --git a/docs/reference/web/internal_utils.html b/docs/reference/web/internal_utils.html
index 9d8084d6..89227edc 100644
--- a/docs/reference/web/internal_utils.html
+++ b/docs/reference/web/internal_utils.html
@@ -95,7 +95,7 @@ Returns
Returns:
The user agent string.
- e.g. 'Python/3.6.7 slackclient/2.0.0 Darwin/17.7.0'
+ e.g. 'Python/3.7.17 slackclient/2.0.0 Darwin/17.7.0'
"""
# __name__ returns all classes, we only want the client
client = "{0}/{1}".format("slackclient", version.__version__)
@@ -110,7 +110,7 @@ Returns
Python version and OS version.
Returns
The user agent string.
-e.g. 'Python/3.6.7 slackclient/2.0.0 Darwin/17.7.0'
+e.g. 'Python/3.7.17 slackclient/2.0.0 Darwin/17.7.0'
diff --git a/docs/reference/web/legacy_client.html b/docs/reference/web/legacy_client.html
index 63cbfc7f..8dccc2f3 100644
--- a/docs/reference/web/legacy_client.html
+++ b/docs/reference/web/legacy_client.html
@@ -1751,7 +1751,7 @@ Classes
def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -2716,6 +2716,7 @@ Classes
link_names: Optional[bool] = None,
username: Optional[str] = None,
parse: Optional[str] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Sends an ephemeral message to a user in a channel.
@@ -2735,11 +2736,12 @@ Classes
"link_names": link_names,
"username": username,
"parse": parse,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postEphemeral", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postEphemeral", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postEphemeral", json=kwargs)
@@ -2763,6 +2765,7 @@ Classes
username: Optional[str] = None,
parse: Optional[str] = None, # none, full
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Sends a message to a channel.
@@ -2787,11 +2790,12 @@ Classes
"username": username,
"parse": parse,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postMessage", json=kwargs)
@@ -2800,7 +2804,7 @@ Classes
*,
channel: str,
post_at: Union[str, int],
- text: str,
+ text: Optional[str] = None,
as_user: Optional[bool] = None,
attachments: Optional[Union[str, Sequence[Union[Dict, Attachment]]]] = None,
blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None,
@@ -2811,6 +2815,7 @@ Classes
unfurl_media: Optional[bool] = None,
link_names: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Schedules a message.
@@ -2831,11 +2836,12 @@ Classes
"unfurl_media": unfurl_media,
"link_names": link_names,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.scheduleMessage", kwargs)
+ _warn_if_message_text_content_is_missing("chat.scheduleMessage", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.scheduleMessage", json=kwargs)
@@ -2888,6 +2894,7 @@ Classes
parse: Optional[str] = None, # none, full
reply_broadcast: Optional[bool] = None,
metadata: Optional[Union[Dict, Metadata]] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Updates a message in a channel.
@@ -2905,6 +2912,7 @@ Classes
"parse": parse,
"reply_broadcast": reply_broadcast,
"metadata": metadata,
+ "markdown_text": markdown_text,
}
)
if isinstance(file_ids, (list, tuple)):
@@ -2913,7 +2921,7 @@ Classes
kwargs.update({"file_ids": file_ids})
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.update", kwargs)
+ _warn_if_message_text_content_is_missing("chat.update", kwargs)
# NOTE: intentionally using json over params for API methods using blocks/attachments
return self.api_call("chat.update", json=kwargs)
@@ -5437,6 +5445,72 @@ Classes
# NOTE: Intentionally using json for the "view" parameter
return self.api_call("views.publish", json=kwargs)
+ def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> Union[Future, SlackResponse]:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.add", params=kwargs)
+
+ def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> Union[Future, SlackResponse]:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return self.api_call("workflows.featured.list", params=kwargs)
+
+ def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> Union[Future, SlackResponse]:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.remove", params=kwargs)
+
+ def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+ ) -> Union[Future, SlackResponse]:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.set", params=kwargs)
+
def workflows_stepCompleted(
self,
*,
@@ -7914,7 +7988,7 @@ Methods
https://api.slack.com/methods/admin.users.invite
-def admin_users_list(self,
*,
team_id: str,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
+def admin_users_list(self,
*,
team_id: str | None = None,
include_deactivated_user_workspaces: bool | None = None,
is_active: bool | None = None,
cursor: str | None = None,
limit: int | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
@@ -7924,7 +7998,7 @@ Methods
def admin_users_list(
self,
*,
- team_id: str,
+ team_id: Optional[str] = None,
include_deactivated_user_workspaces: Optional[bool] = None,
is_active: Optional[bool] = None,
cursor: Optional[str] = None,
@@ -9761,7 +9835,7 @@ Methods
https://api.slack.com/methods/chat.meMessage
-def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
+def chat_postEphemeral(self,
*,
channel: str,
user: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
markdown_text: str | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
@@ -9783,6 +9857,7 @@ Methods
link_names: Optional[bool] = None,
username: Optional[str] = None,
parse: Optional[str] = None,
+ markdown_text: Optional[str] = None,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Sends an ephemeral message to a user in a channel.
@@ -9802,11 +9877,12 @@ Methods
"link_names": link_names,
"username": username,
"parse": parse,
+ "markdown_text": markdown_text,
}
)
_parse_web_class_objects(kwargs)
kwargs = _remove_none_values(kwargs)
- _warn_if_text_or_attachment_fallback_is_missing("chat.postEphemeral", kwargs)
+ _warn_if_message_text_content_is_missing("chat.postEphemeral", kwargs)
# NOTE: intentionally using json over params for the API methods using blocks/attachments
return self.api_call("chat.postEphemeral", json=kwargs)
@@ -9814,7 +9890,7 @@
-def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
+def chat_postMessage(self,
*,
channel: str,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
container_id: str | None = None,
icon_emoji: str | None = None,
icon_url: str | None = None,
mrkdwn: bool | None = None,
link_names: bool | None = None,
username: str | None = None,
parse: str | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
-def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
+def chat_scheduleMessage(self,
*,
channel: str,
post_at: str | int,
text: str | None = None,
as_user: bool | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
thread_ts: str | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
unfurl_links: bool | None = None,
unfurl_media: bool | None = None,
link_names: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
-def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
+def chat_update(self,
*,
channel: str,
ts: str,
text: str | None = None,
attachments: str | Sequence[Dict | Attachment] | None = None,
blocks: str | Sequence[Dict | Block] | None = None,
as_user: bool | None = None,
file_ids: str | Sequence[str] | None = None,
link_names: bool | None = None,
parse: str | None = None,
reply_broadcast: bool | None = None,
metadata: Dict | Metadata | None = None,
markdown_text: str | None = None,
**kwargs) ‑> _asyncio.Future | LegacySlackResponse
+def workflows_featured_add(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> _asyncio.Future | LegacySlackResponse
+
def workflows_featured_add(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> Union[Future, SlackResponse]:
+ """Add featured workflows to a channel.
+ https://api.slack.com/methods/workflows.featured.add
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.add", params=kwargs)
+Add featured workflows to a channel. +https://api.slack.com/methods/workflows.featured.add
+def workflows_featured_list(self, *, channel_ids: str | Sequence[str], **kwargs) ‑> _asyncio.Future | LegacySlackResponse
+
def workflows_featured_list(
+ self,
+ *,
+ channel_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> Union[Future, SlackResponse]:
+ """List the featured workflows for specified channels.
+ https://api.slack.com/methods/workflows.featured.list
+ """
+ if isinstance(channel_ids, (list, tuple)):
+ kwargs.update({"channel_ids": ",".join(channel_ids)})
+ else:
+ kwargs.update({"channel_ids": channel_ids})
+ return self.api_call("workflows.featured.list", params=kwargs)
+List the featured workflows for specified channels. +https://api.slack.com/methods/workflows.featured.list
+def workflows_featured_remove(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> _asyncio.Future | LegacySlackResponse
+
def workflows_featured_remove(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> Union[Future, SlackResponse]:
+ """Remove featured workflows from a channel.
+ https://api.slack.com/methods/workflows.featured.remove
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.remove", params=kwargs)
+Remove featured workflows from a channel. +https://api.slack.com/methods/workflows.featured.remove
+def workflows_featured_set(self, *, channel_id: str, trigger_ids: str | Sequence[str], **kwargs) ‑> _asyncio.Future | LegacySlackResponse
+
def workflows_featured_set(
+ self,
+ *,
+ channel_id: str,
+ trigger_ids: Union[str, Sequence[str]],
+ **kwargs,
+) -> Union[Future, SlackResponse]:
+ """Set featured workflows for a channel.
+ https://api.slack.com/methods/workflows.featured.set
+ """
+ kwargs.update({"channel_id": channel_id})
+ if isinstance(trigger_ids, (list, tuple)):
+ kwargs.update({"trigger_ids": ",".join(trigger_ids)})
+ else:
+ kwargs.update({"trigger_ids": trigger_ids})
+ return self.api_call("workflows.featured.set", params=kwargs)
+Set featured workflows for a channel. +https://api.slack.com/methods/workflows.featured.set
def workflows_stepCompleted(self, *, workflow_step_execute_id: str, outputs: dict | None = None, **kwargs) ‑> _asyncio.Future | LegacySlackResponse
views_publish
views_push
views_update
workflows_featured_add
workflows_featured_list
workflows_featured_remove
workflows_featured_set
workflows_stepCompleted
workflows_stepFailed
workflows_updateStep
class FileInstallationStore
-(*,
base_dir: str = '/Users/eden.zimbelman/.bolt-app-installation',
historical_data_enabled: bool = True,
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.installation_store.file (WARNING)>)
+(*,
base_dir: str = '/home/runner/.bolt-app-installation',
historical_data_enabled: bool = True,
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.installation_store.file (WARNING)>)
class FileInstallationStore
-(*,
base_dir: str = '/Users/eden.zimbelman/.bolt-app-installation',
historical_data_enabled: bool = True,
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.installation_store.file (WARNING)>)
+(*,
base_dir: str = '/home/runner/.bolt-app-installation',
historical_data_enabled: bool = True,
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.installation_store.file (WARNING)>)
class FileOAuthStateStore
-(*,
expiration_seconds: int,
base_dir: str = '/Users/eden.zimbelman/.bolt-app-oauth-state',
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.state_store.file (WARNING)>)
+(*,
expiration_seconds: int,
base_dir: str = '/home/runner/.bolt-app-oauth-state',
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.state_store.file (WARNING)>)
class FileOAuthStateStore
-(*,
expiration_seconds: int,
base_dir: str = '/Users/eden.zimbelman/.bolt-app-oauth-state',
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.state_store.file (WARNING)>)
+(*,
expiration_seconds: int,
base_dir: str = '/home/runner/.bolt-app-oauth-state',
client_id: str | None = None,
logger: logging.Logger = <Logger slack_sdk.oauth.state_store.file (WARNING)>)