diff --git a/.github/ISSUE_TEMPLATE/02_enhancement.md b/.github/ISSUE_TEMPLATE/02_enhancement.md index 4dabb9897..c40600ccf 100644 --- a/.github/ISSUE_TEMPLATE/02_enhancement.md +++ b/.github/ISSUE_TEMPLATE/02_enhancement.md @@ -15,7 +15,9 @@ assignees: "" - [ ] **slack_sdk.models** (UI component builders) - [ ] **slack_sdk.oauth** (OAuth Flow Utilities) - [ ] **slack_sdk.socket_mode** (Socket Mode client) -- [ ] **slack_sdk.rtm.RTMClient** (RTM client) +- [ ] **slack_sdk.audit_logs** (Audit Logs API client) +- [ ] **slack_sdk.scim** (SCIM API client) +- [ ] **slack_sdk.rtm** (RTM client) - [ ] **slack_sdk.signature** (Request Signature Verifier) ### Requirements diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index ff4238987..2d9affd7b 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -9,7 +9,9 @@ - [ ] **slack_sdk.models** (UI component builders) - [ ] **slack_sdk.oauth** (OAuth Flow Utilities) - [ ] **slack_sdk.socket_mode** (Socket Mode client) -- [ ] **slack_sdk.rtm.RTMClient** (RTM client) +- [ ] **slack_sdk.audit_logs** (Audit Logs API client) +- [ ] **slack_sdk.scim** (SCIM API client) +- [ ] **slack_sdk.rtm** (RTM client) - [ ] **slack_sdk.signature** (Request Signature Verifier) - [ ] `/docs-src` (Documents, have you run `./docs.sh`?) - [ ] `/docs-src-v2` (Documents, have you run `./docs-v2.sh`?) diff --git a/docs-src/audit-logs/index.rst b/docs-src/audit-logs/index.rst new file mode 100644 index 000000000..adcb5885f --- /dev/null +++ b/docs-src/audit-logs/index.rst @@ -0,0 +1,51 @@ +============================================== +Audit Logs API Client +============================================== + +`Audit Logs API `_ is a set of APIs for monitoring what’s happening in your `Enterprise Grid `_ organization. + +The Audit Logs API can be used by security information and event management (SIEM) tools to provide an analysis of how your Slack organization is being accessed. You can also use this API to write your own applications to see how members of your organization are using Slack. + +Follow the instructions in `the API document `_ to get a valid token for using Audit Logs API. The Slack app using the Audit Logs API needs to be installed in the Enterprise Grid Organization, not an individual workspace within the organization. + +AuditLogsClient +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +An OAuth token with `the admin scope `_ is required to access this API. + +You will likely use the ``/logs`` endpoint as it's the essential part of this API. + +To learn about the available parameters for this endpoint, check out `this guide `_. You can also learn more about the data structure of ``api_response.typed_body`` from `the class source code `_. + +.. code-block:: python + + import os + from slack_sdk.audit_logs import AuditLogsClient + + client = AuditLogsClient(token=os.environ["SLACK_ORG_ADMIN_USER_TOKEN"]) + + api_response = self.client.logs(action="user_login", limit=1) + api_response.typed_body # slack_sdk.audit_logs.v1.LogsResponse + +If you would like to access ``/schemes`` or ``/actions``, you can use the following methods: + +.. code-block:: python + + api_response = self.client.schemas() + api_response = self.client.actions() + +AsyncAuditLogsClient +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you are keen to use asyncio for SCIM API calls, we offer AsyncSCIMClient for it. This client relies on aiohttp library. + +.. code-block:: python + + from slack_sdk.audit_logs.async_client import AsyncAuditLogsClient + client = AsyncAuditLogsClient(token=os.environ["SLACK_ORG_ADMIN_USER_TOKEN"]) + + api_response = await self.client.logs(action="user_login", limit=1) + api_response.typed_body # slack_sdk.audit_logs.v1.LogsResponse + + +.. include:: ../metadata.rst diff --git a/docs-src/index.rst b/docs-src/index.rst index 03344ebe1..ca331d7f4 100644 --- a/docs-src/index.rst +++ b/docs-src/index.rst @@ -8,6 +8,8 @@ webhook/index socket-mode/index oauth/index + audit-logs/index + scim/index real_time_messaging faq about @@ -31,7 +33,11 @@ The Slack platform offers several APIs to build apps. Each Slack API delivers pa +--------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------+ | OAuth | Setup the authentication flow using V2 OAuth for Slack apps. | ``slack_sdk.oauth`` | +--------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------+ -| RTM API | Listen for incoming messages and a limited set of events happening in Slack, using WebSocket. | ``slack_sdk.rtm``` | +| Audit Logs API | Receive audit logs API data. | ``slack_sdk.audit_logs`` | ++--------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------+ +| SCIM API | Utilize the SCIM APIs for provisioning and managing user accounts and groups. | ``slack_sdk.scim`` | ++--------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------+ +| RTM API | Listen for incoming messages and a limited set of events happening in Slack, using WebSocket. | ``slack_sdk.rtm.v2`` | +--------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------+ | Request Signature Verification | Verify incoming requests from the Slack API servers. | ``slack_sdk.signature`` | +--------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------+ diff --git a/docs-src/real_time_messaging.rst b/docs-src/real_time_messaging.rst index 32a502529..4165daccc 100644 --- a/docs-src/real_time_messaging.rst +++ b/docs-src/real_time_messaging.rst @@ -1,3 +1,4 @@ + .. _real-time-messaging: ============================================== @@ -7,12 +8,9 @@ RTM Client Real Time Messaging (RTM) --------------------------------------- - The `Real Time Messaging (RTM) API`_ is a WebSocket-based API that allows you to receive events from Slack in real time and send messages as users. -If you prefer events to be pushed to your app, we recommend using the HTTP-based `Events API `_ instead. -The Events API contains some events that aren't supported in the RTM API (like `app_home_opened event `_), -and it supports most of the event types in the RTM API. If you'd like to use the Events API, you can use the `Python Slack Events Adaptor `_. +If you prefer events to be pushed to your app, we recommend using the HTTP-based `Events API `_ along with `Socket Mode `_ instead. The Events API contains some events that aren't supported in the RTM API (like `app_home_opened event `_), and it supports most of the event types in the RTM API. If you'd like to use the Events API, you can use the `Python Slack Events Adaptor `_. The RTMClient allows apps to communicate with the Slack Platform's RTM API. @@ -30,6 +28,35 @@ Also, even if the Slack app configuration pages encourage you to upgrade to the **Connecting to the RTM API** +Note that the import here is not ``from slack_sdk.rtm import RTMClient`` but ``from slack_sdk.rtm.v2 import RTMClient`` (``v2`` is added in the latter one). If you would like to use the legacy version of the client, go to the next section. + +.. code-block:: python + + import os + from slack_sdk.rtm.v2 import RTMClient + + rtm = RTMClient(token=os.environ["SLACK_BOT_TOKEN"]) + + @rtm.on("message") + def handle(client: RTMClient, event: dict): + if 'Hello' in event['text']: + channel_id = event['channel'] + thread_ts = event['ts'] + user = event['user'] # This is not username but user ID (the format is either U*** or W***) + + client.web_client.chat_postMessage( + channel=channel_id, + text=f"Hi <@{user}>!", + thread_ts=thread_ts + ) + + rtm.start() + + +**Connecting to the RTM API (v1 client)** + +Below is a code snippet that uses the legacy version of ``RTMClient``. For new app development, we **do not recommend** using it as it contains issues that have been resolved in v2. Please refer to the `list of these issues `_ for more details. + .. code-block:: python import os @@ -88,11 +115,9 @@ If you'd rather use ``rtm.start`` to establish the connection, which provides mo ) rtm_client.start() -Read the `rtm.connect docs `_ and the `rtm.start docs `_ for more details. - +Read the `rtm.connect docs `_ and the `rtm.start docs `_ for more details. Also, note that ``slack.rtm.v2.RTMClient`` does not support ``rtm.start``. -RTM Events -------------- +**RTM Events** .. code-block:: javascript diff --git a/docs-src/scim/index.rst b/docs-src/scim/index.rst new file mode 100644 index 000000000..7e4854582 --- /dev/null +++ b/docs-src/scim/index.rst @@ -0,0 +1,97 @@ +============================================== +SCIM API Client +============================================== + +`SCIM API `_ is a set of APIs for provisioning and managing user accounts and groups. SCIM is used by Single Sign-On (SSO) services and identity providers to manage people across a variety of tools, including Slack. + +`SCIM (System for Cross-domain Identity Management) `_ is supported by a myriad of services. It behaves slightly differently from other Slack APIs. + +Refer to `the API document `_ for more details. + +SCIMClient +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +An OAuth token with `the admin scope `_ is required to access the SCIM API. + +To fetch provisioned user data, you can use the ``search_users`` method in the client. + +.. code-block:: python + + import os + from slack_sdk.scim import SCIMClient + + client = SCIMClient(token=os.environ["SLACK_ORG_ADMIN_USER_TOKEN"]) + + response = client.search_users( + start_index=1, + count=100, + filter="""filter=userName Eq "Carly"""", + ) + response.users # List[User] + +Check out `the class source code `_ to learn more about the structure of the ``user`` in ``response.users``. + +Similarly, the ``search_groups`` method is available and the shape of the ``Group`` object can be `found here `_. + +.. code-block:: python + + response = client.search_groups( + start_index=1, + count=10, + ) + response.groups # List[Group] + +For creating, updating, and deleting users/groups: + +.. code-block:: python + + # POST /Users + # Creates a user. Must include the user_name argument and at least one email address. + # You may provide an email address as the user_name value, + # but it will be automatically converted to a Slack-appropriate username. + user = User( + user_name="cal", + name=UserName(given_name="C", family_name="Henderson"), + emails=[UserEmail(value="your-unique-name@example.com")], + ) + creation_result = self.client.create_user(user) + + # PATCH /Users/{user_id} + # Updates an existing user resource, overwriting values for specified attributes. + patch_result = self.client.patch_user( + id=creation_result.user.id, + partial_user=User(user_name="chenderson"), + ) + + # PUT /Users/{user_id} + # Updates an existing user resource, overwriting all values for a user + # even if an attribute is empty or not provided. + user_to_update = patch_result.user + user_to_update.name = UserName(given_name="Cal", family_name="Henderson") + update_result = self.client.update_user(user=user_to_update) + + # DELETE /Users/{user_id} + # Sets a Slack user to deactivated. The value of the {id} + # should be the user's corresponding Slack ID, beginning with either U or W. + delete_result = self.client.delete_user(user_to_update.id) + +AsyncSCIMClient +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Lastly, if you are keen to use asyncio for SCIM API calls, we offer ``AsyncSCIMClient`` for it. This client relies on aiohttp library. + +.. code-block:: python + + import asyncio + import os + from slack_sdk.scim.async_client import AsyncSCIMClient + + client = AsyncSCIMClient(token=os.environ["SLACK_ORG_ADMIN_USER_TOKEN"]) + + async def main(): + response = await client.search_groups(start_index=1, count=2) + print(response.groups) + + asyncio.run(main()) + +.. include:: ../metadata.rst diff --git a/docs/about.html b/docs/about.html index 1e9f135d6..7c9ffa9b1 100644 --- a/docs/about.html +++ b/docs/about.html @@ -154,9 +154,18 @@
  • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/genindex.html b/docs/genindex.html index 9738b6060..faaff7283 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/index.html b/docs/index.html index 9d3c555da..24c250c59 100644 --- a/docs/index.html +++ b/docs/index.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/metadata.html b/docs/metadata.html index 75d7403de..724957f90 100644 --- a/docs/metadata.html +++ b/docs/metadata.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/oauth/index.html b/docs/oauth/index.html index ef4b53ace..b785f2d7d 100644 --- a/docs/oauth/index.html +++ b/docs/oauth/index.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/objects.inv b/docs/objects.inv index ef0c5da2a..21cf948cf 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/real_time_messaging.html b/docs/real_time_messaging.html index fe21dc482..0ef1dc3d5 100644 --- a/docs/real_time_messaging.html +++ b/docs/real_time_messaging.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      @@ -200,9 +209,7 @@

      Real Time Messaging (RTM)

      The Real Time Messaging (RTM) API is a WebSocket-based API that allows you to receive events from Slack in real time and send messages as users.

      -

      If you prefer events to be pushed to your app, we recommend using the HTTP-based Events API instead. -The Events API contains some events that aren’t supported in the RTM API (like app_home_opened event), -and it supports most of the event types in the RTM API. If you’d like to use the Events API, you can use the Python Slack Events Adaptor.

      +

      If you prefer events to be pushed to your app, we recommend using the HTTP-based Events API along with Socket Mode instead. The Events API contains some events that aren’t supported in the RTM API (like app_home_opened event), and it supports most of the event types in the RTM API. If you’d like to use the Events API, you can use the Python Slack Events Adaptor.

      The RTMClient allows apps to communicate with the Slack Platform’s RTM API.

      The event-driven architecture of this client allows you to simply link callbacks to their corresponding events. When an event occurs this client executes your callback while passing along any information it receives. We also give you the ability to call our web client from inside your callbacks.

      In our example below, we watch for a message event that contains “Hello” and if its received, we call the say_hello() function. We then issue a call to the web client to post back to the channel saying “Hi” to the user.

      @@ -211,6 +218,30 @@

      Real Time Messaging (RTM)create a classic Slack app. You can learn more in the API documentation.

      Also, even if the Slack app configuration pages encourage you to upgrade to the newer permission model, don’t upgrade it and keep using the “classic” bot permission.

      Connecting to the RTM API

      +

      Note that the import here is not from slack_sdk.rtm import RTMClient but from slack_sdk.rtm.v2 import RTMClient (v2 is added in the latter one). If you would like to use the legacy version of the client, go to the next section.

      +
      import os
      +from slack_sdk.rtm.v2 import RTMClient
      +
      +rtm = RTMClient(token=os.environ["SLACK_BOT_TOKEN"])
      +
      +@rtm.on("message")
      +def handle(client: RTMClient, event: dict):
      +    if 'Hello' in event['text']:
      +        channel_id = event['channel']
      +        thread_ts = event['ts']
      +        user = event['user'] # This is not username but user ID (the format is either U*** or W***)
      +
      +        client.web_client.chat_postMessage(
      +            channel=channel_id,
      +            text=f"Hi <@{user}>!",
      +            thread_ts=thread_ts
      +        )
      +
      +rtm.start()
      +
      +
      +

      Connecting to the RTM API (v1 client)

      +

      Below is a code snippet that uses the legacy version of RTMClient. For new app development, we do not recommend using it as it contains issues that have been resolved in v2. Please refer to the list of these issues for more details.

      import os
       from slack_sdk.rtm import RTMClient
       
      @@ -264,10 +295,8 @@ 

      Real Time Messaging (RTM)rtm_client.start()

      -

      Read the rtm.connect docs and the rtm.start docs for more details.

      -

      -
      -

      RTM Events

      +

      Read the rtm.connect docs and the rtm.start docs for more details. Also, note that slack.rtm.v2.RTMClient does not support rtm.start.

      +

      RTM Events

      {
           'type': 'message',
           'ts': '1358878749.000002',
      diff --git a/docs/scim/index.html b/docs/scim/index.html
      new file mode 100644
      index 000000000..b79312d39
      --- /dev/null
      +++ b/docs/scim/index.html
      @@ -0,0 +1,316 @@
      +
      +
      +    
      +        
      +        
      +        SCIM API Client — Python Slack SDK
      +
      +        
      +        
      +        
      +        
      +        
      +        
      +        
      +        
      +        
      +        
      +        
      +    
      +
      +    
      +        
      +        
      +        
      +        
      + + + + + + + Python Slack SDK + + +
      + + +
      +
      + + + + + +
      + +
      +
      +

      SCIM API Client

      +

      SCIM API is a set of APIs for provisioning and managing user accounts and groups. SCIM is used by Single Sign-On (SSO) services and identity providers to manage people across a variety of tools, including Slack.

      +

      SCIM (System for Cross-domain Identity Management) is supported by myriad services. It behaves slightly differently than other Slack APIs.

      +

      Refer to the API document for more details.

      +
      +

      SCIMClient

      +

      An OAuth token with the admin scope is required to access the SCIM API.

      +

      To fetch provisioned user data, you can use the search_users method in the client.

      +
      import os
      +from slack_sdk.scim import SCIMClient
      +
      +client = SCIMClient(token=os.environ["SLACK_ORG_ADMIN_USER_TOKEN"])
      +
      +response = client.search_users(
      +    start_index=1,
      +    count=100,
      +    filter="""filter=userName Eq "Carly"""",
      +)
      +response.users  # List[User]
      +
      +
      +

      Check out the class source code to learn more about the structure of the user in response.users.

      +

      Similarly, the search_groups method is available and the shape of the Group object can be found here.

      +
      response = client.search_groups(
      +    start_index=1,
      +    count=10,
      +)
      +response.groups  # List[Group]
      +
      +
      +

      For creating, updating, and deleting users/groups:

      +
      # POST /Users
      +# Creates a user. Must include the user_name argument and at least one email address.
      +# You may provide an email address as the user_name value,
      +# but it will be automatically converted to a Slack-appropriate username.
      +user = User(
      +    user_name="cal",
      +    name=UserName(given_name="C", family_name="Henderson"),
      +    emails=[UserEmail(value="your-unique-name@example.com")],
      +)
      +creation_result = self.client.create_user(user)
      +
      +# PATCH /Users/{user_id}
      +# Updates an existing user resource, overwriting values for specified attributes.
      +patch_result = self.client.patch_user(
      +    id=creation_result.user.id,
      +    partial_user=User(user_name="chenderson"),
      +)
      +
      +# PUT /Users/{user_id}
      +# Updates an existing user resource, overwriting all values for a user
      +# even if an attribute is empty or not provided.
      +user_to_update = patch_result.user
      +user_to_update.name = UserName(given_name="Cal", family_name="Henderson")
      +update_result = self.client.update_user(user=user_to_update)
      +
      +# DELETE /Users/{user_id}
      +# Sets a Slack user to deactivated. The value of the {id}
      +# should be the user's corresponding Slack ID, beginning with either U or W.
      +delete_result = self.client.delete_user(user_to_update.id)
      +
      +
      +
      +
      +

      AsyncSCIMClient

      +

      Lastly, if you are keen to use asyncio for SCIM API calls, we offer AsyncSCIMClient for it. This client relies on aiohttp library.

      +
      import asyncio
      +import os
      +from slack_sdk.scim.async_client import AsyncSCIMClient
      +
      +client = AsyncSCIMClient(token=os.environ["SLACK_ORG_ADMIN_USER_TOKEN"])
      +
      +async def main():
      +    response = await client.search_groups(start_index=1, count=2)
      +    print(response.groups)
      +
      +asyncio.run(main())
      +
      +
      +
      +
      + + +
      +
      +
      + +
      +
      + +
      +

      + © 2020 Slack Technologies, Inc. and contributors +

      +
      + + + + + \ No newline at end of file diff --git a/docs/search.html b/docs/search.html index 211eb1e50..51d059f15 100644 --- a/docs/search.html +++ b/docs/search.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/searchindex.js b/docs/searchindex.js index 4b1c41a27..0f9e699b8 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about","faq","index","installation/index","metadata","oauth/index","real_time_messaging","socket-mode/index","v3-migration/index","web/index","webhook/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["about.rst","faq.rst","index.rst","installation/index.rst","metadata.rst","oauth/index.rst","real_time_messaging.rst","socket-mode/index.rst","v3-migration/index.rst","web/index.rst","webhook/index.rst"],objects:{},objnames:{},objtypes:{},terms:{"000002":[6,9],"000003":9,"111":[3,7],"12345":9,"123456":9,"1234567890":9,"1358878749":6,"139":5,"1476745373":9,"1476746830":9,"1920":9,"200":[2,5,9,10],"222":[3,7],"237":9,"300":5,"3000":[3,9],"3rd":7,"400":5,"403":[5,9,10],"404":[5,9,10],"429":9,"750319":9,"boolean":9,"break":[1,8],"case":[1,5],"class":[8,9,10],"default":[5,6,9],"export":[1,9],"final":3,"float":7,"function":[3,6,7],"import":[1,2,3,5,6,7,8,9,10],"int":9,"long":[8,9],"new":[1,3,7,8,9,10],"public":9,"return":[3,5,9,10],"short":[8,9],"super":1,"switch":[1,8],"true":[5,8,9],"try":[1,2,5,7,9],"while":[1,6,8,9],Adding:9,And:2,But:1,For:[3,8,9],IDs:[5,9],IMs:9,One:9,That:[1,8,9],The:[2,3,5,6,7,8,9,10],Then:[1,3],There:[1,7,8],Use:[7,9],Using:[],With:5,__main__:[3,9],__name__:[3,5,9,10],a111:7,abil:[3,6],abl:3,about:[1,3,5,6,9],abov:[5,9],accept:3,access:[0,5,9],access_token:[3,5],accessori:9,acknowledg:[7,10],action:[8,10],action_id:[5,9],activ:1,actual:9,adapt:[],adaptor:6,add:[1,3,5,7,8,9],add_to_slack:5,added:1,addit:[3,7,9],address:8,after:[3,5,9],again:5,agre:3,agreement:0,aim:1,aiohttp:[7,8,9,10],all:[1,3,5,7,8,9],allow:[6,9],along:6,alreadi:[5,6,9],already_in_channel:9,also:[2,6,8,9,10],alt:5,alt_text:9,alwai:[1,2],ambiti:1,ani:[2,3,5,6,7,8,10],anoth:9,anywai:7,apart:[7,8],api:[0,2,3,5,6,7,8,10],api_cal:9,api_method:9,api_respons:[2,9],api_test:[1,2],app:[0,2,3,6,7,9,10],app_home_open:6,app_id:5,app_ment:5,app_token:7,appear:9,append:7,appli:3,applic:[3,9],appropri:1,architectur:6,archiv:9,aren:6,arg:[3,5],argument:[7,9],around:1,arrai:9,articl:9,assert:[9,10],assign:9,assist:2,associ:10,async:[7,8,9,10],async_app:[],async_cli:[2,7,9,10],async_handl:[],asyncapp:[],asynchron:[9,10],asyncio:[8,9,10],asyncsocketmodehandl:[],asyncwebcli:[7,8],asyncwebhookcli:8,attach:9,attribut:[1,9],attributeerror:1,auth:[3,5],auth_test:5,authed_us:5,authent:[2,5,9,10],author:[3,5],authorize_url_gener:5,authorizeurlgener:5,automat:8,avail:[3,9,10],averag:9,avoid:3,await:[7,8,9,10],awesom:[5,9],axe:9,b00000000:10,back:[5,6],base:6,base_dir:5,basic:[3,6,7,9],basicconfig:[1,2,9],becom:9,been:[3,9],befor:[8,9],beforehand:[9,10],begin:3,being:[1,9],below:[5,6,7,9],best:[2,9],between:[8,9],biggest:8,bin:1,bit:9,bite:1,block:[5,9,10],block_id:[5,9],bodi:[5,10],bolt:5,bond:2,bot:[3,5,6,9],bot_id:5,bot_scop:5,bot_token:5,bot_user_id:5,both:1,box:[8,9],broadcast:9,bug:2,build:[0,2,3,5,9],builder:[2,9],built:[3,7],builtin:[],burst:9,button:[3,5,9],c031415926:9,c0xxxxxx:9,c0xxxxxxx:9,c0xxxxxxy:9,c16180339:9,c27182818:9,c3ukjtqac:9,call:[3,5,6,7,8,10],callback:[5,6,9],callback_id:[5,9],can:[1,2,3,5,6,7,8,9,10],cancel:9,cannot:9,capabl:2,chang:[3,7,8,9],changelog:1,channel:[5,6,7,9,10],channel_id:[5,6,9],channel_nam:9,channel_not_found:9,charact:9,chat:[5,9],chat_delet:9,chat_postephemer:9,chat_postmessag:[6,9],chat_upd:9,check:[3,5,9],choos:[5,7],classic:6,click:[3,5],client:[1,2,3,5,8],client_id:[3,5],client_secret:[3,5],clone:2,close:9,code:[0,1,2,3,5,8,9],code_param:3,collect:9,com:[2,3,5,9,10],combin:9,comma:[5,9],command:[1,5,10],comment:9,commun:[2,6],compat:[7,8],complet:[1,3,5,6],complex:9,compon:2,compos:9,concept:[],concret:1,conduct:0,configur:[3,6,7,9],configuration_url:5,confus:8,connect:[2,6,7],connect_method:6,consider:9,consist:8,construct:2,consum:5,contain:[6,9],content:1,context:9,continu:[1,9],contribut:0,contributor:[0,1],convers:[6,8],conversations_arch:9,conversations_cr:9,conversations_info:9,conversations_join:9,conversations_leav:9,conversations_list:9,conversations_memb:9,conversations_open:9,correspond:[2,3,6],could:1,coupl:1,cours:2,cover:[7,9],coverag:[1,8],creat:[1,6,9],credenti:[3,6],custom:9,dai:1,danni:9,data:[2,3,5,6,9],databas:3,deal:9,debug:[1,2,9],deck:9,dedic:1,def:[3,5,6,7,9,10],defin:3,delai:9,delet:9,deliv:2,demonstr:[1,5],depend:[3,7,8,9,10],deprec:[1,8],descend:9,detail:[5,6,9],determin:3,dev:8,develop:[0,2,9],devic:10,differ:[7,9],direct:[3,9],directli:[2,9],discuss:[1,2],displai:9,doc:[1,6,9],document:[3,6,9],doesn:[5,8],domain:[5,9],don:[1,3,5,6,7,8,9],done:1,door:9,driven:6,due:[5,9],dynam:9,each:[2,9],easi:[2,7],easier:5,edg:5,edit:1,effect:3,either:[6,7,9],element:[5,9],elif:5,els:[5,9],emoji:9,empti:3,enabl:[2,7,9],encount:[1,9],encourag:6,end:5,endpoint:[3,5,9],enriquez:10,ensur:1,enterpris:5,enterprise_id:5,enterprise_nam:5,enterprise_url:5,entir:3,env:1,envelope_id:7,environ:[1,3,5,6,7,9,10],environment:3,ephemer:9,error:[1,5,9],establish:[6,7],even:6,event:[2,5,7,9,10],events_api:7,everi:3,exampl:[3,6,9],exce:9,excel:1,except:[5,9],exchang:[3,5,9],excit:[1,9],exclud:9,exclude_archiv:9,execut:6,exist:[8,9],expect:[1,8],expir:5,expiration_second:5,explain:5,explicitli:8,extern:9,external_id:9,external_url:9,eyes:7,facilit:3,fail:[5,9],fakelink:10,fallback:[9,10],fals:9,far:9,featur:[2,3,7,8],feedback:1,feel:[1,9],fellow:2,felt:9,few:[2,7,8],fewer:9,field:9,file:1,file_com:9,fileinstallationstor:5,fileoauthstatestor:5,files_remote_add:9,files_upload:9,find:[1,8],find_bot:5,first:[1,5,7,8],fit:2,fix:1,flask:[3,5,9,10],flask_env:9,flow:[2,3,8],focus:9,folder:1,follow:[1,2,5,7,9],forget:[1,3,7,9],fork:9,form:[5,9,10],format:[6,9],forward:8,found:3,framework:5,fred:10,from:[0,1,2,3,5,6,7,9,10],full:[3,5,9],fulli:9,fun:9,futur:1,gain:5,gener:[1,2,3,5,10],german:9,get:[3,5,7,9,10],get_data:[5,9,10],git:2,github:2,give:[5,6],given:1,global:9,goe:5,good:[1,2],got:9,grace:9,grant:3,great:1,greater:9,grid:5,group:9,guest:9,guidelin:1,had:9,hand:9,handl:[3,5,9,10],handler:5,happen:[2,5],has:[1,3,8,9],hash:9,haunt:9,have:[1,6,7,8,9,10],header:[5,9,10],height:5,hello:[6,9,10],help:1,here:[2,5,7,8,9],higher:2,highli:8,hit:9,hole:9,hook:10,hop:9,hotel:9,how:[3,5,9],howev:[8,9],href:[3,5],http:[2,3,5,6,7,8,9,10],hub:9,hurri:9,hyphen:9,imag:9,image_url:9,img:5,implement:[5,7],importantli:1,includ:[1,3,5,9,10],include_local:9,include_num_memb:9,incom:[2,5],incoming_webhook:5,incoming_webhook_channel:5,incoming_webhook_channel_id:5,incoming_webhook_configuration_url:5,incoming_webhook_url:5,inconveni:8,incorpor:1,increas:1,independ:2,indic:[5,9],industri:3,inf:7,info:[8,9],inform:[3,6,7,9],initi:[3,7],input:[5,9],insert:2,insid:[1,6,9],instal:[9,10],installation_stor:5,installationstor:5,installed_enterpris:5,installed_team:5,instanti:6,instead:[6,7,8,9,10],integr:9,intend:3,interact:[7,9],interest:9,interfac:9,intern:[8,9,10],introduc:8,invalid:[5,9,10],invalid_auth:9,invit:9,invoc:[5,10],is_enterprise_instal:5,is_priv:9,is_valid:[5,10],is_valid_request:9,issu:[2,5,6],item:[1,9],its:[1,2,5,6,7,10],itself:9,join:9,jpeg:9,json:[3,5,9],just:[1,2,3,7,8,9,10],keep:[3,6],kei:[3,9],keyword:9,kind:9,kit:[9,10],know:[1,3],label:[5,9],larger:6,later:3,layout:9,learn:6,least:3,leav:9,left:[7,9],legacywebcli:8,let:[0,1,3,5,7,9],letter:9,level:[1,2,7,9],librari:[8,9,10],licens:0,like:[6,7,8,9],limit:2,line:2,linear:9,link:[3,6],list:[1,3,6,9],listen:[2,7],liter:9,live:8,load:[2,5,9],local:[2,9],localhost:[3,9],log:[1,2,9],longer:[8,9],look:[1,5,9],love:1,mai:[1,5,9],main:7,maintain:0,mainten:8,make:[1,8,9],make_respons:[5,9,10],manag:7,mani:[1,9],manual:8,mean:8,member:9,mention:[],messag:[2,7,10],metadata:9,method:[2,3,5,7,10],middlewar:[],might:9,modal:5,mode:[2,8],model:[2,6,7],modul:[1,8],more:[1,3,6,7,8,9],most:[5,6,8,9],mpim:9,mrkdwn:[9,10],much:[1,5],multi:9,multipl:3,must:[3,6,9],myapp:3,name:[5,7,8,9],natur:8,nearli:9,necessari:5,need:[1,2,3,5,6,7,8,9],newer:[6,8],newest:9,none:[5,7],note:[1,5,6,7,9],notif:9,now:[5,8],number:9,oauth:[2,3,8,9],oauth_callback:5,oauth_redirect:3,oauth_respons:5,oauth_scop:3,oauth_start:5,oauth_v2_access:[3,5],oauthstatestor:5,object:9,occur:6,off:[7,9],offer:[2,7],okai:5,old:1,onc:3,one:[1,3,7,8,9],ones:7,onli:[7,8,9],onto:9,open:[5,7,9],option:[6,8,9,10],order:3,origin:9,other:[3,7,8,9],our:[1,3,6,9],out:[3,7,8,9],output:1,over:[2,7,9],overlook:9,own:[5,7,9],packag:[1,2,8],page:[3,6,7],pane:7,param:[3,5,9],paramet:[3,5,9],parent:9,part:2,parti:[7,9],particularli:1,pass:[3,6,7,9],password:3,path:2,pattern:5,payload:[3,5,6,7,9,10],pdf:9,peopl:9,per:9,perform:7,period:9,permiss:[3,6],persist:[3,5],person:9,pexel:9,photo:9,pick:2,pip:[1,2,9,10],place:9,plain:6,plain_text:[5,9],plain_text_input:[5,9],platform:[0,2,5,6],pleas:[1,3,5,8],png:[5,9],pockag:7,polish:[],possibl:10,post:[5,6,9,10],post_instal:3,post_messag:9,postephemer:9,postmessag:9,potenti:3,power:2,practic:9,pre:3,pre_instal:3,prefer:[6,7],prefix:7,prepar:5,preview:9,preview_imag:9,previou:9,primari:9,print:[3,5,9],privat:9,private_channel:9,private_metadata:9,process:[5,7],program:[1,7,9,10],project:[1,2,7,8],properli:8,properti:9,propos:1,protocol:3,prototyp:9,proudli:0,provid:[3,5,6,8,9],public_channel:9,publish:3,pull:[1,2],purpos:9,push:[6,9],pypi:[1,2,7,8],python3:9,python:[1,3,5,6,8,9],queri:[2,3,5],question:[1,2],quickli:9,rais:9,random:[5,9],randomli:3,ratelimit:9,rather:[1,6],reaction:[7,9],reactions_add:[7,9],reactions_remov:9,read:[3,5,6],reason:8,rebuild:1,receiv:[2,6,7],recommend:[1,2,3,6,8],redirect:[3,5],redirect_uri:5,refer:[5,8,9],reflect:9,refus:3,regular:9,reinstal:[1,3],relat:2,releas:9,releg:9,reli:[8,9,10],remot:9,remov:[1,8,9],renam:8,repl:[1,2],replac:8,repli:[9,10],reply_broadcast:9,report:2,req:7,request:[2,3,5,7,9,10],requir:[3,7,8,9,10],res:1,resolv:8,respond:9,respons:[3,5,6,7,9,10],response_url:2,restructuredtext:1,result:9,resum:9,retri:9,retriev:[3,5,9],review:[3,9],richer:10,right:5,room:9,round:9,rout:[3,5,9,10],rowdi:9,rst:1,rtm:[2,8],rtm_client:6,rtmclient:6,run:[1,2,3,7,9,10],run_async:8,run_on:6,runtim:[1,3],safe:3,sai:[1,6,8,9],said:[1,8,9,10],same:[5,7,9],sampl:1,save:[2,3,5,9],say_hello:6,scope:[3,5,6,7],script:1,sdk:[5,7,8],seamlessli:2,search:5,second:9,secondari:8,secret:3,section:[1,3,5,9,10],sed:8,see:[3,5,6,9],send:[2,6,9,10],send_message_via_webhook:10,send_slack_messag:9,send_socket_mode_respons:7,sentenc:[],separ:[5,9],server:[2,5,7],servic:10,set:[1,2,3,6,7,9],setup:[2,3],sever:2,share:[3,5,9],shortcut:9,should:9,show:9,side:5,signatur:[2,5,9,10],signature_verifi:[5,9,10],signatureverifi:[5,9,10],signing_secret:[5,10],silent:9,similar:8,simpl:[3,7,8,9],simplest:[9,10],simpli:[6,8,9],sinc:8,singl:[3,9],site:9,slack:[1,3,5,6,7,8,9,10],slack_api_token:9,slack_app:[5,9,10],slack_app_token:7,slack_bolt:[],slack_bot_token:[1,3,6,7,9],slack_client_id:[3,5],slack_client_secret:[3,5],slack_scop:3,slack_sdk:[1,2,3,5,6,7,8,9,10],slack_signing_secret:[5,9,10],slack_token:[6,9],slackapi:2,slackapierror:[5,9],slackclient:[],slash:[5,10],sleep:[7,9],slightli:9,slow:6,small:2,snippet:5,social:9,socket:2,socket_mod:[2,7],socket_mode_request_listen:7,socketmodecli:[],socketmoderequest:7,socketmoderespons:7,solut:5,some:[6,8,9],someth:[1,5,8],sometim:9,sorri:8,sourc:[1,2,3,7,8],special:9,specif:[7,8],specifi:[5,9],sphinx:1,src:[1,5],srcset:5,stack:5,standard:[3,8,9,10],star:9,start:[1,3,5,6,7,8,9],start_async:[],state:[3,5,9],state_stor:5,statu:9,status_cod:10,step:[1,5,8],still:[1,8],stop:7,storag:9,store:[3,5,9],str:[9,10],straight:8,string:[3,5,9],stuck:[2,9],submiss:[5,9],submit:[1,5,9],submitted_data:[5,9],subsequ:9,subtyp:7,succeed:3,success:3,successor:8,suffici:5,suppli:9,support:[2,6,8],sure:[1,9],surfac:9,synchron:8,sys:2,t00000000:10,tada:9,take:[3,5,9],team:[0,3,5,6,9],team_id:5,team_nam:5,technic:8,tell:9,term:8,test:[1,2,9],text:[5,6,9,10],than:9,thank:[1,5],thei:[1,2,9],them:[3,9],therefor:9,thi:[1,2,3,5,6,7,8,9,10],thing:[1,7,9],think:1,those:[2,6,8,9],though:9,thought:1,thread:[7,9],thread_t:[6,9],through:[2,5],thumbsup:9,time:[3,8,9],timelin:9,timestamp:[5,7,9,10],titl:[5,9],toemployeeprofil:10,togeth:[2,9],token:[1,6,7,9],token_typ:5,too:[2,5,9,10],tool:0,torrenc:9,total:1,tracker:[1,2],treat:3,tree:[],trigger_id:[5,9],turn:7,two:1,txt:8,type:[5,6,7,9,10],u023becgf:6,u0xxxxxxx:9,u987654321:9,underscor:9,unifi:9,uninstal:[1,5],unit:1,unlik:8,unreli:6,unsupport:5,until:9,updat:[1,9],upgrad:6,upload:9,url:[5,6,9,10],usag:3,use:[1,2,3,5,6,7,8,9,10],used:[2,5,7,9],useful:9,user:[1,3,5,6,9,10],user_id:[5,9],user_scop:5,user_token:5,usernam:6,userwarn:8,uses:[6,9],using:[1,2,5,6,7,8,9,10],valid:[3,5,9],valida:5,valu:[3,5,9],variabl:[1,3],venv:1,veri:9,verif:2,verifi:[1,2,3,5,10],version:7,via:[3,10],view:[5,9],view_id:9,view_submiss:[5,9],views_open:[5,9],views_upd:9,virtual:1,virtualenv:1,visibl:9,visit:[2,7],vote:9,w123456789:9,wai:[2,5,7,8,9,10],wait:[7,9],want:[1,9],warn:8,watch:6,web:[0,2,5,6,7,8],web_client:[6,7],webclient:[1,2,3,5,7,8,9],webhook:[2,8],webhookcli:10,webpag:5,webserv:3,websit:8,websocket:[2,6,7],websocket_cli:7,well:[5,9],what:[1,2,5],when:[2,5,6,9],where:[3,5],which:[3,5,6,9],whole:9,why:1,width:5,window:1,wish:[3,9],without:8,won:[8,9],work:[1,2,3,7,8,9,10],workspac:[5,9],world:9,would:3,wrapper:9,write:[1,3,5,7],written:1,wrong:5,xapp:7,xarg:8,xoxb:[1,3,7,9],xoxp:7,xxxxx:3,xxxxxxxxxxxxxxxxxxxxxxxx:10,xyz:7,yield:3,you:[0,1,2,3,5,6,7,8,9,10],your:[0,1,2,3,5,6,7,8,9],your_app:8,yourself:1},titles:["About","FAQ","Python Slack SDK","Installation","<no title>","OAuth Modules","RTM Client","Socket Mode Client","Migration Guide","Web Client","Webhook Client"],titleterms:{about:0,access:3,ani:9,api:9,app:5,asyncio:7,asyncwebcli:9,asyncwebhookcli:10,base:7,bug:1,call:9,client:[6,7,9,10],contribut:1,convers:9,document:1,event:6,faq:1,featur:1,file:9,flow:5,from:8,get:2,guid:8,help:2,incom:10,instal:[1,2,3,5],issu:1,librari:7,limit:9,lookup:5,messag:[6,9],method:9,migrat:8,modal:9,mode:7,modul:5,oauth:5,python:[0,2],rate:9,real:6,report:1,request:1,response_url:10,rtm:6,sdk:[0,2],slack:[0,2],slackclient:8,socket:7,socketmodecli:7,support:7,time:6,token:[3,5],web:9,webhook:10,websocket:[],workspac:3}}) \ No newline at end of file +Search.setIndex({docnames:["about","audit-logs/index","faq","index","installation/index","metadata","oauth/index","real_time_messaging","scim/index","socket-mode/index","v3-migration/index","web/index","webhook/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["about.rst","audit-logs/index.rst","faq.rst","index.rst","installation/index.rst","metadata.rst","oauth/index.rst","real_time_messaging.rst","scim/index.rst","socket-mode/index.rst","v3-migration/index.rst","web/index.rst","webhook/index.rst"],objects:{},objnames:{},objtypes:{},terms:{"000002":[7,11],"000003":11,"100":8,"111":[4,9],"12345":11,"123456":11,"1234567890":11,"1358878749":7,"139":6,"1476745373":11,"1476746830":11,"1920":11,"200":[3,6,11,12],"222":[4,9],"237":11,"300":6,"3000":[4,11],"3rd":9,"400":6,"403":[6,11,12],"404":[6,11,12],"429":11,"750319":11,"boolean":11,"break":[2,10],"case":[2,6],"class":[8,10,11,12],"default":[6,7,11],"export":[2,11],"final":4,"float":9,"function":[4,7,9],"import":[1,2,3,4,6,7,8,9,10,11,12],"int":11,"long":[10,11],"new":[2,4,7,9,10,11,12],"public":11,"return":[4,6,11,12],"short":[10,11],"super":2,"switch":[2,10],"true":[6,10,11],"try":[2,3,6,9,11],"while":[2,7,10,11],Adding:11,And:3,But:2,For:[4,7,8,10,11],IDs:[6,11],IMs:11,One:11,That:[2,10,11],The:[1,3,4,6,7,8,9,10,11,12],Then:[2,4],There:[2,9,10],Use:[9,11],Using:[],With:6,__main__:[4,11],__name__:[4,6,11,12],a111:9,abil:[4,7],abl:4,about:[1,2,4,6,7,8,11],abov:[6,11],accept:4,access:[0,1,6,8,11],access_token:[4,6],accessori:11,account:[3,8],acknowledg:[9,12],across:8,action:[1,10,12],action_id:[6,11],activ:2,actual:11,adapt:[],adaptor:7,add:[2,4,6,9,10,11],add_to_slack:6,added:[2,7],addit:[4,9,11],address:[8,10],admin:[1,8],after:[4,6,11],again:6,agre:4,agreement:0,aim:2,aiohttp:[1,8,9,10,11,12],all:[2,4,6,8,9,10,11],allow:[7,11],along:7,alreadi:[6,7,11],already_in_channel:11,also:[1,3,7,10,11,12],alt:6,alt_text:11,alwai:[2,3],ambiti:2,analysi:1,ani:[3,4,6,7,9,10,12],anoth:11,anywai:9,apart:[9,10],api:[0,3,4,6,7,9,10,12],api_cal:11,api_method:11,api_repsons:[],api_respons:[1,3,11],api_test:[2,3],app:[0,1,3,4,7,9,11,12],app_home_open:7,app_id:6,app_ment:6,app_token:9,appear:11,append:9,appli:4,applic:[1,4,11],appropri:[2,8],architectur:7,archiv:11,aren:7,arg:[4,6],argument:[8,9,11],around:2,arrai:11,articl:11,assert:[11,12],assign:11,assist:3,associ:12,async:[8,9,10,11,12],async_app:[],async_cli:[1,3,8,9,11,12],async_handl:[],asyncapp:[],asynchron:[11,12],asyncio:[1,8,10,11,12],asyncscimcli:1,asyncsocketmodehandl:[],asyncwebcli:[9,10],asyncwebhookcli:10,attach:11,attribut:[2,8,11],attributeerror:2,audit:3,audit_log:[1,3],auth:[4,6],auth_test:6,authed_us:6,authent:[3,6,11,12],author:[4,6],authorize_url_gener:6,authorizeurlgener:6,automat:[8,10],avail:[1,4,8,11,12],averag:11,avoid:4,await:[1,8,9,10,11,12],awesom:[6,11],axe:11,b00000000:12,back:[6,7],base:7,base_dir:6,basic:[4,7,9,11],basicconfig:[2,3,11],becom:11,been:[4,7,11],befor:[10,11],beforehand:[11,12],begin:[4,8],behav:8,being:[1,2,11],below:[6,7,9,11],best:[3,11],between:[10,11],biggest:10,bin:2,bit:11,bite:2,block:[6,11,12],block_id:[6,11],bodi:[6,12],bolt:6,bond:3,bot:[4,6,7,11],bot_id:6,bot_scop:6,bot_token:6,bot_user_id:6,both:2,box:[10,11],broadcast:11,bug:3,build:[0,3,4,6,11],builder:[3,11],built:[4,9],builtin:[],burst:11,button:[4,6,11],c031415926:11,c0xxxxxx:11,c0xxxxxxx:11,c0xxxxxxy:11,c16180339:11,c27182818:11,c3ukjtqac:11,cal:8,call:[1,4,6,7,8,9,10,12],callback:[6,7,11],callback_id:[6,11],can:[1,2,3,4,6,7,8,9,10,11,12],cancel:11,cannot:11,capabl:3,carli:8,chang:[4,9,10,11],changelog:2,channel:[6,7,9,11,12],channel_id:[6,7,11],channel_nam:11,channel_not_found:11,charact:11,chat:[6,11],chat_delet:11,chat_postephemer:11,chat_postmessag:[7,11],chat_upd:11,check:[1,4,6,8,11],chenderson:8,choos:[6,9],classic:7,click:[4,6],client:[2,3,4,6,10],client_id:[4,6],client_secret:[4,6],clone:3,close:11,code:[0,2,3,4,6,7,8,10,11],code_param:4,collect:11,com:[3,4,6,8,11,12],combin:11,comma:[6,11],command:[2,6,12],comment:11,commun:[3,7],compat:[9,10],complet:[2,4,6,7],complex:11,compon:3,compos:11,concept:[],concret:2,conduct:0,configur:[4,7,9,11],configuration_url:6,confus:10,connect:[3,7,9],connect_method:7,consider:11,consist:10,construct:3,consum:6,contain:[7,11],content:2,context:11,continu:[2,11],contribut:0,contributor:[0,2],convers:[7,10],conversations_arch:11,conversations_cr:11,conversations_info:11,conversations_join:11,conversations_leav:11,conversations_list:11,conversations_memb:11,conversations_open:11,convert:8,correspond:[3,4,7,8],could:2,count:8,coupl:2,cours:3,cover:[9,11],coverag:[2,10],creat:[2,7,8,11],create_us:8,creation_result:8,credenti:[4,7],cross:8,custom:11,dai:2,danni:11,data:[1,3,4,6,7,8,11],databas:4,deactiv:8,deal:11,debug:[2,3,11],deck:11,dedic:2,def:[4,6,7,8,9,11,12],defin:4,delai:11,delet:[8,11],delete_result:8,delete_us:8,deliv:3,demonstr:[2,6],depend:[4,9,10,11,12],deprec:[2,10],descend:11,detail:[6,7,8,11],determin:4,dev:10,develop:[0,3,7,11],devic:12,dict:7,differ:[8,9,11],direct:[4,11],directli:[3,11],discuss:[2,3],displai:11,doc:[2,7,11],document:[1,4,7,8,11],doe:7,doesn:[6,10],domain:[6,8,11],don:[2,4,6,7,9,10,11],done:2,door:11,driven:7,due:[6,11],dynam:11,each:[3,11],easi:[3,9],easier:6,edg:6,edit:2,effect:4,either:[7,8,9,11],element:[6,11],elif:6,els:[6,11],email:8,emoji:11,empti:[4,8],enabl:[3,9,11],encount:[2,11],encourag:7,end:6,endpoint:[1,4,6,11],enriquez:12,ensur:2,enterpris:[1,6],enterprise_id:6,enterprise_nam:6,enterprise_url:6,entir:4,env:2,envelope_id:9,environ:[1,2,4,6,7,8,9,11,12],environment:4,ephemer:11,error:[2,6,11],essenti:1,establish:[7,9],even:[7,8],event:[1,3,6,7,9,11,12],events_api:9,everi:4,exampl:[4,7,8,11],exce:11,excel:2,except:[6,11],exchang:[4,6,11],excit:[2,11],exclud:11,exclude_archiv:11,execut:7,exist:[8,10,11],expect:[2,10],expir:6,expiration_second:6,explain:6,explicitli:10,extern:11,external_id:11,external_url:11,eyes:9,facilit:4,fail:[6,11],fakelink:12,fallback:[11,12],fals:11,family_nam:8,far:11,featur:[3,4,9,10],feedback:2,feel:[2,11],fellow:3,felt:11,fetch:8,few:[3,9,10],fewer:11,field:11,file:2,file_com:11,fileinstallationstor:6,fileoauthstatestor:6,files_remote_add:11,files_upload:11,filter:8,find:[2,10],find_bot:6,first:[2,6,9,10],fit:3,fix:2,flask:[4,6,11,12],flask_env:11,flow:[3,4,10],focus:11,folder:2,follow:[1,2,3,6,9,11],forget:[2,4,9,11],fork:11,form:[6,11,12],format:[7,11],forward:10,found:[4,8],framework:6,fred:12,from:[0,1,2,3,4,6,7,8,9,11,12],full:[4,6,11],fulli:11,fun:11,futur:2,gain:6,gener:[2,3,4,6,12],german:11,get:[1,4,6,9,11,12],get_data:[6,11,12],git:3,github:3,give:[6,7],given:2,given_nam:8,global:11,goe:6,going:[],good:[2,3],got:11,grace:11,grant:4,great:2,greater:11,grid:[1,6],group:[3,8,11],guest:11,guid:1,guidelin:2,had:11,hand:11,handl:[4,6,7,11,12],handler:6,happen:[1,3,6],has:[2,4,10,11],hash:11,haunt:11,have:[2,7,9,10,11,12],header:[6,11,12],height:6,hello:[7,11,12],help:2,henderson:8,here:[1,3,6,7,8,9,10,11],higher:3,highli:10,hit:11,hole:11,hook:12,hop:11,hotel:11,how:[1,4,6,11],howev:[10,11],href:[4,6],http:[3,4,6,7,9,10,11,12],hub:11,hurri:11,hyphen:11,ident:8,imag:11,image_url:11,img:6,implement:[6,9],importantli:2,includ:[2,4,6,8,11,12],include_local:11,include_num_memb:11,incom:[3,6],incoming_webhook:6,incoming_webhook_channel:6,incoming_webhook_channel_id:6,incoming_webhook_configuration_url:6,incoming_webhook_url:6,inconveni:10,incorpor:2,increas:2,independ:3,indic:[6,11],individu:1,industri:4,inf:9,info:[10,11],inform:[1,4,7,9,11],initi:[4,9],input:[6,11],insert:3,insid:[2,7,11],instal:[1,11,12],installation_stor:6,installationstor:6,installed_enterpris:6,installed_team:6,instanti:7,instead:[7,9,10,11,12],instruct:1,integr:11,intend:4,interact:[9,11],interest:11,interfac:11,intern:[10,11,12],introduc:10,invalid:[6,11,12],invalid_auth:11,invit:11,invoc:[6,12],is_enterprise_instal:6,is_priv:11,is_valid:[6,12],is_valid_request:11,issu:[3,6,7],item:[2,11],its:[2,3,6,7,9,12],itself:11,join:11,jpeg:11,json:[4,6,11],just:[2,3,4,9,10,11,12],keen:[1,8],keep:[4,7],kei:[4,11],keyword:11,kind:11,kit:[11,12],know:[2,4],label:[6,11],larger:7,lastli:8,later:4,latter:7,layout:11,learn:[1,7,8],least:[4,8],leav:11,left:[9,11],legaci:7,legacywebcli:10,let:[0,2,4,6,9,11],letter:11,level:[2,3,9,11],librari:[1,8,10,11,12],licens:0,like:[1,7,9,10,11],limit:[1,3],line:3,linear:11,link:[4,7],list:[2,4,7,8,11],listen:[3,9],liter:11,live:10,load:[3,6,11],local:[3,11],localhost:[4,11],log:[2,3,11],logsrespons:1,longer:[10,11],look:[2,6,11],love:2,mai:[2,6,8,11],main:[8,9],maintain:0,mainten:10,make:[2,10,11],make_respons:[6,11,12],manag:[1,3,8,9],mani:[2,11],manual:10,mean:10,member:[1,11],mention:[],messag:[3,9,12],metadata:11,method:[1,3,4,6,8,9,12],middlewar:[],might:11,modal:6,mode:[3,7,10],model:[3,7,9],modul:[2,10],monitor:1,more:[1,2,4,7,8,9,10,11],most:[6,7,10,11],mpim:11,mrkdwn:[11,12],much:[2,6],multi:11,multipl:4,must:[4,7,8,11],myapp:4,myriad:8,name:[6,8,9,10,11],natur:10,nearli:11,necessari:6,need:[1,2,3,4,6,7,9,10,11],newer:[7,10],newest:11,next:7,none:[6,9],note:[2,6,7,9,11],notif:11,now:[6,10],number:11,oauth:[1,3,4,8,10,11],oauth_callback:6,oauth_redirect:4,oauth_respons:6,oauth_scop:4,oauth_start:6,oauth_v2_access:[4,6],oauthstatestor:6,object:[8,11],occur:7,off:[9,11],offer:[1,3,8,9],okai:6,old:2,onc:4,one:[2,4,7,8,9,10,11],ones:9,onli:[9,10,11],onto:11,open:[6,9,11],option:[7,10,11,12],order:4,organ:1,origin:11,other:[4,8,9,10,11],our:[2,4,7,11],out:[1,4,8,9,10,11],output:2,over:[3,9,11],overlook:11,overwrit:8,own:[1,6,9,11],packag:[2,3,10],page:[4,7,9],pane:9,param:[4,6,11],paramet:[1,4,6,11],parent:11,part:[1,3],parti:[9,11],partial_us:8,particularli:2,pass:[4,7,9,11],password:4,patch:8,patch_result:8,patch_us:8,path:3,pattern:6,payload:[4,6,7,9,11,12],pdf:11,peopl:[8,11],per:11,perform:9,period:11,permiss:[4,7],persist:[4,6],person:11,pexel:11,photo:11,pick:3,pip:[2,3,11,12],place:11,plain:7,plain_text:[6,11],plain_text_input:[6,11],platform:[0,3,6,7],pleas:[2,4,6,7,10],png:[6,11],pockag:9,polish:[],possibl:12,post:[6,7,8,11,12],post_instal:4,post_messag:11,postephemer:11,postmessag:11,potenti:4,power:3,practic:11,pre:4,pre_instal:4,prefer:[7,9],prefix:9,prepar:6,preview:11,preview_imag:11,previou:11,primari:11,print:[4,6,8,11],privat:11,private_channel:11,private_metadata:11,probabl:[],process:[6,9],program:[2,9,11,12],project:[2,3,9,10],properli:10,properti:11,propos:2,protocol:4,prototyp:11,proudli:0,provid:[1,4,6,7,8,10,11],provis:[3,8],public_channel:11,publish:4,pull:[2,3],purpos:11,push:[7,11],put:8,pypi:[2,3,9,10],python3:11,python:[2,4,6,7,10,11],queri:[3,4,6],question:[2,3],quickli:11,rais:11,random:[6,11],randomli:4,ratelimit:11,rather:[2,7],reaction:[9,11],reactions_add:[9,11],reactions_remov:11,read:[4,6,7],reason:10,rebuild:2,receiv:[3,7,9],recommend:[2,3,4,7,10],redirect:[4,6],redirect_uri:6,refer:[6,7,8,10,11],reflect:11,refus:4,regular:11,reinstal:[2,4],relat:3,releas:11,releg:11,reli:[1,8,10,11,12],remot:11,remov:[2,10,11],renam:10,repl:[2,3],replac:10,repli:[11,12],reply_broadcast:11,report:3,req:9,request:[3,4,6,9,11,12],requir:[1,4,8,9,10,11,12],res:2,resolv:[7,10],resourc:8,respond:11,respons:[4,6,7,8,9,11,12],response_url:3,restructuredtext:2,result:11,resum:11,retri:11,retriev:[4,6,11],review:[4,11],richer:12,right:6,room:11,round:11,rout:[4,6,11,12],rowdi:11,rst:2,rtm:[3,10],rtm_client:7,rtmclient:7,run:[2,3,4,8,9,11,12],run_async:10,run_on:7,runtim:[2,4],safe:4,sai:[2,7,10,11],said:[2,10,11,12],same:[6,9,11],sampl:2,save:[3,4,6,11],say_hello:7,schame:[],schema:1,scheme:1,scim:[1,3],scope:[1,4,6,7,8,9],script:2,sdk:[6,9,10],seamlessli:3,search:6,search_group:8,search_us:8,second:11,secondari:10,secret:4,section:[2,4,6,7,11,12],secur:1,sed:10,see:[1,4,6,7,11],self:[1,8],send:[3,7,11,12],send_message_via_webhook:12,send_slack_messag:11,send_socket_mode_respons:9,sentenc:[],separ:[6,11],server:[3,6,9],servic:[8,12],set:[1,2,3,4,7,8,9,11],setup:[3,4],sever:3,shape:8,share:[4,6,11],shortcut:11,should:[8,11],show:11,side:6,siem:1,sign:8,signatur:[3,6,11,12],signature_verifi:[6,11,12],signatureverifi:[6,11,12],signing_secret:[6,12],silent:11,similar:10,similarli:8,simpl:[4,9,10,11],simplest:[11,12],simpli:[7,10,11],sinc:10,singl:[4,8,11],site:11,slack:[1,2,4,6,7,8,9,10,11,12],slack_api_token:11,slack_app:[6,11,12],slack_app_token:9,slack_bolt:[],slack_bot_token:[2,4,7,9,11],slack_client_id:[4,6],slack_client_secret:[4,6],slack_org_admin_user_token:[1,8],slack_scop:4,slack_sdk:[1,2,3,4,6,7,8,9,10,11,12],slack_signing_secret:[6,11,12],slack_token:[7,11],slackapi:3,slackapierror:[6,11],slackclient:[],slash:[6,12],sleep:[9,11],slightli:[8,11],slow:7,small:3,snippet:[6,7],social:11,socket:[3,7],socket_mod:[3,9],socket_mode_request_listen:9,socketmodecli:[],socketmoderequest:9,socketmoderespons:9,solut:6,some:[7,10,11],someth:[2,6,10],sometim:11,sorri:10,sourc:[2,3,4,8,9,10],special:11,specif:[9,10],specifi:[6,8,11],sphinx:2,src:[2,6],srcset:6,sso:8,stack:6,standard:[4,10,11,12],star:11,start:[2,4,6,7,9,10,11],start_async:[],start_index:8,state:[4,6,11],state_stor:6,statu:11,status_cod:12,step:[2,6,10],still:[2,10],stop:9,storag:11,store:[4,6,11],str:[11,12],straight:10,string:[4,6,11],structur:[1,8],strucutur:[],stuck:[3,11],submiss:[6,11],submit:[2,6,11],submitted_data:[6,11],subsequ:11,subtyp:9,succeed:4,success:4,successor:10,suffici:6,suppli:11,support:[3,7,8,10],sure:[2,11],surfac:11,synchron:10,sys:3,system:8,t00000000:12,tada:11,take:[4,6,11],team:[0,4,6,7,11],team_id:6,team_nam:6,technic:10,tell:11,term:10,test:[2,3,11],text:[6,7,11,12],than:[8,11],thank:[2,6],thei:[2,3,11],them:[4,11],therefor:11,thi:[1,2,3,4,6,7,8,9,10,11,12],thing:[2,9,11],think:2,those:[3,7,10,11],though:11,thought:2,thread:[9,11],thread_t:[7,11],through:[3,6],thumbsup:11,time:[4,10,11],timelin:11,timestamp:[6,9,11,12],titl:[6,11],todo:[],toemployeeprofil:12,togeth:[3,11],token:[1,2,7,8,9,11],token_typ:6,too:[3,6,11,12],tool:[0,1,8],torrenc:11,total:2,tracker:[2,3],treat:4,tree:[],trigger_id:[6,11],turn:9,two:2,txt:10,type:[6,7,9,11,12],typed_bodi:1,u023becgf:7,u0xxxxxxx:11,u987654321:11,underscor:11,unifi:11,uninstal:[2,6],uniqu:8,unit:2,unlik:10,unreli:7,unsupport:6,until:11,updat:[2,8,11],update_result:8,update_us:8,upgrad:7,upload:11,url:[6,7,11,12],usag:4,use:[1,2,3,4,6,7,8,9,10,11,12],used:[1,3,6,8,9,11],useful:11,user:[2,3,4,6,7,8,11,12],user_id:[6,8,11],user_login:1,user_nam:8,user_scop:6,user_to_upd:8,user_token:6,useremail:8,usernam:[7,8],userwarn:10,uses:[7,11],using:[1,2,3,6,7,9,10,11,12],util:3,valid:[1,4,6,11],valida:6,valu:[4,6,8,11],variabl:[2,4],varieti:8,venv:2,veri:11,verif:3,verifi:[2,3,4,6,12],version:[7,9],via:[4,12],view:[6,11],view_id:11,view_submiss:[6,11],views_open:[6,11],views_upd:11,virtual:2,virtualenv:2,visibl:11,visit:[3,9],vote:11,w123456789:11,wai:[3,6,9,10,11,12],wait:[9,11],want:[2,11],warn:10,watch:7,web:[0,3,6,7,9,10],web_client:[7,9],webclient:[2,3,4,6,9,10,11],webhook:[3,10],webhookcli:12,webpag:6,webserv:4,websit:10,websocket:[3,7,9],websocket_cli:9,well:[6,11],what:[1,2,3,6],when:[3,6,7,11],where:[4,6],which:[4,6,7,11],whole:11,why:2,width:6,window:2,wish:[4,11],within:1,without:10,won:[10,11],work:[2,3,4,9,10,11,12],workspac:[1,6,11],world:11,would:[1,4,7],wrapper:11,write:[1,2,4,6,9],written:2,wrong:6,xapp:9,xarg:10,xoxb:[2,4,9,11],xoxp:9,xxx:[],xxxxx:4,xxxxxxxxxxxxxxxxxxxxxxxx:12,xyz:9,yield:4,you:[0,1,2,3,4,6,7,8,9,10,11,12],your:[0,1,2,3,4,6,7,8,9,10,11],your_app:10,yourself:2},titles:["About","Audit Logs API Client","FAQ","Python Slack SDK","Installation","<no title>","OAuth Modules","RTM Client","SCIM API Client","Socket Mode Client","Migration Guide","Web Client","Webhook Client"],titleterms:{about:0,access:4,ani:11,api:[1,8,11],app:6,asyncauditlogscli:1,asyncio:9,asyncscimcli:8,asyncwebcli:11,asyncwebhookcli:12,audit:1,auditlogscli:1,base:9,bug:2,call:11,client:[1,7,8,9,11,12],contribut:2,convers:11,document:2,event:[],faq:2,featur:2,file:11,flow:6,from:10,get:3,guid:10,help:3,incom:12,instal:[2,3,4,6],issu:2,librari:9,limit:11,log:1,lookup:6,messag:[7,11],method:11,migrat:10,modal:11,mode:9,modul:6,oauth:6,python:[0,3],rate:11,real:7,report:2,request:2,response_url:12,rtm:7,scim:8,scimclient:8,sdk:[0,3],slack:[0,3],slackclient:10,socket:9,socketmodecli:9,support:9,time:7,token:[4,6],web:11,webhook:12,websocket:[],workspac:4}}) \ No newline at end of file diff --git a/docs/socket-mode/index.html b/docs/socket-mode/index.html index 517dd8c64..4268ced09 100644 --- a/docs/socket-mode/index.html +++ b/docs/socket-mode/index.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/v3-migration/index.html b/docs/v3-migration/index.html index fa871561e..7ab4004a1 100644 --- a/docs/v3-migration/index.html +++ b/docs/v3-migration/index.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/web/index.html b/docs/web/index.html index 1eec02ca3..52d01be37 100644 --- a/docs/web/index.html +++ b/docs/web/index.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ
      diff --git a/docs/webhook/index.html b/docs/webhook/index.html index 4096b1ec4..abe10951c 100644 --- a/docs/webhook/index.html +++ b/docs/webhook/index.html @@ -154,9 +154,18 @@
    • Token Lookup
  • +
  • Audit Logs API Client +
  • +
  • SCIM API Client +
  • RTM Client
  • FAQ