diff --git a/slack_sdk/web/async_client.py b/slack_sdk/web/async_client.py index d2631b5fe..b92a3c9f1 100644 --- a/slack_sdk/web/async_client.py +++ b/slack_sdk/web/async_client.py @@ -14,7 +14,7 @@ import os import warnings from io import IOBase -from typing import Any, Dict, List, Optional, Sequence, Union +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Union import slack_sdk.errors as e from slack_sdk.models.messages.chunk import Chunk @@ -35,6 +35,21 @@ _warn_if_message_text_content_is_missing, ) +if TYPE_CHECKING: + try: + from typing import Literal, TypedDict + except ImportError: + from typing_extensions import Literal, TypedDict + + class AdminAppsConfigSetDomainRestrictions(TypedDict, total=False): + urls: Sequence[str] + emails: Sequence[str] + + AdminAppsConfigSetWorkflowAuthStrategy = Literal["builder_choice", "end_user_strategy"] +else: + AdminAppsConfigSetDomainRestrictions = Dict[str, Any] + AdminAppsConfigSetWorkflowAuthStrategy = str + class AsyncWebClient(AsyncBaseClient): """A WebClient allows apps to communicate with the Slack Platform's Web API. @@ -375,8 +390,8 @@ async def admin_apps_config_set( self, *, app_id: str, - domain_restrictions: Optional[Dict[str, Any]] = None, - workflow_auth_strategy: Optional[str] = None, + domain_restrictions: Optional[AdminAppsConfigSetDomainRestrictions] = None, + workflow_auth_strategy: Optional[AdminAppsConfigSetWorkflowAuthStrategy] = None, **kwargs, ) -> AsyncSlackResponse: """Set the app config for a connector. diff --git a/slack_sdk/web/client.py b/slack_sdk/web/client.py index 743dd7842..bb1736f3e 100644 --- a/slack_sdk/web/client.py +++ b/slack_sdk/web/client.py @@ -4,7 +4,7 @@ import os import warnings from io import IOBase -from typing import Any, Dict, List, Optional, Sequence, Union +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Union import slack_sdk.errors as e from slack_sdk.models.messages.chunk import Chunk @@ -25,6 +25,21 @@ _warn_if_message_text_content_is_missing, ) +if TYPE_CHECKING: + try: + from typing import Literal, TypedDict + except ImportError: + from typing_extensions import Literal, TypedDict + + class AdminAppsConfigSetDomainRestrictions(TypedDict, total=False): + urls: Sequence[str] + emails: Sequence[str] + + AdminAppsConfigSetWorkflowAuthStrategy = Literal["builder_choice", "end_user_strategy"] +else: + AdminAppsConfigSetDomainRestrictions = Dict[str, Any] + AdminAppsConfigSetWorkflowAuthStrategy = str + class WebClient(BaseClient): """A WebClient allows apps to communicate with the Slack Platform's Web API. @@ -365,8 +380,8 @@ def admin_apps_config_set( self, *, app_id: str, - domain_restrictions: Optional[Dict[str, Any]] = None, - workflow_auth_strategy: Optional[str] = None, + domain_restrictions: Optional[AdminAppsConfigSetDomainRestrictions] = None, + workflow_auth_strategy: Optional[AdminAppsConfigSetWorkflowAuthStrategy] = None, **kwargs, ) -> SlackResponse: """Set the app config for a connector. diff --git a/slack_sdk/web/legacy_client.py b/slack_sdk/web/legacy_client.py index 4654c1f51..85ad7b9c1 100644 --- a/slack_sdk/web/legacy_client.py +++ b/slack_sdk/web/legacy_client.py @@ -16,7 +16,7 @@ import os import warnings from io import IOBase -from typing import Any, Dict, List, Optional, Sequence, Union +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Union import slack_sdk.errors as e from slack_sdk.models.messages.chunk import Chunk @@ -36,6 +36,21 @@ _warn_if_message_text_content_is_missing, ) +if TYPE_CHECKING: + try: + from typing import Literal, TypedDict + except ImportError: + from typing_extensions import Literal, TypedDict + + class AdminAppsConfigSetDomainRestrictions(TypedDict, total=False): + urls: Sequence[str] + emails: Sequence[str] + + AdminAppsConfigSetWorkflowAuthStrategy = Literal["builder_choice", "end_user_strategy"] +else: + AdminAppsConfigSetDomainRestrictions = Dict[str, Any] + AdminAppsConfigSetWorkflowAuthStrategy = str + class LegacyWebClient(LegacyBaseClient): """A WebClient allows apps to communicate with the Slack Platform's Web API. @@ -376,8 +391,8 @@ def admin_apps_config_set( self, *, app_id: str, - domain_restrictions: Optional[Dict[str, Any]] = None, - workflow_auth_strategy: Optional[str] = None, + domain_restrictions: Optional[AdminAppsConfigSetDomainRestrictions] = None, + workflow_auth_strategy: Optional[AdminAppsConfigSetWorkflowAuthStrategy] = None, **kwargs, ) -> Union[Future, SlackResponse]: """Set the app config for a connector. diff --git a/tests/slack_sdk_async/web/test_web_client_coverage.py b/tests/slack_sdk_async/web/test_web_client_coverage.py index 9e5a58ae8..93998afcf 100644 --- a/tests/slack_sdk_async/web/test_web_client_coverage.py +++ b/tests/slack_sdk_async/web/test_web_client_coverage.py @@ -127,8 +127,19 @@ async def run_method(self, method_name, method, async_method): self.api_methods_to_call.remove(method(app_ids=["A111"])["method"]) await async_method(app_ids=["A111"]) elif method_name == "admin_apps_config_set": - self.api_methods_to_call.remove(method(app_id="A111")["method"]) - await async_method(app_id="A111") + domain_restrictions = {"urls": ["https://example.com"], "emails": ["admin@example.com"]} + self.api_methods_to_call.remove( + method( + app_id="A111", + domain_restrictions=domain_restrictions, + workflow_auth_strategy="builder_choice", + )["method"] + ) + await async_method( + app_id="A111", + domain_restrictions=domain_restrictions, + workflow_auth_strategy="end_user_strategy", + ) elif method_name == "admin_auth_policy_getEntities": self.api_methods_to_call.remove(method(policy_name="policyname")["method"]) await async_method(policy_name="policyname")