diff --git a/.ackrc b/.ackrc deleted file mode 100644 index c3798d9..0000000 --- a/.ackrc +++ /dev/null @@ -1,2 +0,0 @@ ---ignore-dir=venv ---ignore-dir=ringcentral.egg-info diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index a11c4d2..0000000 --- a/.coveragerc +++ /dev/null @@ -1,13 +0,0 @@ -[run] -omit = - *test.py - */test/* - */python?.?/* - *site-packages* - -[report] -exclude_lines = - pragma: no cover - def __repr__ - raise NotImplementedError - if __name__ == .__main__.: \ No newline at end of file diff --git a/.coveralls.yml b/.coveralls.yml deleted file mode 100644 index f7bb8d7..0000000 --- a/.coveralls.yml +++ /dev/null @@ -1,2 +0,0 @@ -parallel: true -service_name: travis-ci \ No newline at end of file diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 0e6ac38..0000000 --- a/.editorconfig +++ /dev/null @@ -1,21 +0,0 @@ -# editorconfig.org -root = true - -[*] -indent_style = space -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = false - -[*.py] -indent_size = 4 - -[*.js] -indent_size = 4 - -[*.{json,yml}] -indent_size = 2 - -[Makefile] -indent_style = tab \ No newline at end of file diff --git a/.env.sample b/.env.sample deleted file mode 100644 index 435e48c..0000000 --- a/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -RINGCENTRAL_SERVER_URL=https://platform.ringcentral.com -RINGCENTRAL_CLIENT_ID= -RINGCENTRAL_CLIENT_SECRET= -RINGCENTRAL_JWT_TOKEN= -RINGCENTRAL_SENDER= -RINGCENTRAL_RECEIVER= diff --git a/.github/workflows/release-github-pages.yml b/.github/workflows/release-github-pages.yml deleted file mode 100644 index 645799a..0000000 --- a/.github/workflows/release-github-pages.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Generate Python Docs - -on: - push: - branches: - - master -permissions: - contents: write -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.11"] - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version}} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - - name: Generate Docs - run: | - #Create virtual environment - python -m venv venv - #Activate virtual environment - source venv/bin/activate - #Install dependencies - python -m pip install python-dotenv - pip install -r requirements.txt - pip install -r requirements-dev.txt - pdoc --output ./docs ./ringcentral - - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs diff --git a/.github/workflows/release-with-tag.yml b/.github/workflows/release-with-tag.yml deleted file mode 100644 index 07c3d47..0000000 --- a/.github/workflows/release-with-tag.yml +++ /dev/null @@ -1,45 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a single version of Python -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python - -name: Release - -on: - push: - tags: - - "*" - -jobs: - release: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.11"] - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version}} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - - name: Test with pytest - run: | - #Create virtual environment - python -m venv venv - #Activate virtual environment - source venv/bin/activate - #Install dependencies - pip install -r requirements.txt - pip install -r requirements-dev.txt - #Run unit tests - coverage run -m unittest discover . --pattern '*test.py' - coverage report - - name: release - env: - TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} - run: | - python3 -m pip install --upgrade build - python3 -m pip install --upgrade twine - python -m build - twine upload dist/* diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml deleted file mode 100644 index 5929035..0000000 --- a/.github/workflows/unit-tests.yml +++ /dev/null @@ -1,33 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a single version of Python -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python - -name: Unit Tests - -on: [push, pull_request] - -jobs: - test: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.11"] - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version}} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - - name: Test with pytest - run: | - #Create virtual environment - python -m venv venv - #Activate virtual environment - source venv/bin/activate - #Install dependencies - pip install -r requirements.txt - pip install -r requirements-dev.txt - #Run unit tests - coverage run -m unittest discover . --pattern '*test.py' - coverage report diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5485569..0000000 --- a/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -*.pyc -.idea -.coverage -.ve* -_cache -credentials.ini -dist -*.egg-info -venv -.env diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index da8c007..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,17 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015 RingCentral, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 66cabd6..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,2 +0,0 @@ -include requirements.txt -include README.md \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 68d2a2a..0000000 --- a/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# RingCentral SDK for Python - -[![Unit Tests](https://github.com/ringcentral/ringcentral-python/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/ringcentral/ringcentral-python/actions/workflows/unit-tests.yml) -[![Coverage Status](https://coveralls.io/repos/github/ringcentral/ringcentral-python/badge.svg?branch=master)](https://coveralls.io/github/ringcentral/ringcentral-python?branch=master) -[![Code Document](https://img.shields.io/badge/pythondoc-reference-blue?branch=master&service=github)](https://ringcentral.github.io/ringcentral-python/ringcentral.html) -[![Twitter](https://img.shields.io/twitter/follow/ringcentraldevs.svg?style=social&label=follow)](https://twitter.com/RingCentralDevs) - -__[RingCentral Developers](https://developer.ringcentral.com/api-products)__ is a cloud communications platform which can be accessed via more than 70 APIs. The platform's main capabilities include technologies that enable: -__[Voice](https://developer.ringcentral.com/api-products/voice), [SMS/MMS](https://developer.ringcentral.com/api-products/sms), [Fax](https://developer.ringcentral.com/api-products/fax), [Glip Team Messaging](https://developer.ringcentral.com/api-products/team-messaging), [Data and Configurations](https://developer.ringcentral.com/api-products/configuration)__. - -## Additional resources - -* [RingCentral API Reference](https://developer.ringcentral.com/api-docs/latest/index.html) - an interactive reference for the RingCentral API that allows developers to make API calls with no code. -* [Document](https://ringcentral.github.io/ringcentral-python/ringcentral.html) - an interactive reference for the SDK code documentation. - - -## Important change logs - -- In version 0.9.0, we removed PubNub support. If you need subscription to events, please use WebSocket instead. Please refer to [demo_subscription.py](./ringcentral/demos/demo_subscription.py) for more information. - - If you still need PubNub support, please use version 0.8.x. - - -## Installation - -This SDK is tested against Python 3.7 so we recommend [installing using it with Python 3.7 or newer](https://www.python.org/downloads/) - -```sh -$ pip3 install ringcentral -``` - -## Usage - -Take a look at a sample code. - -```py -from ringcentral import SDK - -sdk = SDK('CLIENT_ID', 'CLIENT_SECRET', 'SERVER') -platform = sdk.platform() -platform.login(jwt='JWT_TOKEN') -res = platform.get('/account/~/extension/~') -print('User loaded ' + res.json().name) -``` - - -## Subscribing for server events - -Please refer to [demo_subscription.py](./ringcentral/demos/demo_subscription.py) - - -## Send sms -```py -from ringcentral import SDK - -database = [] -database.append({"Customer":"Tyler","Payment":"Due","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Chen","Payment":"Paid","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Anne","Payment":"Paid","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Brown","Payment":"Due","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Peter","Payment":"Due","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"White","Payment":"Paid","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Lisa","Payment":"Paid","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Dan","Payment":"Paid","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Stephanie","Payment":"Due","PhoneNumber":"xxxxxxxxxxx"}) -database.append({"Customer":"Lukas","Payment":"Due","PhoneNumber":"xxxxxxxxxxx"}) - -sdk = SDK('CLIENT_ID', 'CLIENT_SECRET', 'SERVER') -platform = sdk.platform() -platform.login(jwt='JWT_TOKEN') - -def sendSMS(message, number): - params = {'from': {'phoneNumber': 'USERNAME'},'to': [{'phoneNumber': number}],'text': message} - response = platform.post('/restapi/v1.0/account/~/extension/~/sms', params) - print('Sent payment reminder to ' + number) - -def main(): - for i in range(len(database)): - customer = database[i] - if customer['Payment'] is "Due": - sendSMS("Hi " + customer['Customer'] + ". Your payment is due.", customer['PhoneNumber']) - time.sleep(5) - print("Send payment reminder done.") - -if __name__ == '__main__': - main() -``` - - -## dev-notes - -https://github.com/ringcentral/ringcentral-python/blob/master/dev-notes.md diff --git a/dev-notes.md b/dev-notes.md deleted file mode 100644 index 87a0e4d..0000000 --- a/dev-notes.md +++ /dev/null @@ -1,88 +0,0 @@ -## Install Python - -The latest version at the time that I write this doc is 3.11.3 - -## Create virtual environment - -Only do it if you have not done it before: - -``` -python -m venv venv -``` - -## Activate virtual environment - -``` -source venv/bin/activate -``` - -## Install dependencies - -``` -pip install -r requirements.txt -pip install -r requirements-dev.txt -``` - -## Run unit tests - -``` -python -m unittest discover . --pattern '*test.py' -``` -## Run unit tests with coverage report - -``` -coverage run -m unittest discover . --pattern '*test.py' - -coverage report -``` -Coverage Report Supported On -
    -
  1. Python 3.8 through 3.12, and 3.13.0a3 and up.
  2. -
  3. PyPy3 versions 3.8 through 3.10
  4. -
- - - - - -### Note - -Subscription test requires necessary credentials in .env file. Your app will need "Websocket Subscriptions" permission. - -## Run demos - -Copy `.env.sample` to `.env`. - -Edit `.env` to specify credentials - -Run a demo file like this: - -``` -python3 ringcentral/demos/demo_fax.py -``` - - -## Release - -Release will be done by GitHub Action once a tag is pushed to remote repo. - -GitHub Action will run the following commands to release: - -``` -python3 -m pip install --upgrade build -python3 -m pip install --upgrade twine -python3 -m build -twine upload dist/* -``` - -If you want to release it from your laptop, you need to have a ~/.pypirc file like this: - -``` -[distutils] -index-servers = pypi - -[pypi] -repository = https://upload.pypi.org/legacy/ -username = __token__ -password = pypi- -``` diff --git a/index.html b/index.html new file mode 100644 index 0000000..90a373a --- /dev/null +++ b/index.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 876333b..0000000 --- a/mkdocs.yml +++ /dev/null @@ -1,41 +0,0 @@ -site_name: RingCentral Python SDK -theme: - name: material - features: - - navigation.path - - navigation.tabs - - navigation.top - - navigation.expand - - navigation.sections - - search.sharing - - search.highlight - - content.code.copy - - content.action.edit - - content.action.view - - content.code.annotate - palette: - - scheme: default - primary: custom - accent: indigo - toggle: - icon: material/toggle-switch - name: Switch to dark mode - - scheme: slate - primary: black - accent: indigo - toggle: - icon: material/toggle-switch-off-outline - name: Switch to light mode - font: - text: Roboto - code: Roboto Mono - - plugins: - - search: - separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' - - badges - - social - - exclude: - regex: - - '^\.#.*' - - '.*\.\#.*$' \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 1c8fd34..0000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,8 +0,0 @@ -coverage>=4.3.1 -coveralls>=1.1 -discover>=0.4.0 -requests-mock>=1.2.0 -python-dotenv>=1.0.0 -twine -build -pdoc==14.4.0 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index e16c546..0000000 --- a/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -observable==0.3.* -requests==2.* -websockets==15.* diff --git a/ringcentral.html b/ringcentral.html new file mode 100644 index 0000000..7255c74 --- /dev/null +++ b/ringcentral.html @@ -0,0 +1,243 @@ + + + + + + + ringcentral API documentation + + + + + + + + + +
+
+

+ringcentral

+ + + + + + +
1from .sdk import SDK
+
+ + +
+
+ + \ No newline at end of file diff --git a/ringcentral/__init__.py b/ringcentral/__init__.py deleted file mode 100644 index 1f4aed8..0000000 --- a/ringcentral/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .sdk import SDK \ No newline at end of file diff --git a/ringcentral/core.html b/ringcentral/core.html new file mode 100644 index 0000000..859c923 --- /dev/null +++ b/ringcentral/core.html @@ -0,0 +1,564 @@ + + + + + + + ringcentral.core API documentation + + + + + + + + + +
+
+

+ringcentral.core

+ + + + + + +
 1import urllib
+ 2import base64
+ 3import sys
+ 4import re
+ 5
+ 6
+ 7def is_third():
+ 8    return sys.version_info >= (3, 0)
+ 9
+10
+11def urlencode(s):
+12    """
+13        Encodes the given dictionary `s` into a URL-encoded string.
+14
+15        Parameters:
+16            s (dict): A dictionary containing the key-value pairs to be encoded.
+17
+18        Returns:
+19            str: A URL-encoded string representing the input dictionary.
+20
+21        Raises:
+22            Exception: If neither `urllib.urlencode` nor `urllib.parse.urlencode` is available.
+23
+24        Note:
+25            This function checks for the presence of `urllib.urlencode` and `urllib.parse.urlencode`
+26            to ensure compatibility across Python 2 and Python 3.
+27    """
+28    if hasattr(urllib, 'urlencode'):
+29        return urllib.urlencode(s)
+30    elif hasattr(urllib, 'parse'):
+31        return urllib.parse.urlencode(s)
+32    else:
+33        raise Exception("No urlencode")
+34
+35
+36def iterator(thing):
+37    """
+38    Returns an iterator over key-value pairs of `thing`.
+39
+40    If `thing` has an `iteritems` method, it is used; otherwise, `thing.items()` is iterated over.
+41
+42    Parameters:
+43        thing: An iterable object.
+44
+45    Returns:
+46        iterator: An iterator over the key-value pairs of `thing`.
+47    """
+48    return thing.iteritems() if hasattr(thing, 'iteritems') else iter(thing.items())
+49
+50
+51def base64encode(s):
+52    """
+53    Encodes the input string `s` into base64 format.
+54
+55    Parameters:
+56        s (str): The string to be encoded.
+57
+58    Returns:
+59        str: The base64 encoded string.
+60
+61    """
+62    # Use Python 3 compatible base64 encoding if detected, otherwise use default encoding
+63    if is_third():
+64        return str(base64.b64encode(bytes(s, 'utf8')), 'utf8')
+65    else:
+66        return base64.b64encode(s)
+67
+68
+69def tostr(s):
+70    if is_third():
+71        return str(s, 'utf8')
+72    else:
+73        return str(s)
+74
+75
+76def clean_decrypted(s):
+77    """
+78    Cleans the decrypted string `s` by removing specific control characters.
+79
+80    Parameters:
+81        s (str): The decrypted string to be cleaned.
+82
+83    Returns:
+84        str: The cleaned decrypted string.
+85    """
+86    if is_third():
+87        return re.sub(r"[\u0001-\u0010]", '', s).strip()
+88    else:
+89        return s.replace('\x05', '')
+
+ + +
+
+ +
+ + def + is_third(): + + + +
+ +
8def is_third():
+9    return sys.version_info >= (3, 0)
+
+ + + + +
+
+ +
+ + def + urlencode(s): + + + +
+ +
12def urlencode(s):
+13    """
+14        Encodes the given dictionary `s` into a URL-encoded string.
+15
+16        Parameters:
+17            s (dict): A dictionary containing the key-value pairs to be encoded.
+18
+19        Returns:
+20            str: A URL-encoded string representing the input dictionary.
+21
+22        Raises:
+23            Exception: If neither `urllib.urlencode` nor `urllib.parse.urlencode` is available.
+24
+25        Note:
+26            This function checks for the presence of `urllib.urlencode` and `urllib.parse.urlencode`
+27            to ensure compatibility across Python 2 and Python 3.
+28    """
+29    if hasattr(urllib, 'urlencode'):
+30        return urllib.urlencode(s)
+31    elif hasattr(urllib, 'parse'):
+32        return urllib.parse.urlencode(s)
+33    else:
+34        raise Exception("No urlencode")
+
+ + +

Encodes the given dictionary s into a URL-encoded string.

+ +

Parameters: + s (dict): A dictionary containing the key-value pairs to be encoded.

+ +

Returns: + str: A URL-encoded string representing the input dictionary.

+ +

Raises: + Exception: If neither urllib.urlencode nor urllib.parse.urlencode is available.

+ +

Note: + This function checks for the presence of urllib.urlencode and urllib.parse.urlencode + to ensure compatibility across Python 2 and Python 3.

+
+ + +
+
+ +
+ + def + iterator(thing): + + + +
+ +
37def iterator(thing):
+38    """
+39    Returns an iterator over key-value pairs of `thing`.
+40
+41    If `thing` has an `iteritems` method, it is used; otherwise, `thing.items()` is iterated over.
+42
+43    Parameters:
+44        thing: An iterable object.
+45
+46    Returns:
+47        iterator: An iterator over the key-value pairs of `thing`.
+48    """
+49    return thing.iteritems() if hasattr(thing, 'iteritems') else iter(thing.items())
+
+ + +

Returns an iterator over key-value pairs of thing.

+ +

If thing has an iteritems method, it is used; otherwise, thing.items() is iterated over.

+ +

Parameters: + thing: An iterable object.

+ +

Returns: + iterator: An iterator over the key-value pairs of thing.

+
+ + +
+
+ +
+ + def + base64encode(s): + + + +
+ +
52def base64encode(s):
+53    """
+54    Encodes the input string `s` into base64 format.
+55
+56    Parameters:
+57        s (str): The string to be encoded.
+58
+59    Returns:
+60        str: The base64 encoded string.
+61
+62    """
+63    # Use Python 3 compatible base64 encoding if detected, otherwise use default encoding
+64    if is_third():
+65        return str(base64.b64encode(bytes(s, 'utf8')), 'utf8')
+66    else:
+67        return base64.b64encode(s)
+
+ + +

Encodes the input string s into base64 format.

+ +

Parameters: + s (str): The string to be encoded.

+ +

Returns: + str: The base64 encoded string.

+
+ + +
+
+ +
+ + def + tostr(s): + + + +
+ +
70def tostr(s):
+71    if is_third():
+72        return str(s, 'utf8')
+73    else:
+74        return str(s)
+
+ + + + +
+
+ +
+ + def + clean_decrypted(s): + + + +
+ +
77def clean_decrypted(s):
+78    """
+79    Cleans the decrypted string `s` by removing specific control characters.
+80
+81    Parameters:
+82        s (str): The decrypted string to be cleaned.
+83
+84    Returns:
+85        str: The cleaned decrypted string.
+86    """
+87    if is_third():
+88        return re.sub(r"[\u0001-\u0010]", '', s).strip()
+89    else:
+90        return s.replace('\x05', '')
+
+ + +

Cleans the decrypted string s by removing specific control characters.

+ +

Parameters: + s (str): The decrypted string to be cleaned.

+ +

Returns: + str: The cleaned decrypted string.

+
+ + +
+
+ + \ No newline at end of file diff --git a/ringcentral/core/__init__.py b/ringcentral/core/__init__.py deleted file mode 100644 index 031cfae..0000000 --- a/ringcentral/core/__init__.py +++ /dev/null @@ -1,89 +0,0 @@ -import urllib -import base64 -import sys -import re - - -def is_third(): - return sys.version_info >= (3, 0) - - -def urlencode(s): - """ - Encodes the given dictionary `s` into a URL-encoded string. - - Parameters: - s (dict): A dictionary containing the key-value pairs to be encoded. - - Returns: - str: A URL-encoded string representing the input dictionary. - - Raises: - Exception: If neither `urllib.urlencode` nor `urllib.parse.urlencode` is available. - - Note: - This function checks for the presence of `urllib.urlencode` and `urllib.parse.urlencode` - to ensure compatibility across Python 2 and Python 3. - """ - if hasattr(urllib, 'urlencode'): - return urllib.urlencode(s) - elif hasattr(urllib, 'parse'): - return urllib.parse.urlencode(s) - else: - raise Exception("No urlencode") - - -def iterator(thing): - """ - Returns an iterator over key-value pairs of `thing`. - - If `thing` has an `iteritems` method, it is used; otherwise, `thing.items()` is iterated over. - - Parameters: - thing: An iterable object. - - Returns: - iterator: An iterator over the key-value pairs of `thing`. - """ - return thing.iteritems() if hasattr(thing, 'iteritems') else iter(thing.items()) - - -def base64encode(s): - """ - Encodes the input string `s` into base64 format. - - Parameters: - s (str): The string to be encoded. - - Returns: - str: The base64 encoded string. - - """ - # Use Python 3 compatible base64 encoding if detected, otherwise use default encoding - if is_third(): - return str(base64.b64encode(bytes(s, 'utf8')), 'utf8') - else: - return base64.b64encode(s) - - -def tostr(s): - if is_third(): - return str(s, 'utf8') - else: - return str(s) - - -def clean_decrypted(s): - """ - Cleans the decrypted string `s` by removing specific control characters. - - Parameters: - s (str): The decrypted string to be cleaned. - - Returns: - str: The cleaned decrypted string. - """ - if is_third(): - return re.sub(r"[\u0001-\u0010]", '', s).strip() - else: - return s.replace('\x05', '') \ No newline at end of file diff --git a/ringcentral/demos/demo.py b/ringcentral/demos/demo.py deleted file mode 100755 index 9533d7c..0000000 --- a/ringcentral/demos/demo.py +++ /dev/null @@ -1,34 +0,0 @@ -from __future__ import print_function -from dotenv import dotenv_values -from ringcentral.http.api_exception import ApiException -from ringcentral import SDK - - -env = dotenv_values(".env") -def main(): - sdk = SDK(env['RINGCENTRAL_CLIENT_ID'], env['RINGCENTRAL_CLIENT_SECRET'], env['RINGCENTRAL_SERVER_URL']) - platform = sdk.platform() - platform.login(jwt = env['RINGCENTRAL_JWT_TOKEN']) - - # Simple GET - response = platform.get('/account/~/extension/~') - user = response.json() - user_id = str(user.id) - print('User loaded ' + user.name + ' (' + user_id + ')') - print('Headers ' + str(response.response().headers)) - - print(type(response.response()._content)) - - # Multipart response - try: - multipart_response = platform.get('/account/~/extension/' + user_id + ',' + user_id + '/presence').multipart() - print('Multipart 1\n' + str(multipart_response[0].json_dict())) - print('Multipart 2\n' + str(multipart_response[1].json_dict())) - except ApiException as e: - print('Cannot load multipart') - print('URL ' + e.api_response().request().url) - print('Response' + str(e.api_response().json())) - - -if __name__ == '__main__': - main() diff --git a/ringcentral/demos/demo_cache.py b/ringcentral/demos/demo_cache.py deleted file mode 100755 index c075f78..0000000 --- a/ringcentral/demos/demo_cache.py +++ /dev/null @@ -1,53 +0,0 @@ -import os -import json -from ringcentral import SDK -from dotenv import dotenv_values - -cache_dir = os.path.join(os.getcwd(), '_cache') -file_path = os.path.join(cache_dir, 'platform.json') -env = dotenv_values(".env") - -def get_file_cache(): - try: - f = open(file_path, 'r') - data = json.load(f) - f.close() - return data if data else {} - except IOError: - return {} - - -def set_file_cache(cache): - if not os.path.isdir(cache_dir): - os.mkdir(cache_dir) - f = open(file_path, 'w') - json.dump(cache, f, indent=4) - f.close() - - -def main(): - cache = get_file_cache() - - # Create SDK instance - sdk = SDK(env['RINGCENTRAL_CLIENT_ID'], env['RINGCENTRAL_CLIENT_SECRET'], env['RINGCENTRAL_SERVER_URL']) - platform = sdk.platform() - - # Set cached authentication data - platform.auth().set_data(cache) - - try: - platform.is_authorized() - print('Authorized already by cached data') - except Exception as e: - sdk = SDK(env['RINGCENTRAL_CLIENT_ID'], env['RINGCENTRAL_CLIENT_SECRET'], env['RINGCENTRAL_SERVER_URL']) - print('Authorized by credentials') - - # Perform refresh by force - platform.refresh() - print('Refreshed') - - set_file_cache(platform.auth().data()) - print("Authentication data has been cached") - -if __name__ == '__main__': - main() diff --git a/ringcentral/demos/demo_fax.py b/ringcentral/demos/demo_fax.py deleted file mode 100644 index ac4a16f..0000000 --- a/ringcentral/demos/demo_fax.py +++ /dev/null @@ -1,49 +0,0 @@ -import os,time,ssl -from dotenv import load_dotenv -import certifi -import urllib.request -import sys -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) # Add the project root to sys.path -from ringcentral import SDK - -load_dotenv() - -# Send a high resolution fax message to a recipient number -def send_fax(): - builder = rcsdk.create_multipart_builder() - builder.set_body({ - 'to': [{ 'phoneNumber': os.environ.get('RINGCENTRAL_RECEIVER') }], - 'faxResolution': "High", - 'coverPageText': "This is a demo Fax page from Python" - }) - attachment = ( - 'test.png', - urllib.request.urlopen('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png', - context=ssl.create_default_context(cafile=certifi.where())).read(), - 'image/png' - ) - builder.add(attachment) - request = builder.request('/restapi/v1.0/account/~/extension/~/fax') - resp = platform.send_request(request) - jsonObj = resp.json() - print ("Fax sent. Message id: " + str(jsonObj.id)) - check_fax_message_status(jsonObj.id) - -# Check the sending message status until it's no longer in the queued status -def check_fax_message_status(messageId): - endpoint = "/restapi/v1.0/account/~/extension/~/message-store/" + str(messageId) - resp = platform.get(endpoint) - jsonObj = resp.json() - print ("Message status: " + jsonObj.messageStatus) - if jsonObj.messageStatus == "Queued": - time.sleep(10) - check_fax_message_status(jsonObj.id) - -# Instantiate the SDK and get the platform instance -rcsdk = SDK(os.environ.get('RINGCENTRAL_CLIENT_ID'), - os.environ.get('RINGCENTRAL_CLIENT_SECRET'), - os.environ.get('RINGCENTRAL_SERVER_URL') ) -platform = rcsdk.platform() -platform.login(jwt=os.environ.get('RINGCENTRAL_JWT_TOKEN')) - -send_fax() diff --git a/ringcentral/demos/demo_mms.py b/ringcentral/demos/demo_mms.py deleted file mode 100755 index e32d0be..0000000 --- a/ringcentral/demos/demo_mms.py +++ /dev/null @@ -1,33 +0,0 @@ -import ssl -import certifi -import urllib.request -from dotenv import dotenv_values -from ringcentral import SDK - -env = dotenv_values(".env") - -def main(): - sdk = SDK(env['RINGCENTRAL_CLIENT_ID'], env['RINGCENTRAL_CLIENT_SECRET'], env['RINGCENTRAL_SERVER_URL']) - platform = sdk.platform() - platform.login(jwt = env['RINGCENTRAL_JWT_TOKEN']) - - builder = sdk.create_multipart_builder() - builder.set_body({ - 'from': {'phoneNumber': env['RINGCENTRAL_SENDER']}, - 'to': [{'phoneNumber': env['RINGCENTRAL_RECEIVER']}], - 'text': 'MMS from Python' # this is optional - }) - attachment = ( - 'test.png', - urllib.request.urlopen('https://developers.ringcentral.com/assets/images/ico_case_crm.png', - context=ssl.create_default_context(cafile=certifi.where())).read(), - 'image/png' - ) - builder.add(attachment) - - request = builder.request('/account/~/extension/~/sms') - response = platform.send_request(request) - print('Sent MMS: ' + response.json().uri) - -if __name__ == '__main__': - main() diff --git a/ringcentral/demos/demo_multipart_mixed.py b/ringcentral/demos/demo_multipart_mixed.py deleted file mode 100755 index 43d8cd0..0000000 --- a/ringcentral/demos/demo_multipart_mixed.py +++ /dev/null @@ -1,38 +0,0 @@ -import urllib -from dotenv import dotenv_values -from ringcentral import SDK - -env = dotenv_values(".env") -def main(): - sdk = SDK(env['RINGCENTRAL_CLIENT_ID'], env['RINGCENTRAL_CLIENT_SECRET'], env['RINGCENTRAL_SERVER_URL']) - platform = sdk.platform() - platform.login(jwt = env['RINGCENTRAL_JWT_TOKEN']) - - - # Step 1. Get an answering rule ID - - answering_rules = platform.get('/account/~/extension/~/answering-rule').json().records - last_answer_rule_id = answering_rules[-1].id - print('Answering rule ID: ' + last_answer_rule_id) - - # Step 2. Update greeting audio file - - binary = ( - 'test.mp3', - urllib.urlopen('https://freesound.org/data/previews/85/85785_14771-lq.mp3').read(), - 'audio/mpeg' - ) - builder = sdk.create_multipart_builder() - builder.set_body({ - 'type': 'Voicemail', - 'answeringRule': { 'id': last_answer_rule_id } - }) - builder.add(binary) - builder.set_multipart_mixed(True) - request = builder.request('/account/~/extension/~/greeting') - response = platform.send_request(request) - print('Updated greeting audio: ' + response.json().uri) - - -if __name__ == '__main__': - main() diff --git a/ringcentral/demos/demo_platform.py b/ringcentral/demos/demo_platform.py deleted file mode 100644 index 30f22a4..0000000 --- a/ringcentral/demos/demo_platform.py +++ /dev/null @@ -1,55 +0,0 @@ -from ringcentral import SDK -from dotenv import dotenv_values, find_dotenv - -env = dotenv_values(find_dotenv()) - -def create_delete_bridge(platform): - body = { - "name": "Weekly Meeting with Sushil", - "type": "Instant", - "security": { - "passwordProtected": True, - "password": "Wq123ygs15", - "noGuests": False, - "sameAccount": False, - "e2ee": False - }, - "preferences": { - "join": { - "audioMuted": False, - "videoMuted": False, - "waitingRoomRequired": "Nobody", - "pstn": { - "promptAnnouncement": True, - "promptParticipants": True - } - }, - "playTones": "Off", - "musicOnHold": True, - "joinBeforeHost": True, - "screenSharing": True, - "recordingsMode": "User", - "transcriptionsMode": "User", - "recordings": { - "everyoneCanControl": { - "enabled": True - }, - "autoShared": { - "enabled": True - } - }, - "allowEveryoneTranscribeMeetings": True - } - } - create_respone = platform.post(url='/rcvideo/v2/account/~/extension/~/bridges', body=body) - print("Id = "+create_respone.json().id) - print("Meeting Name = "+create_respone.json().name) - platform.delete(url="/rcvideo/v2/bridges/" + str(create_respone.json().id)) - -def main(): - sdk = SDK(env['RINGCENTRAL_CLIENT_ID'], env['RINGCENTRAL_CLIENT_SECRET'], env['RINGCENTRAL_SERVER_URL']) - platform = sdk.platform() - platform.login(jwt = env['RINGCENTRAL_JWT_TOKEN']) - create_delete_bridge(platform) -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/ringcentral/demos/demo_sms.py b/ringcentral/demos/demo_sms.py deleted file mode 100644 index 7e8537e..0000000 --- a/ringcentral/demos/demo_sms.py +++ /dev/null @@ -1,35 +0,0 @@ -import os -import sys - -sys.path.append( - os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) -) # Add the project root to sys.path -from dotenv import dotenv_values - -from ringcentral import SDK - -env = dotenv_values(".env") - - -def main(): - sdk = SDK( - env["RINGCENTRAL_CLIENT_ID"], - env["RINGCENTRAL_CLIENT_SECRET"], - env["RINGCENTRAL_SERVER_URL"], - ) - platform = sdk.platform() - platform.login(jwt=env["RINGCENTRAL_JWT_TOKEN"]) - - params = { - "from": {"phoneNumber": env["RINGCENTRAL_SENDER"]}, - "to": [{"phoneNumber": env["RINGCENTRAL_RECEIVER"]}], - "text": "SMS message", - } - response = platform.post("/restapi/v1.0/account/~/extension/~/sms", params) - - print("Sent SMS: " + response.json().uri) - print(response.response().status_code) - - -if __name__ == "__main__": - main() diff --git a/ringcentral/demos/demo_subscription.py b/ringcentral/demos/demo_subscription.py deleted file mode 100755 index a39a08d..0000000 --- a/ringcentral/demos/demo_subscription.py +++ /dev/null @@ -1,52 +0,0 @@ -from dotenv import load_dotenv -import asyncio -import sys -import os -import json -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) # Add the project root to sys.path -from ringcentral.websocket.events import WebSocketEvents -from ringcentral import SDK - -def on_notification(message): - print("\n Subscription notification:\n") - print(message) - -def on_sub_created(sub): - print("\n Subscription created:\n") - print(sub.get_subscription_info()) - print("\n Please go and change your user status \n") - -def on_ws_created(web_socket_client): - print("\n New WebSocket connection created:") - print(web_socket_client.get_connection_info()) - -def on_message(message): - print("\n WebSocket message:\n") - print(json.loads(message)) - -async def main(): - load_dotenv(override=True) - sdk = SDK( - os.environ['RINGCENTRAL_CLIENT_ID'], - os.environ["RINGCENTRAL_CLIENT_SECRET"], - os.environ["RINGCENTRAL_SERVER_URL"], - ) - platform = sdk.platform() - platform.login(jwt=os.environ["RINGCENTRAL_JWT_TOKEN"]) - - try: - web_socket_client = sdk.create_web_socket_client() - web_socket_client.on(WebSocketEvents.receiveMessage, on_message) - web_socket_client.on(WebSocketEvents.connectionCreated, on_ws_created) - web_socket_client.on(WebSocketEvents.subscriptionCreated, on_sub_created) - web_socket_client.on(WebSocketEvents.receiveSubscriptionNotification, on_notification) - await asyncio.gather( - web_socket_client.create_new_connection(), - web_socket_client.create_subscription(["/restapi/v1.0/account/~/extension/~/presence"]) - ) - except KeyboardInterrupt: - print("Stopped by User") - - -if __name__ == "__main__": - asyncio.get_event_loop().run_until_complete(main()) diff --git a/ringcentral/demos/demo_web_socket.py b/ringcentral/demos/demo_web_socket.py deleted file mode 100644 index 2925ff2..0000000 --- a/ringcentral/demos/demo_web_socket.py +++ /dev/null @@ -1,64 +0,0 @@ -from dotenv import load_dotenv -import json -import uuid -import os -import asyncio -import sys -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) # Add the project root to sys.path -from ringcentral import SDK -from ringcentral.websocket.events import WebSocketEvents - - -def on_message(message): - print("\n WebSocket message:\n") - print(json.loads(message)) - if len(json.loads(message)) > 1: - print("\n User email:\n") - print(json.loads(message)[1]["contact"]["email"]) - - -def on_created(web_socket_client): - print("\n New WebSocket connection created:") - print(web_socket_client.get_connection_info()) - - -async def send_message(web_socket_client): - # Send API call to RingCentral WebSocket Gateway, just like using HTTPS Gateway - messageId = str(uuid.uuid4()) - message = [ - { - "type": "ClientRequest", - "messageId": messageId, - "method": "GET", - "path": "/restapi/v1.0/account/~/extension/~", - } - ] - await web_socket_client.send_message(message) - - -async def main(): - try: - load_dotenv(override=True) - sdk = SDK( - os.environ["RINGCENTRAL_CLIENT_ID"], - os.environ["RINGCENTRAL_CLIENT_SECRET"], - os.environ["RINGCENTRAL_SERVER_URL"], - ) - platform = sdk.platform() - platform.login(jwt=os.environ["RINGCENTRAL_JWT_TOKEN"]) - - # Create new websocket connection - web_socket_client = sdk.create_web_socket_client() - web_socket_client.on(WebSocketEvents.connectionCreated, on_created) - web_socket_client.on(WebSocketEvents.receiveMessage, on_message) - await asyncio.gather( - web_socket_client.create_new_connection(), - send_message(web_socket_client) - ) - - except KeyboardInterrupt: - print("Stopped by User") - - -if __name__ == "__main__": - asyncio.get_event_loop().run_until_complete(main()) diff --git a/ringcentral/http.html b/ringcentral/http.html new file mode 100644 index 0000000..1e41227 --- /dev/null +++ b/ringcentral/http.html @@ -0,0 +1,253 @@ + + + + + + + ringcentral.http API documentation + + + + + + + + + +
+
+

+ringcentral.http

+ + + + + + +
1from .client import Client
+2from .api_response import ApiResponse
+3from .api_exception import ApiException
+4from .multipart_builder import MultipartBuilder
+
+ + +
+
+ + \ No newline at end of file diff --git a/ringcentral/http/__init__.py b/ringcentral/http/__init__.py deleted file mode 100644 index 486e060..0000000 --- a/ringcentral/http/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .client import Client -from .api_response import ApiResponse -from .api_exception import ApiException -from .multipart_builder import MultipartBuilder diff --git a/ringcentral/http/api_exception.html b/ringcentral/http/api_exception.html new file mode 100644 index 0000000..7366820 --- /dev/null +++ b/ringcentral/http/api_exception.html @@ -0,0 +1,371 @@ + + + + + + + ringcentral.http.api_exception API documentation + + + + + + + + + +
+
+

+ringcentral.http.api_exception

+ + + + + + +
 1class ApiException(Exception):
+ 2    def __init__(self, api_response, previous=None):
+ 3        self.__apiResponse = api_response
+ 4
+ 5        message = previous.message if previous and hasattr(previous, 'message') else 'Unknown error'
+ 6        status = 0  # previous.status if previous else 0
+ 7
+ 8        if api_response:
+ 9
+10            if api_response.error():
+11                message = api_response.error()
+12
+13            if api_response.response() and api_response.response().status_code:
+14                status = api_response.response().status_code
+15
+16        super(ApiException, self).__init__(message)
+17
+18    def api_response(self):
+19        return self.__apiResponse
+
+ + +
+
+ +
+ + class + ApiException(builtins.Exception): + + + +
+ +
 3class ApiException(Exception):
+ 4    def __init__(self, api_response, previous=None):
+ 5        self.__apiResponse = api_response
+ 6
+ 7        message = previous.message if previous and hasattr(previous, 'message') else 'Unknown error'
+ 8        status = 0  # previous.status if previous else 0
+ 9
+10        if api_response:
+11
+12            if api_response.error():
+13                message = api_response.error()
+14
+15            if api_response.response() and api_response.response().status_code:
+16                status = api_response.response().status_code
+17
+18        super(ApiException, self).__init__(message)
+19
+20    def api_response(self):
+21        return self.__apiResponse
+
+ + +

Common base class for all non-exit exceptions.

+
+ + +
+ +
+ + ApiException(api_response, previous=None) + + + +
+ +
 4    def __init__(self, api_response, previous=None):
+ 5        self.__apiResponse = api_response
+ 6
+ 7        message = previous.message if previous and hasattr(previous, 'message') else 'Unknown error'
+ 8        status = 0  # previous.status if previous else 0
+ 9
+10        if api_response:
+11
+12            if api_response.error():
+13                message = api_response.error()
+14
+15            if api_response.response() and api_response.response().status_code:
+16                status = api_response.response().status_code
+17
+18        super(ApiException, self).__init__(message)
+
+ + + + +
+
+ +
+ + def + api_response(self): + + + +
+ +
20    def api_response(self):
+21        return self.__apiResponse
+
+ + + + +
+
+
Inherited Members
+
+
builtins.BaseException
+
with_traceback
+
add_note
+
args
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/http/api_exception.py b/ringcentral/http/api_exception.py deleted file mode 100644 index 1049a5e..0000000 --- a/ringcentral/http/api_exception.py +++ /dev/null @@ -1,20 +0,0 @@ - -class ApiException(Exception): - def __init__(self, api_response, previous=None): - self.__apiResponse = api_response - - message = previous.message if previous and hasattr(previous, 'message') else 'Unknown error' - status = 0 # previous.status if previous else 0 - - if api_response: - - if api_response.error(): - message = api_response.error() - - if api_response.response() and api_response.response().status_code: - status = api_response.response().status_code - - super(ApiException, self).__init__(message) - - def api_response(self): - return self.__apiResponse \ No newline at end of file diff --git a/ringcentral/http/api_exception_test.html b/ringcentral/http/api_exception_test.html new file mode 100644 index 0000000..5d43381 --- /dev/null +++ b/ringcentral/http/api_exception_test.html @@ -0,0 +1,478 @@ + + + + + + + ringcentral.http.api_exception_test API documentation + + + + + + + + + +
+
+

+ringcentral.http.api_exception_test

+ + + + + + +
 1import unittest
+ 2
+ 3from ..test import TestCase
+ 4from .api_response import ApiResponse
+ 5from .api_response_test import create_response
+ 6from .api_exception import ApiException
+ 7
+ 8json_headers = {'Content-Type': 'application/json'}
+ 9
+10
+11class TestApiException(TestCase):
+12    def test_simple(self):
+13        api_response = ApiResponse(response=create_response('{"error_description": "foo"}', 400, json_headers))
+14        ex = ApiException(api_response)
+15        self.assertIn('foo', str(ex))
+16
+17        api_response = ApiResponse(response=create_response('{"description": "foo"}', 400, json_headers))
+18        ex = ApiException(api_response)
+19        self.assertIn('foo', str(ex))
+20
+21        api_response = ApiResponse(response=create_response('{"message": "foo"}', 400, json_headers))
+22        ex = ApiException(api_response)
+23        self.assertIn('foo', str(ex))
+24
+25
+26if __name__ == '__main__':
+27    unittest.main()
+
+ + +
+
+
+ json_headers = +{'Content-Type': 'application/json'} + + +
+ + + + +
+
+ +
+ + class + TestApiException(ringcentral.test.testcase.TestCase): + + + +
+ +
12class TestApiException(TestCase):
+13    def test_simple(self):
+14        api_response = ApiResponse(response=create_response('{"error_description": "foo"}', 400, json_headers))
+15        ex = ApiException(api_response)
+16        self.assertIn('foo', str(ex))
+17
+18        api_response = ApiResponse(response=create_response('{"description": "foo"}', 400, json_headers))
+19        ex = ApiException(api_response)
+20        self.assertIn('foo', str(ex))
+21
+22        api_response = ApiResponse(response=create_response('{"message": "foo"}', 400, json_headers))
+23        ex = ApiException(api_response)
+24        self.assertIn('foo', str(ex))
+
+ + +

A class whose instances are single test cases.

+ +

By default, the test code itself should be placed in a method named +'runTest'.

+ +

If the fixture may be used for many test cases, create as +many test methods as are needed. When instantiating such a TestCase +subclass, specify in the constructor arguments the name of the test method +that the instance is to execute.

+ +

Test authors should subclass TestCase for their own tests. Construction +and deconstruction of the test's environment ('fixture') can be +implemented by overriding the 'setUp' and 'tearDown' methods respectively.

+ +

If it is necessary to override the __init__ method, the base class +__init__ method must always be called. It is important that subclasses +should not change the signature of their __init__ method, since instances +of the classes are instantiated automatically by parts of the framework +in order to be run.

+ +

When subclassing TestCase, you can set these attributes:

+ +
    +
  • failureException: determines which exception will be raised when +the instance's assertion methods fail; test methods raising this +exception will be deemed to have 'failed' rather than 'errored'.
  • +
  • longMessage: determines whether long messages (including repr of +objects used in assert methods) will be printed on failure in addition +to any explicit message passed.
  • +
  • maxDiff: sets the maximum length of a diff in failure messages +by assert methods using difflib. It is looked up as an instance +attribute so can be configured by individual tests if required.
  • +
+
+ + +
+ +
+ + def + test_simple(self): + + + +
+ +
13    def test_simple(self):
+14        api_response = ApiResponse(response=create_response('{"error_description": "foo"}', 400, json_headers))
+15        ex = ApiException(api_response)
+16        self.assertIn('foo', str(ex))
+17
+18        api_response = ApiResponse(response=create_response('{"description": "foo"}', 400, json_headers))
+19        ex = ApiException(api_response)
+20        self.assertIn('foo', str(ex))
+21
+22        api_response = ApiResponse(response=create_response('{"message": "foo"}', 400, json_headers))
+23        ex = ApiException(api_response)
+24        self.assertIn('foo', str(ex))
+
+ + + + +
+
+
Inherited Members
+
+ +
unittest.case.TestCase
+
failureException
+
longMessage
+
maxDiff
+
addTypeEqualityFunc
+
addCleanup
+
enterContext
+
addClassCleanup
+
enterClassContext
+
setUp
+
tearDown
+
setUpClass
+
tearDownClass
+
countTestCases
+
defaultTestResult
+
shortDescription
+
id
+
subTest
+
run
+
doCleanups
+
doClassCleanups
+
debug
+
skipTest
+
fail
+
assertFalse
+
assertTrue
+
assertRaises
+
assertWarns
+
assertLogs
+
assertNoLogs
+
assertEqual
+
assertNotEqual
+
assertAlmostEqual
+
assertNotAlmostEqual
+
assertSequenceEqual
+
assertListEqual
+
assertTupleEqual
+
assertSetEqual
+
assertIn
+
assertNotIn
+
assertIs
+
assertIsNot
+
assertDictEqual
+
assertDictContainsSubset
+
assertCountEqual
+
assertMultiLineEqual
+
assertLess
+
assertLessEqual
+
assertGreater
+
assertGreaterEqual
+
assertIsNone
+
assertIsNotNone
+
assertIsInstance
+
assertNotIsInstance
+
assertRaisesRegex
+
assertWarnsRegex
+
assertRegex
+
assertNotRegex
+
failUnlessRaises
+
failIf
+
assertRaisesRegexp
+
assertRegexpMatches
+
assertNotRegexpMatches
+
failUnlessEqual
+
assertEquals
+
failIfEqual
+
assertNotEquals
+
failUnlessAlmostEqual
+
assertAlmostEquals
+
failIfAlmostEqual
+
assertNotAlmostEquals
+
failUnless
+
assert_
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/http/api_exception_test.py b/ringcentral/http/api_exception_test.py deleted file mode 100644 index 51a7666..0000000 --- a/ringcentral/http/api_exception_test.py +++ /dev/null @@ -1,27 +0,0 @@ -import unittest - -from ..test import TestCase -from .api_response import ApiResponse -from .api_response_test import create_response -from .api_exception import ApiException - -json_headers = {'Content-Type': 'application/json'} - - -class TestApiException(TestCase): - def test_simple(self): - api_response = ApiResponse(response=create_response('{"error_description": "foo"}', 400, json_headers)) - ex = ApiException(api_response) - self.assertIn('foo', str(ex)) - - api_response = ApiResponse(response=create_response('{"description": "foo"}', 400, json_headers)) - ex = ApiException(api_response) - self.assertIn('foo', str(ex)) - - api_response = ApiResponse(response=create_response('{"message": "foo"}', 400, json_headers)) - ex = ApiException(api_response) - self.assertIn('foo', str(ex)) - - -if __name__ == '__main__': - unittest.main() diff --git a/ringcentral/http/api_response.html b/ringcentral/http/api_response.html new file mode 100644 index 0000000..9a58c85 --- /dev/null +++ b/ringcentral/http/api_response.html @@ -0,0 +1,816 @@ + + + + + + + ringcentral.http.api_response API documentation + + + + + + + + + +
+
+

+ringcentral.http.api_response

+ + + + + + +
  1# !/usr/bin/env python
+  2# encoding: utf-8
+  3import json
+  4import requests
+  5from email.feedparser import FeedParser
+  6from .json_object import *
+  7from ..core import is_third
+  8
+  9def get_prepared_request_details(request):
+ 10    if request is None:
+ 11        return "The request is None."
+ 12    
+ 13    try:
+ 14        method = request.method or "Unknown Method"
+ 15        url = request.url or "Unknown URL"
+ 16        headers = dict(request.headers) if request.headers else {}
+ 17        details = [
+ 18            f"Method: {method}",
+ 19            f"URL: {url}",
+ 20            f"Headers: {headers}"
+ 21        ]
+ 22        return "\n".join(details)
+ 23    except Exception as e:
+ 24        return f"Error generating request details: {str(e)}"
+ 25
+ 26
+ 27class ApiResponse:
+ 28    def __init__(self, request=None, response=None):
+ 29        self._request = request
+ 30        self._response = response
+ 31
+ 32    def ok(self):
+ 33        return self._response.ok
+ 34
+ 35    def raw(self):
+ 36        return self._response.raw
+ 37
+ 38    def body(self):
+ 39        return self._response.content
+ 40
+ 41    def text(self):
+ 42        return self._response.text
+ 43
+ 44    def json_dict(self):
+ 45        if not self._is_content_type('application/json'):
+ 46            raise Exception('Response is not JSON')
+ 47
+ 48        return self._response.json()
+ 49
+ 50    def json(self):
+ 51        return unfold(self._response.json())
+ 52
+ 53    def multipart(self):
+ 54        if not self._is_content_type('multipart/mixed'):
+ 55            raise Exception('Response is not Batch (Multipart)')
+ 56
+ 57        parts = self._break_into_parts()
+ 58
+ 59        if len(parts) < 1:
+ 60            raise Exception("Malformed Batch Response (not enough parts)")  # sic! not specific extension
+ 61
+ 62        statuses = json.loads(parts[0].get_payload())
+ 63
+ 64        if len(statuses["response"]) != len(parts) - 1:
+ 65            raise Exception("Malformed Batch Response (not-consistent number of parts)")
+ 66
+ 67        responses = []
+ 68
+ 69        for response, payload in zip(statuses["response"], parts[1:]):
+ 70            res = create_response(payload, response['status'])
+ 71
+ 72            responses.append(ApiResponse(response=res))
+ 73
+ 74        return responses
+ 75
+ 76    def error(self):
+ 77
+ 78        if self._response is None or self.ok():
+ 79            return None
+ 80
+ 81        message = 'HTTP ' + str(self._response.status_code) + ' ' + self._response.text
+ 82
+ 83        if self._request is not None:
+ 84            message = message + ' (request details: ' + get_prepared_request_details(self._request) + ')'
+ 85
+ 86        return message
+ 87
+ 88    def request(self):
+ 89        return self._request
+ 90
+ 91    def response(self):
+ 92        return self._response
+ 93
+ 94    def _is_content_type(self, content_type):
+ 95        return self._get_content_type().lower().find(content_type) >= 0
+ 96
+ 97    def _get_content_type(self):
+ 98        return self._response.headers.get('Content-Type') or ''
+ 99
+100    def _break_into_parts(self):
+101        p = FeedParser()
+102
+103        for h in self._response.headers:
+104            p.feed(h + ':' + self._response.headers[h] + "\r\n")
+105
+106        p.feed("\r\n")
+107        p.feed(self.text())
+108
+109        msg = p.close()
+110
+111        parts = msg.get_payload()
+112
+113        return parts
+114
+115
+116def create_response(payload, status):
+117    res = requests.Response()
+118    res.headers = dict(payload)
+119    if is_third():
+120        res._content = bytes(payload.get_payload(), 'utf8')
+121        res.encoding = 'utf8'
+122    else:
+123        res._content = str(payload.get_payload())
+124    res.status_code = status
+125    return res
+
+ + +
+
+ +
+ + def + get_prepared_request_details(request): + + + +
+ +
10def get_prepared_request_details(request):
+11    if request is None:
+12        return "The request is None."
+13    
+14    try:
+15        method = request.method or "Unknown Method"
+16        url = request.url or "Unknown URL"
+17        headers = dict(request.headers) if request.headers else {}
+18        details = [
+19            f"Method: {method}",
+20            f"URL: {url}",
+21            f"Headers: {headers}"
+22        ]
+23        return "\n".join(details)
+24    except Exception as e:
+25        return f"Error generating request details: {str(e)}"
+
+ + + + +
+
+ +
+ + class + ApiResponse: + + + +
+ +
 28class ApiResponse:
+ 29    def __init__(self, request=None, response=None):
+ 30        self._request = request
+ 31        self._response = response
+ 32
+ 33    def ok(self):
+ 34        return self._response.ok
+ 35
+ 36    def raw(self):
+ 37        return self._response.raw
+ 38
+ 39    def body(self):
+ 40        return self._response.content
+ 41
+ 42    def text(self):
+ 43        return self._response.text
+ 44
+ 45    def json_dict(self):
+ 46        if not self._is_content_type('application/json'):
+ 47            raise Exception('Response is not JSON')
+ 48
+ 49        return self._response.json()
+ 50
+ 51    def json(self):
+ 52        return unfold(self._response.json())
+ 53
+ 54    def multipart(self):
+ 55        if not self._is_content_type('multipart/mixed'):
+ 56            raise Exception('Response is not Batch (Multipart)')
+ 57
+ 58        parts = self._break_into_parts()
+ 59
+ 60        if len(parts) < 1:
+ 61            raise Exception("Malformed Batch Response (not enough parts)")  # sic! not specific extension
+ 62
+ 63        statuses = json.loads(parts[0].get_payload())
+ 64
+ 65        if len(statuses["response"]) != len(parts) - 1:
+ 66            raise Exception("Malformed Batch Response (not-consistent number of parts)")
+ 67
+ 68        responses = []
+ 69
+ 70        for response, payload in zip(statuses["response"], parts[1:]):
+ 71            res = create_response(payload, response['status'])
+ 72
+ 73            responses.append(ApiResponse(response=res))
+ 74
+ 75        return responses
+ 76
+ 77    def error(self):
+ 78
+ 79        if self._response is None or self.ok():
+ 80            return None
+ 81
+ 82        message = 'HTTP ' + str(self._response.status_code) + ' ' + self._response.text
+ 83
+ 84        if self._request is not None:
+ 85            message = message + ' (request details: ' + get_prepared_request_details(self._request) + ')'
+ 86
+ 87        return message
+ 88
+ 89    def request(self):
+ 90        return self._request
+ 91
+ 92    def response(self):
+ 93        return self._response
+ 94
+ 95    def _is_content_type(self, content_type):
+ 96        return self._get_content_type().lower().find(content_type) >= 0
+ 97
+ 98    def _get_content_type(self):
+ 99        return self._response.headers.get('Content-Type') or ''
+100
+101    def _break_into_parts(self):
+102        p = FeedParser()
+103
+104        for h in self._response.headers:
+105            p.feed(h + ':' + self._response.headers[h] + "\r\n")
+106
+107        p.feed("\r\n")
+108        p.feed(self.text())
+109
+110        msg = p.close()
+111
+112        parts = msg.get_payload()
+113
+114        return parts
+
+ + + + +
+ +
+ + ApiResponse(request=None, response=None) + + + +
+ +
29    def __init__(self, request=None, response=None):
+30        self._request = request
+31        self._response = response
+
+ + + + +
+
+ +
+ + def + ok(self): + + + +
+ +
33    def ok(self):
+34        return self._response.ok
+
+ + + + +
+
+ +
+ + def + raw(self): + + + +
+ +
36    def raw(self):
+37        return self._response.raw
+
+ + + + +
+
+ +
+ + def + body(self): + + + +
+ +
39    def body(self):
+40        return self._response.content
+
+ + + + +
+
+ +
+ + def + text(self): + + + +
+ +
42    def text(self):
+43        return self._response.text
+
+ + + + +
+
+ +
+ + def + json_dict(self): + + + +
+ +
45    def json_dict(self):
+46        if not self._is_content_type('application/json'):
+47            raise Exception('Response is not JSON')
+48
+49        return self._response.json()
+
+ + + + +
+
+ +
+ + def + json(self): + + + +
+ +
51    def json(self):
+52        return unfold(self._response.json())
+
+ + + + +
+
+ +
+ + def + multipart(self): + + + +
+ +
54    def multipart(self):
+55        if not self._is_content_type('multipart/mixed'):
+56            raise Exception('Response is not Batch (Multipart)')
+57
+58        parts = self._break_into_parts()
+59
+60        if len(parts) < 1:
+61            raise Exception("Malformed Batch Response (not enough parts)")  # sic! not specific extension
+62
+63        statuses = json.loads(parts[0].get_payload())
+64
+65        if len(statuses["response"]) != len(parts) - 1:
+66            raise Exception("Malformed Batch Response (not-consistent number of parts)")
+67
+68        responses = []
+69
+70        for response, payload in zip(statuses["response"], parts[1:]):
+71            res = create_response(payload, response['status'])
+72
+73            responses.append(ApiResponse(response=res))
+74
+75        return responses
+
+ + + + +
+
+ +
+ + def + error(self): + + + +
+ +
77    def error(self):
+78
+79        if self._response is None or self.ok():
+80            return None
+81
+82        message = 'HTTP ' + str(self._response.status_code) + ' ' + self._response.text
+83
+84        if self._request is not None:
+85            message = message + ' (request details: ' + get_prepared_request_details(self._request) + ')'
+86
+87        return message
+
+ + + + +
+
+ +
+ + def + request(self): + + + +
+ +
89    def request(self):
+90        return self._request
+
+ + + + +
+
+ +
+ + def + response(self): + + + +
+ +
92    def response(self):
+93        return self._response
+
+ + + + +
+
+
+ +
+ + def + create_response(payload, status): + + + +
+ +
117def create_response(payload, status):
+118    res = requests.Response()
+119    res.headers = dict(payload)
+120    if is_third():
+121        res._content = bytes(payload.get_payload(), 'utf8')
+122        res.encoding = 'utf8'
+123    else:
+124        res._content = str(payload.get_payload())
+125    res.status_code = status
+126    return res
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/ringcentral/http/api_response.py b/ringcentral/http/api_response.py deleted file mode 100644 index d630f9e..0000000 --- a/ringcentral/http/api_response.py +++ /dev/null @@ -1,125 +0,0 @@ -# !/usr/bin/env python -# encoding: utf-8 -import json -import requests -from email.feedparser import FeedParser -from .json_object import * -from ..core import is_third - -def get_prepared_request_details(request): - if request is None: - return "The request is None." - - try: - method = request.method or "Unknown Method" - url = request.url or "Unknown URL" - headers = dict(request.headers) if request.headers else {} - details = [ - f"Method: {method}", - f"URL: {url}", - f"Headers: {headers}" - ] - return "\n".join(details) - except Exception as e: - return f"Error generating request details: {str(e)}" - - -class ApiResponse: - def __init__(self, request=None, response=None): - self._request = request - self._response = response - - def ok(self): - return self._response.ok - - def raw(self): - return self._response.raw - - def body(self): - return self._response.content - - def text(self): - return self._response.text - - def json_dict(self): - if not self._is_content_type('application/json'): - raise Exception('Response is not JSON') - - return self._response.json() - - def json(self): - return unfold(self._response.json()) - - def multipart(self): - if not self._is_content_type('multipart/mixed'): - raise Exception('Response is not Batch (Multipart)') - - parts = self._break_into_parts() - - if len(parts) < 1: - raise Exception("Malformed Batch Response (not enough parts)") # sic! not specific extension - - statuses = json.loads(parts[0].get_payload()) - - if len(statuses["response"]) != len(parts) - 1: - raise Exception("Malformed Batch Response (not-consistent number of parts)") - - responses = [] - - for response, payload in zip(statuses["response"], parts[1:]): - res = create_response(payload, response['status']) - - responses.append(ApiResponse(response=res)) - - return responses - - def error(self): - - if self._response is None or self.ok(): - return None - - message = 'HTTP ' + str(self._response.status_code) + ' ' + self._response.text - - if self._request is not None: - message = message + ' (request details: ' + get_prepared_request_details(self._request) + ')' - - return message - - def request(self): - return self._request - - def response(self): - return self._response - - def _is_content_type(self, content_type): - return self._get_content_type().lower().find(content_type) >= 0 - - def _get_content_type(self): - return self._response.headers.get('Content-Type') or '' - - def _break_into_parts(self): - p = FeedParser() - - for h in self._response.headers: - p.feed(h + ':' + self._response.headers[h] + "\r\n") - - p.feed("\r\n") - p.feed(self.text()) - - msg = p.close() - - parts = msg.get_payload() - - return parts - - -def create_response(payload, status): - res = requests.Response() - res.headers = dict(payload) - if is_third(): - res._content = bytes(payload.get_payload(), 'utf8') - res.encoding = 'utf8' - else: - res._content = str(payload.get_payload()) - res.status_code = status - return res diff --git a/ringcentral/http/api_response_test.html b/ringcentral/http/api_response_test.html new file mode 100644 index 0000000..a740354 --- /dev/null +++ b/ringcentral/http/api_response_test.html @@ -0,0 +1,802 @@ + + + + + + + ringcentral.http.api_response_test API documentation + + + + + + + + + +
+
+

+ringcentral.http.api_response_test

+ + + + + + +
  1import unittest
+  2
+  3from ..test import TestCase
+  4from ..core import is_third
+  5from .api_response import ApiResponse
+  6from requests import Response
+  7
+  8multipart_headers = {'Content-Type': 'multipart/mixed; boundary=Boundary_1245_945802293_1394135045248'}
+  9
+ 10
+ 11class TestApiResponse(TestCase):
+ 12    def test_multipart(self):
+ 13        response = "--Boundary_1245_945802293_1394135045248\n" + \
+ 14                   "Content-Type: application/json\r\n" + \
+ 15                   "\r\n" + \
+ 16                   "{\n" + \
+ 17                   "  \"response\" : [ {\n" + \
+ 18                   "    \"status\" : 200\n" + \
+ 19                   "  }, {\n" + \
+ 20                   "    \"status\" : 200\n" + \
+ 21                   "  } ]\n" + \
+ 22                   "}\n" + \
+ 23                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 24                   "Content-Type: application/json\n" + \
+ 25                   "\n" + \
+ 26                   "{\n" + \
+ 27                   "  \"foo\" : \"bar\"\n" + \
+ 28                   "}\n" + \
+ 29                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 30                   "Content-Type: application/json\n" + \
+ 31                   "\n" + \
+ 32                   "{\n" + \
+ 33                   "  \"baz\" : \"qux\"\n" + \
+ 34                   "}\n" + \
+ 35                   "--Boundary_1245_945802293_1394135045248--\n"
+ 36
+ 37        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+ 38
+ 39        self.assertEqual(2, len(r.multipart()))
+ 40        self.assertEqual('bar', r.multipart()[0].json().foo)
+ 41        self.assertEqual('qux', r.multipart()[1].json().baz)
+ 42
+ 43    def test_multipart_with_error(self):
+ 44        response = "--Boundary_1245_945802293_1394135045248\n" + \
+ 45                   "Content-Type: application/json\n" + \
+ 46                   "\n" + \
+ 47                   "{\n" + \
+ 48                   "  \"response\" : [ {\n" + \
+ 49                   "    \"status\" : 200\n" + \
+ 50                   "  }, {\n" + \
+ 51                   "    \"status\" : 404\n" + \
+ 52                   "  }, {\n" + \
+ 53                   "    \"status\" : 200\n" + \
+ 54                   "  } ]\n" + \
+ 55                   "}\n" + \
+ 56                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 57                   "Content-Type: application/json\n" + \
+ 58                   "\n" + \
+ 59                   "{\n" + \
+ 60                   "  \"foo\" : \"bar\"\n" + \
+ 61                   "}\n" + \
+ 62                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 63                   "Content-Type: application/json\n" + \
+ 64                   "\n" + \
+ 65                   "{\n" + \
+ 66                   "  \"error_description\" : \"object not found\"\n" + \
+ 67                   "}\n" + \
+ 68                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 69                   "Content-Type: application/json\n" + \
+ 70                   "\n" + \
+ 71                   "{\n" + \
+ 72                   "  \"baz\" : \"qux\"\n" + \
+ 73                   "}\n" + \
+ 74                   "--Boundary_1245_945802293_1394135045248--\n"
+ 75
+ 76        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+ 77
+ 78        self.assertEqual('bar', r.multipart()[0].json().foo)
+ 79        self.assertIn('object not found', r.multipart()[1].error())
+ 80        self.assertEqual('qux', r.multipart()[2].json().baz)
+ 81
+ 82    def test_multipart_bad_response(self):
+ 83        response = "--Boundary_1245_945802293_1394135045248\n" + \
+ 84                   "Content-Type: application/json\n" + \
+ 85                   "\n" + \
+ 86                   "THIS IS JUNK AND CANNOT BE PARSED AS JSON\n" + \
+ 87                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 88                   "Content-Type: application/json\n" + \
+ 89                   "\n" + \
+ 90                   "{\n" + \
+ 91                   "  \"foo\" : \"bar\"\n" + \
+ 92                   "}\n" + \
+ 93                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 94                   "Content-Type: application/json\n" + \
+ 95                   "\n" + \
+ 96                   "{\n" + \
+ 97                   "  \"baz\" : \"qux\"\n" + \
+ 98                   "}\n" + \
+ 99                   "--Boundary_1245_945802293_1394135045248--\n"
+100
+101        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+102
+103        with self.assertRaises(Exception) as e:
+104            r.multipart()
+105
+106
+107# FIXME Use create response from main file api_response
+108def create_response(body, status, headers=None):
+109    res = Response()
+110    res.headers = headers
+111    if is_third():
+112        res._content = bytes(body, 'utf8')
+113        res.encoding = 'utf8'
+114    else:
+115        res._content = body
+116    res.status_code = status
+117    return res
+118
+119
+120if __name__ == '__main__':
+121    unittest.main()
+
+ + +
+
+
+ multipart_headers = +{'Content-Type': 'multipart/mixed; boundary=Boundary_1245_945802293_1394135045248'} + + +
+ + + + +
+
+ +
+ + class + TestApiResponse(ringcentral.test.testcase.TestCase): + + + +
+ +
 12class TestApiResponse(TestCase):
+ 13    def test_multipart(self):
+ 14        response = "--Boundary_1245_945802293_1394135045248\n" + \
+ 15                   "Content-Type: application/json\r\n" + \
+ 16                   "\r\n" + \
+ 17                   "{\n" + \
+ 18                   "  \"response\" : [ {\n" + \
+ 19                   "    \"status\" : 200\n" + \
+ 20                   "  }, {\n" + \
+ 21                   "    \"status\" : 200\n" + \
+ 22                   "  } ]\n" + \
+ 23                   "}\n" + \
+ 24                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 25                   "Content-Type: application/json\n" + \
+ 26                   "\n" + \
+ 27                   "{\n" + \
+ 28                   "  \"foo\" : \"bar\"\n" + \
+ 29                   "}\n" + \
+ 30                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 31                   "Content-Type: application/json\n" + \
+ 32                   "\n" + \
+ 33                   "{\n" + \
+ 34                   "  \"baz\" : \"qux\"\n" + \
+ 35                   "}\n" + \
+ 36                   "--Boundary_1245_945802293_1394135045248--\n"
+ 37
+ 38        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+ 39
+ 40        self.assertEqual(2, len(r.multipart()))
+ 41        self.assertEqual('bar', r.multipart()[0].json().foo)
+ 42        self.assertEqual('qux', r.multipart()[1].json().baz)
+ 43
+ 44    def test_multipart_with_error(self):
+ 45        response = "--Boundary_1245_945802293_1394135045248\n" + \
+ 46                   "Content-Type: application/json\n" + \
+ 47                   "\n" + \
+ 48                   "{\n" + \
+ 49                   "  \"response\" : [ {\n" + \
+ 50                   "    \"status\" : 200\n" + \
+ 51                   "  }, {\n" + \
+ 52                   "    \"status\" : 404\n" + \
+ 53                   "  }, {\n" + \
+ 54                   "    \"status\" : 200\n" + \
+ 55                   "  } ]\n" + \
+ 56                   "}\n" + \
+ 57                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 58                   "Content-Type: application/json\n" + \
+ 59                   "\n" + \
+ 60                   "{\n" + \
+ 61                   "  \"foo\" : \"bar\"\n" + \
+ 62                   "}\n" + \
+ 63                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 64                   "Content-Type: application/json\n" + \
+ 65                   "\n" + \
+ 66                   "{\n" + \
+ 67                   "  \"error_description\" : \"object not found\"\n" + \
+ 68                   "}\n" + \
+ 69                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 70                   "Content-Type: application/json\n" + \
+ 71                   "\n" + \
+ 72                   "{\n" + \
+ 73                   "  \"baz\" : \"qux\"\n" + \
+ 74                   "}\n" + \
+ 75                   "--Boundary_1245_945802293_1394135045248--\n"
+ 76
+ 77        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+ 78
+ 79        self.assertEqual('bar', r.multipart()[0].json().foo)
+ 80        self.assertIn('object not found', r.multipart()[1].error())
+ 81        self.assertEqual('qux', r.multipart()[2].json().baz)
+ 82
+ 83    def test_multipart_bad_response(self):
+ 84        response = "--Boundary_1245_945802293_1394135045248\n" + \
+ 85                   "Content-Type: application/json\n" + \
+ 86                   "\n" + \
+ 87                   "THIS IS JUNK AND CANNOT BE PARSED AS JSON\n" + \
+ 88                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 89                   "Content-Type: application/json\n" + \
+ 90                   "\n" + \
+ 91                   "{\n" + \
+ 92                   "  \"foo\" : \"bar\"\n" + \
+ 93                   "}\n" + \
+ 94                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 95                   "Content-Type: application/json\n" + \
+ 96                   "\n" + \
+ 97                   "{\n" + \
+ 98                   "  \"baz\" : \"qux\"\n" + \
+ 99                   "}\n" + \
+100                   "--Boundary_1245_945802293_1394135045248--\n"
+101
+102        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+103
+104        with self.assertRaises(Exception) as e:
+105            r.multipart()
+
+ + +

A class whose instances are single test cases.

+ +

By default, the test code itself should be placed in a method named +'runTest'.

+ +

If the fixture may be used for many test cases, create as +many test methods as are needed. When instantiating such a TestCase +subclass, specify in the constructor arguments the name of the test method +that the instance is to execute.

+ +

Test authors should subclass TestCase for their own tests. Construction +and deconstruction of the test's environment ('fixture') can be +implemented by overriding the 'setUp' and 'tearDown' methods respectively.

+ +

If it is necessary to override the __init__ method, the base class +__init__ method must always be called. It is important that subclasses +should not change the signature of their __init__ method, since instances +of the classes are instantiated automatically by parts of the framework +in order to be run.

+ +

When subclassing TestCase, you can set these attributes:

+ +
    +
  • failureException: determines which exception will be raised when +the instance's assertion methods fail; test methods raising this +exception will be deemed to have 'failed' rather than 'errored'.
  • +
  • longMessage: determines whether long messages (including repr of +objects used in assert methods) will be printed on failure in addition +to any explicit message passed.
  • +
  • maxDiff: sets the maximum length of a diff in failure messages +by assert methods using difflib. It is looked up as an instance +attribute so can be configured by individual tests if required.
  • +
+
+ + +
+ +
+ + def + test_multipart(self): + + + +
+ +
13    def test_multipart(self):
+14        response = "--Boundary_1245_945802293_1394135045248\n" + \
+15                   "Content-Type: application/json\r\n" + \
+16                   "\r\n" + \
+17                   "{\n" + \
+18                   "  \"response\" : [ {\n" + \
+19                   "    \"status\" : 200\n" + \
+20                   "  }, {\n" + \
+21                   "    \"status\" : 200\n" + \
+22                   "  } ]\n" + \
+23                   "}\n" + \
+24                   "--Boundary_1245_945802293_1394135045248\n" + \
+25                   "Content-Type: application/json\n" + \
+26                   "\n" + \
+27                   "{\n" + \
+28                   "  \"foo\" : \"bar\"\n" + \
+29                   "}\n" + \
+30                   "--Boundary_1245_945802293_1394135045248\n" + \
+31                   "Content-Type: application/json\n" + \
+32                   "\n" + \
+33                   "{\n" + \
+34                   "  \"baz\" : \"qux\"\n" + \
+35                   "}\n" + \
+36                   "--Boundary_1245_945802293_1394135045248--\n"
+37
+38        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+39
+40        self.assertEqual(2, len(r.multipart()))
+41        self.assertEqual('bar', r.multipart()[0].json().foo)
+42        self.assertEqual('qux', r.multipart()[1].json().baz)
+
+ + + + +
+
+ +
+ + def + test_multipart_with_error(self): + + + +
+ +
44    def test_multipart_with_error(self):
+45        response = "--Boundary_1245_945802293_1394135045248\n" + \
+46                   "Content-Type: application/json\n" + \
+47                   "\n" + \
+48                   "{\n" + \
+49                   "  \"response\" : [ {\n" + \
+50                   "    \"status\" : 200\n" + \
+51                   "  }, {\n" + \
+52                   "    \"status\" : 404\n" + \
+53                   "  }, {\n" + \
+54                   "    \"status\" : 200\n" + \
+55                   "  } ]\n" + \
+56                   "}\n" + \
+57                   "--Boundary_1245_945802293_1394135045248\n" + \
+58                   "Content-Type: application/json\n" + \
+59                   "\n" + \
+60                   "{\n" + \
+61                   "  \"foo\" : \"bar\"\n" + \
+62                   "}\n" + \
+63                   "--Boundary_1245_945802293_1394135045248\n" + \
+64                   "Content-Type: application/json\n" + \
+65                   "\n" + \
+66                   "{\n" + \
+67                   "  \"error_description\" : \"object not found\"\n" + \
+68                   "}\n" + \
+69                   "--Boundary_1245_945802293_1394135045248\n" + \
+70                   "Content-Type: application/json\n" + \
+71                   "\n" + \
+72                   "{\n" + \
+73                   "  \"baz\" : \"qux\"\n" + \
+74                   "}\n" + \
+75                   "--Boundary_1245_945802293_1394135045248--\n"
+76
+77        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+78
+79        self.assertEqual('bar', r.multipart()[0].json().foo)
+80        self.assertIn('object not found', r.multipart()[1].error())
+81        self.assertEqual('qux', r.multipart()[2].json().baz)
+
+ + + + +
+
+ +
+ + def + test_multipart_bad_response(self): + + + +
+ +
 83    def test_multipart_bad_response(self):
+ 84        response = "--Boundary_1245_945802293_1394135045248\n" + \
+ 85                   "Content-Type: application/json\n" + \
+ 86                   "\n" + \
+ 87                   "THIS IS JUNK AND CANNOT BE PARSED AS JSON\n" + \
+ 88                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 89                   "Content-Type: application/json\n" + \
+ 90                   "\n" + \
+ 91                   "{\n" + \
+ 92                   "  \"foo\" : \"bar\"\n" + \
+ 93                   "}\n" + \
+ 94                   "--Boundary_1245_945802293_1394135045248\n" + \
+ 95                   "Content-Type: application/json\n" + \
+ 96                   "\n" + \
+ 97                   "{\n" + \
+ 98                   "  \"baz\" : \"qux\"\n" + \
+ 99                   "}\n" + \
+100                   "--Boundary_1245_945802293_1394135045248--\n"
+101
+102        r = ApiResponse(response=create_response(response, 207, multipart_headers))
+103
+104        with self.assertRaises(Exception) as e:
+105            r.multipart()
+
+ + + + +
+
+
Inherited Members
+
+ +
unittest.case.TestCase
+
failureException
+
longMessage
+
maxDiff
+
addTypeEqualityFunc
+
addCleanup
+
enterContext
+
addClassCleanup
+
enterClassContext
+
setUp
+
tearDown
+
setUpClass
+
tearDownClass
+
countTestCases
+
defaultTestResult
+
shortDescription
+
id
+
subTest
+
run
+
doCleanups
+
doClassCleanups
+
debug
+
skipTest
+
fail
+
assertFalse
+
assertTrue
+
assertRaises
+
assertWarns
+
assertLogs
+
assertNoLogs
+
assertEqual
+
assertNotEqual
+
assertAlmostEqual
+
assertNotAlmostEqual
+
assertSequenceEqual
+
assertListEqual
+
assertTupleEqual
+
assertSetEqual
+
assertIn
+
assertNotIn
+
assertIs
+
assertIsNot
+
assertDictEqual
+
assertDictContainsSubset
+
assertCountEqual
+
assertMultiLineEqual
+
assertLess
+
assertLessEqual
+
assertGreater
+
assertGreaterEqual
+
assertIsNone
+
assertIsNotNone
+
assertIsInstance
+
assertNotIsInstance
+
assertRaisesRegex
+
assertWarnsRegex
+
assertRegex
+
assertNotRegex
+
failUnlessRaises
+
failIf
+
assertRaisesRegexp
+
assertRegexpMatches
+
assertNotRegexpMatches
+
failUnlessEqual
+
assertEquals
+
failIfEqual
+
assertNotEquals
+
failUnlessAlmostEqual
+
assertAlmostEquals
+
failIfAlmostEqual
+
assertNotAlmostEquals
+
failUnless
+
assert_
+ +
+
+
+
+
+ +
+ + def + create_response(body, status, headers=None): + + + +
+ +
109def create_response(body, status, headers=None):
+110    res = Response()
+111    res.headers = headers
+112    if is_third():
+113        res._content = bytes(body, 'utf8')
+114        res.encoding = 'utf8'
+115    else:
+116        res._content = body
+117    res.status_code = status
+118    return res
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/ringcentral/http/api_response_test.py b/ringcentral/http/api_response_test.py deleted file mode 100644 index c2496f8..0000000 --- a/ringcentral/http/api_response_test.py +++ /dev/null @@ -1,121 +0,0 @@ -import unittest - -from ..test import TestCase -from ..core import is_third -from .api_response import ApiResponse -from requests import Response - -multipart_headers = {'Content-Type': 'multipart/mixed; boundary=Boundary_1245_945802293_1394135045248'} - - -class TestApiResponse(TestCase): - def test_multipart(self): - response = "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\r\n" + \ - "\r\n" + \ - "{\n" + \ - " \"response\" : [ {\n" + \ - " \"status\" : 200\n" + \ - " }, {\n" + \ - " \"status\" : 200\n" + \ - " } ]\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"foo\" : \"bar\"\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"baz\" : \"qux\"\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248--\n" - - r = ApiResponse(response=create_response(response, 207, multipart_headers)) - - self.assertEqual(2, len(r.multipart())) - self.assertEqual('bar', r.multipart()[0].json().foo) - self.assertEqual('qux', r.multipart()[1].json().baz) - - def test_multipart_with_error(self): - response = "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"response\" : [ {\n" + \ - " \"status\" : 200\n" + \ - " }, {\n" + \ - " \"status\" : 404\n" + \ - " }, {\n" + \ - " \"status\" : 200\n" + \ - " } ]\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"foo\" : \"bar\"\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"error_description\" : \"object not found\"\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"baz\" : \"qux\"\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248--\n" - - r = ApiResponse(response=create_response(response, 207, multipart_headers)) - - self.assertEqual('bar', r.multipart()[0].json().foo) - self.assertIn('object not found', r.multipart()[1].error()) - self.assertEqual('qux', r.multipart()[2].json().baz) - - def test_multipart_bad_response(self): - response = "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "THIS IS JUNK AND CANNOT BE PARSED AS JSON\n" + \ - "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"foo\" : \"bar\"\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248\n" + \ - "Content-Type: application/json\n" + \ - "\n" + \ - "{\n" + \ - " \"baz\" : \"qux\"\n" + \ - "}\n" + \ - "--Boundary_1245_945802293_1394135045248--\n" - - r = ApiResponse(response=create_response(response, 207, multipart_headers)) - - with self.assertRaises(Exception) as e: - r.multipart() - - -# FIXME Use create response from main file api_response -def create_response(body, status, headers=None): - res = Response() - res.headers = headers - if is_third(): - res._content = bytes(body, 'utf8') - res.encoding = 'utf8' - else: - res._content = body - res.status_code = status - return res - - -if __name__ == '__main__': - unittest.main() diff --git a/ringcentral/http/client.html b/ringcentral/http/client.html new file mode 100644 index 0000000..c4b4a31 --- /dev/null +++ b/ringcentral/http/client.html @@ -0,0 +1,667 @@ + + + + + + + ringcentral.http.client API documentation + + + + + + + + + +
+
+

+ringcentral.http.client

+ + + + + + +
  1#!/usr/bin/env python
+  2# encoding: utf-8
+  3import json
+  4import urllib
+  5import requests
+  6
+  7from .api_response import ApiResponse
+  8from .api_exception import ApiException
+  9from ..core import urlencode, iterator
+ 10
+ 11
+ 12class Client:
+ 13    def __init__(self):
+ 14        pass
+ 15
+ 16    def send(self, request):
+ 17        """
+ 18            Send the HTTP request and handle the response.
+ 19
+ 20            Args:
+ 21                request (obj): The HTTP request object.
+ 22
+ 23            Returns:
+ 24                obj: The HTTP response object.
+ 25
+ 26            Raises:
+ 27                ApiException: If an error occurs during the request or response handling.
+ 28        """
+ 29        response = None
+ 30
+ 31        try:
+ 32            prepared = request
+ 33            if isinstance(prepared, requests.models.Request): # not a prepared request
+ 34                prepared = request.prepare()
+ 35            response = self.load_response(prepared)
+ 36
+ 37            if response.ok():
+ 38                return response
+ 39            else:
+ 40                response.response().raise_for_status()
+ 41
+ 42        except Exception as e:
+ 43            if response is None:
+ 44                response = ApiResponse(request)
+ 45
+ 46            raise ApiException(response, e)
+ 47
+ 48    def load_response(self, request):
+ 49        # TODO Persist between requests?
+ 50        session = None
+ 51
+ 52        try:
+ 53            session = requests.sessions.Session()
+ 54            response = session.send(request)
+ 55            session.close()
+ 56
+ 57            return ApiResponse(request, response)
+ 58
+ 59        except Exception:
+ 60            if session:
+ 61                session.close()
+ 62            raise
+ 63
+ 64    def create_request(self, method='', url='', query_params=None, body=None, headers=None):
+ 65        """
+ 66            Create an HTTP request object.
+ 67
+ 68            Args:
+ 69                method (str): The HTTP method (e.g., GET, POST).
+ 70                url (str): The URL for the request.
+ 71                query_params (dict, optional): Dictionary containing query parameters.
+ 72                body (dict, optional): Request body data.
+ 73                headers (dict, optional): Request headers.
+ 74
+ 75            Returns:
+ 76                requests.Request: The HTTP request object.
+ 77
+ 78            """
+ 79        if query_params:
+ 80            if type(query_params) is dict:
+ 81                query = ""
+ 82                for key, value in  iter(query_params.items()):
+ 83                    if type(value) is list:
+ 84                        for k in value:
+ 85                            query += ("%s=%s&" % (key, k))
+ 86                    else:
+ 87                        query += ("%s=%s&" % (key, value))
+ 88                query = query[:-1]
+ 89            else:
+ 90                query = urlencode(query_params)
+ 91            if query:
+ 92                url = url + ('&' if url.find('?') > 0 else '?') + query
+ 93
+ 94        content_type = None
+ 95
+ 96        if headers is None:
+ 97            headers = {}
+ 98
+ 99        it = iterator(headers)
+100
+101        for key, value in it:
+102            if key.lower().find('content-type') >= 0:
+103                content_type = value
+104            if key.lower().find('accept') >= 0:
+105                headers['Accept'] = value
+106
+107        if content_type is None:
+108            content_type = 'application/json'
+109            headers['Content-Type'] = content_type
+110
+111        if content_type.lower().find('application/json') >= 0:
+112            body = json.dumps(body) if body else None
+113        elif content_type.lower().find('application/x-www-form-urlencoded') >= 0:
+114            body = urlencode(body) if body else None
+115
+116        return requests.Request(method, url, headers=headers, data=body)
+
+ + +
+
+ +
+ + class + Client: + + + +
+ +
 13class Client:
+ 14    def __init__(self):
+ 15        pass
+ 16
+ 17    def send(self, request):
+ 18        """
+ 19            Send the HTTP request and handle the response.
+ 20
+ 21            Args:
+ 22                request (obj): The HTTP request object.
+ 23
+ 24            Returns:
+ 25                obj: The HTTP response object.
+ 26
+ 27            Raises:
+ 28                ApiException: If an error occurs during the request or response handling.
+ 29        """
+ 30        response = None
+ 31
+ 32        try:
+ 33            prepared = request
+ 34            if isinstance(prepared, requests.models.Request): # not a prepared request
+ 35                prepared = request.prepare()
+ 36            response = self.load_response(prepared)
+ 37
+ 38            if response.ok():
+ 39                return response
+ 40            else:
+ 41                response.response().raise_for_status()
+ 42
+ 43        except Exception as e:
+ 44            if response is None:
+ 45                response = ApiResponse(request)
+ 46
+ 47            raise ApiException(response, e)
+ 48
+ 49    def load_response(self, request):
+ 50        # TODO Persist between requests?
+ 51        session = None
+ 52
+ 53        try:
+ 54            session = requests.sessions.Session()
+ 55            response = session.send(request)
+ 56            session.close()
+ 57
+ 58            return ApiResponse(request, response)
+ 59
+ 60        except Exception:
+ 61            if session:
+ 62                session.close()
+ 63            raise
+ 64
+ 65    def create_request(self, method='', url='', query_params=None, body=None, headers=None):
+ 66        """
+ 67            Create an HTTP request object.
+ 68
+ 69            Args:
+ 70                method (str): The HTTP method (e.g., GET, POST).
+ 71                url (str): The URL for the request.
+ 72                query_params (dict, optional): Dictionary containing query parameters.
+ 73                body (dict, optional): Request body data.
+ 74                headers (dict, optional): Request headers.
+ 75
+ 76            Returns:
+ 77                requests.Request: The HTTP request object.
+ 78
+ 79            """
+ 80        if query_params:
+ 81            if type(query_params) is dict:
+ 82                query = ""
+ 83                for key, value in  iter(query_params.items()):
+ 84                    if type(value) is list:
+ 85                        for k in value:
+ 86                            query += ("%s=%s&" % (key, k))
+ 87                    else:
+ 88                        query += ("%s=%s&" % (key, value))
+ 89                query = query[:-1]
+ 90            else:
+ 91                query = urlencode(query_params)
+ 92            if query:
+ 93                url = url + ('&' if url.find('?') > 0 else '?') + query
+ 94
+ 95        content_type = None
+ 96
+ 97        if headers is None:
+ 98            headers = {}
+ 99
+100        it = iterator(headers)
+101
+102        for key, value in it:
+103            if key.lower().find('content-type') >= 0:
+104                content_type = value
+105            if key.lower().find('accept') >= 0:
+106                headers['Accept'] = value
+107
+108        if content_type is None:
+109            content_type = 'application/json'
+110            headers['Content-Type'] = content_type
+111
+112        if content_type.lower().find('application/json') >= 0:
+113            body = json.dumps(body) if body else None
+114        elif content_type.lower().find('application/x-www-form-urlencoded') >= 0:
+115            body = urlencode(body) if body else None
+116
+117        return requests.Request(method, url, headers=headers, data=body)
+
+ + + + +
+ +
+ + def + send(self, request): + + + +
+ +
17    def send(self, request):
+18        """
+19            Send the HTTP request and handle the response.
+20
+21            Args:
+22                request (obj): The HTTP request object.
+23
+24            Returns:
+25                obj: The HTTP response object.
+26
+27            Raises:
+28                ApiException: If an error occurs during the request or response handling.
+29        """
+30        response = None
+31
+32        try:
+33            prepared = request
+34            if isinstance(prepared, requests.models.Request): # not a prepared request
+35                prepared = request.prepare()
+36            response = self.load_response(prepared)
+37
+38            if response.ok():
+39                return response
+40            else:
+41                response.response().raise_for_status()
+42
+43        except Exception as e:
+44            if response is None:
+45                response = ApiResponse(request)
+46
+47            raise ApiException(response, e)
+
+ + +

Send the HTTP request and handle the response.

+ +

Args: + request (obj): The HTTP request object.

+ +

Returns: + obj: The HTTP response object.

+ +

Raises: + ApiException: If an error occurs during the request or response handling.

+
+ + +
+
+ +
+ + def + load_response(self, request): + + + +
+ +
49    def load_response(self, request):
+50        # TODO Persist between requests?
+51        session = None
+52
+53        try:
+54            session = requests.sessions.Session()
+55            response = session.send(request)
+56            session.close()
+57
+58            return ApiResponse(request, response)
+59
+60        except Exception:
+61            if session:
+62                session.close()
+63            raise
+
+ + + + +
+
+ +
+ + def + create_request(self, method='', url='', query_params=None, body=None, headers=None): + + + +
+ +
 65    def create_request(self, method='', url='', query_params=None, body=None, headers=None):
+ 66        """
+ 67            Create an HTTP request object.
+ 68
+ 69            Args:
+ 70                method (str): The HTTP method (e.g., GET, POST).
+ 71                url (str): The URL for the request.
+ 72                query_params (dict, optional): Dictionary containing query parameters.
+ 73                body (dict, optional): Request body data.
+ 74                headers (dict, optional): Request headers.
+ 75
+ 76            Returns:
+ 77                requests.Request: The HTTP request object.
+ 78
+ 79            """
+ 80        if query_params:
+ 81            if type(query_params) is dict:
+ 82                query = ""
+ 83                for key, value in  iter(query_params.items()):
+ 84                    if type(value) is list:
+ 85                        for k in value:
+ 86                            query += ("%s=%s&" % (key, k))
+ 87                    else:
+ 88                        query += ("%s=%s&" % (key, value))
+ 89                query = query[:-1]
+ 90            else:
+ 91                query = urlencode(query_params)
+ 92            if query:
+ 93                url = url + ('&' if url.find('?') > 0 else '?') + query
+ 94
+ 95        content_type = None
+ 96
+ 97        if headers is None:
+ 98            headers = {}
+ 99
+100        it = iterator(headers)
+101
+102        for key, value in it:
+103            if key.lower().find('content-type') >= 0:
+104                content_type = value
+105            if key.lower().find('accept') >= 0:
+106                headers['Accept'] = value
+107
+108        if content_type is None:
+109            content_type = 'application/json'
+110            headers['Content-Type'] = content_type
+111
+112        if content_type.lower().find('application/json') >= 0:
+113            body = json.dumps(body) if body else None
+114        elif content_type.lower().find('application/x-www-form-urlencoded') >= 0:
+115            body = urlencode(body) if body else None
+116
+117        return requests.Request(method, url, headers=headers, data=body)
+
+ + +

Create an HTTP request object.

+ +

Args: + method (str): The HTTP method (e.g., GET, POST). + url (str): The URL for the request. + query_params (dict, optional): Dictionary containing query parameters. + body (dict, optional): Request body data. + headers (dict, optional): Request headers.

+ +

Returns: + requests.Request: The HTTP request object.

+
+ + +
+
+
+ + \ No newline at end of file diff --git a/ringcentral/http/client.py b/ringcentral/http/client.py deleted file mode 100644 index d461ed9..0000000 --- a/ringcentral/http/client.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 -import json -import urllib -import requests - -from .api_response import ApiResponse -from .api_exception import ApiException -from ..core import urlencode, iterator - - -class Client: - def __init__(self): - pass - - def send(self, request): - """ - Send the HTTP request and handle the response. - - Args: - request (obj): The HTTP request object. - - Returns: - obj: The HTTP response object. - - Raises: - ApiException: If an error occurs during the request or response handling. - """ - response = None - - try: - prepared = request - if isinstance(prepared, requests.models.Request): # not a prepared request - prepared = request.prepare() - response = self.load_response(prepared) - - if response.ok(): - return response - else: - response.response().raise_for_status() - - except Exception as e: - if response is None: - response = ApiResponse(request) - - raise ApiException(response, e) - - def load_response(self, request): - # TODO Persist between requests? - session = None - - try: - session = requests.sessions.Session() - response = session.send(request) - session.close() - - return ApiResponse(request, response) - - except Exception: - if session: - session.close() - raise - - def create_request(self, method='', url='', query_params=None, body=None, headers=None): - """ - Create an HTTP request object. - - Args: - method (str): The HTTP method (e.g., GET, POST). - url (str): The URL for the request. - query_params (dict, optional): Dictionary containing query parameters. - body (dict, optional): Request body data. - headers (dict, optional): Request headers. - - Returns: - requests.Request: The HTTP request object. - - """ - if query_params: - if type(query_params) is dict: - query = "" - for key, value in iter(query_params.items()): - if type(value) is list: - for k in value: - query += ("%s=%s&" % (key, k)) - else: - query += ("%s=%s&" % (key, value)) - query = query[:-1] - else: - query = urlencode(query_params) - if query: - url = url + ('&' if url.find('?') > 0 else '?') + query - - content_type = None - - if headers is None: - headers = {} - - it = iterator(headers) - - for key, value in it: - if key.lower().find('content-type') >= 0: - content_type = value - if key.lower().find('accept') >= 0: - headers['Accept'] = value - - if content_type is None: - content_type = 'application/json' - headers['Content-Type'] = content_type - - if content_type.lower().find('application/json') >= 0: - body = json.dumps(body) if body else None - elif content_type.lower().find('application/x-www-form-urlencoded') >= 0: - body = urlencode(body) if body else None - - return requests.Request(method, url, headers=headers, data=body) diff --git a/ringcentral/http/client_test.html b/ringcentral/http/client_test.html new file mode 100644 index 0000000..3ef75fa --- /dev/null +++ b/ringcentral/http/client_test.html @@ -0,0 +1,582 @@ + + + + + + + ringcentral.http.client_test API documentation + + + + + + + + + +
+
+

+ringcentral.http.client_test

+ + + + + + +
 1import unittest
+ 2
+ 3from ..test import TestCase
+ 4from .client import Client
+ 5
+ 6body = {'foo': 'bar', 'baz': 'qux'}
+ 7
+ 8
+ 9class TestClient(TestCase):
+10    def test_create_request_with_query_string(self):
+11        req = Client().create_request(url='http://whatever', query_params={'foo': 'bar', 'baz': 'qux'})
+12        self.assertEqual('http://whatever?foo=bar&baz=qux', req.url)
+13
+14        req = Client().create_request(url='http://whatever', query_params={'a2z':['abc','xyz']})
+15        self.assertEqual('http://whatever?a2z=abc&a2z=xyz', req.url)
+16
+17    def test_create_request_encode_body_url(self):
+18        r = Client().create_request(body=body, headers={'Content-Type': 'application/x-www-form-urlencoded'})
+19        self.assertEqual('foo=bar&baz=qux', r.data)
+20
+21    def test_create_request_encode_body_json(self):
+22        r = Client().create_request(body=body, headers={'Content-Type': 'application/json'})
+23        self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data)
+24
+25    def test_create_request_encode_body_json_default(self):
+26        r = Client().create_request(body=body)  # JSON by default
+27        self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data)
+28
+29    def test_create_request_encode_body_alternative(self):
+30        r = Client().create_request(body='foo-encoded-text', headers={'content-type': 'foo'})
+31        self.assertEqual('foo-encoded-text', r.data)
+32
+33
+34if __name__ == '__main__':
+35    unittest.main()
+
+ + +
+
+
+ body = +{'foo': 'bar', 'baz': 'qux'} + + +
+ + + + +
+
+ +
+ + class + TestClient(ringcentral.test.testcase.TestCase): + + + +
+ +
10class TestClient(TestCase):
+11    def test_create_request_with_query_string(self):
+12        req = Client().create_request(url='http://whatever', query_params={'foo': 'bar', 'baz': 'qux'})
+13        self.assertEqual('http://whatever?foo=bar&baz=qux', req.url)
+14
+15        req = Client().create_request(url='http://whatever', query_params={'a2z':['abc','xyz']})
+16        self.assertEqual('http://whatever?a2z=abc&a2z=xyz', req.url)
+17
+18    def test_create_request_encode_body_url(self):
+19        r = Client().create_request(body=body, headers={'Content-Type': 'application/x-www-form-urlencoded'})
+20        self.assertEqual('foo=bar&baz=qux', r.data)
+21
+22    def test_create_request_encode_body_json(self):
+23        r = Client().create_request(body=body, headers={'Content-Type': 'application/json'})
+24        self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data)
+25
+26    def test_create_request_encode_body_json_default(self):
+27        r = Client().create_request(body=body)  # JSON by default
+28        self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data)
+29
+30    def test_create_request_encode_body_alternative(self):
+31        r = Client().create_request(body='foo-encoded-text', headers={'content-type': 'foo'})
+32        self.assertEqual('foo-encoded-text', r.data)
+
+ + +

A class whose instances are single test cases.

+ +

By default, the test code itself should be placed in a method named +'runTest'.

+ +

If the fixture may be used for many test cases, create as +many test methods as are needed. When instantiating such a TestCase +subclass, specify in the constructor arguments the name of the test method +that the instance is to execute.

+ +

Test authors should subclass TestCase for their own tests. Construction +and deconstruction of the test's environment ('fixture') can be +implemented by overriding the 'setUp' and 'tearDown' methods respectively.

+ +

If it is necessary to override the __init__ method, the base class +__init__ method must always be called. It is important that subclasses +should not change the signature of their __init__ method, since instances +of the classes are instantiated automatically by parts of the framework +in order to be run.

+ +

When subclassing TestCase, you can set these attributes:

+ +
    +
  • failureException: determines which exception will be raised when +the instance's assertion methods fail; test methods raising this +exception will be deemed to have 'failed' rather than 'errored'.
  • +
  • longMessage: determines whether long messages (including repr of +objects used in assert methods) will be printed on failure in addition +to any explicit message passed.
  • +
  • maxDiff: sets the maximum length of a diff in failure messages +by assert methods using difflib. It is looked up as an instance +attribute so can be configured by individual tests if required.
  • +
+
+ + +
+ +
+ + def + test_create_request_with_query_string(self): + + + +
+ +
11    def test_create_request_with_query_string(self):
+12        req = Client().create_request(url='http://whatever', query_params={'foo': 'bar', 'baz': 'qux'})
+13        self.assertEqual('http://whatever?foo=bar&baz=qux', req.url)
+14
+15        req = Client().create_request(url='http://whatever', query_params={'a2z':['abc','xyz']})
+16        self.assertEqual('http://whatever?a2z=abc&a2z=xyz', req.url)
+
+ + + + +
+
+ +
+ + def + test_create_request_encode_body_url(self): + + + +
+ +
18    def test_create_request_encode_body_url(self):
+19        r = Client().create_request(body=body, headers={'Content-Type': 'application/x-www-form-urlencoded'})
+20        self.assertEqual('foo=bar&baz=qux', r.data)
+
+ + + + +
+
+ +
+ + def + test_create_request_encode_body_json(self): + + + +
+ +
22    def test_create_request_encode_body_json(self):
+23        r = Client().create_request(body=body, headers={'Content-Type': 'application/json'})
+24        self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data)
+
+ + + + +
+
+ +
+ + def + test_create_request_encode_body_json_default(self): + + + +
+ +
26    def test_create_request_encode_body_json_default(self):
+27        r = Client().create_request(body=body)  # JSON by default
+28        self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data)
+
+ + + + +
+
+ +
+ + def + test_create_request_encode_body_alternative(self): + + + +
+ +
30    def test_create_request_encode_body_alternative(self):
+31        r = Client().create_request(body='foo-encoded-text', headers={'content-type': 'foo'})
+32        self.assertEqual('foo-encoded-text', r.data)
+
+ + + + +
+
+
Inherited Members
+
+ +
unittest.case.TestCase
+
failureException
+
longMessage
+
maxDiff
+
addTypeEqualityFunc
+
addCleanup
+
enterContext
+
addClassCleanup
+
enterClassContext
+
setUp
+
tearDown
+
setUpClass
+
tearDownClass
+
countTestCases
+
defaultTestResult
+
shortDescription
+
id
+
subTest
+
run
+
doCleanups
+
doClassCleanups
+
debug
+
skipTest
+
fail
+
assertFalse
+
assertTrue
+
assertRaises
+
assertWarns
+
assertLogs
+
assertNoLogs
+
assertEqual
+
assertNotEqual
+
assertAlmostEqual
+
assertNotAlmostEqual
+
assertSequenceEqual
+
assertListEqual
+
assertTupleEqual
+
assertSetEqual
+
assertIn
+
assertNotIn
+
assertIs
+
assertIsNot
+
assertDictEqual
+
assertDictContainsSubset
+
assertCountEqual
+
assertMultiLineEqual
+
assertLess
+
assertLessEqual
+
assertGreater
+
assertGreaterEqual
+
assertIsNone
+
assertIsNotNone
+
assertIsInstance
+
assertNotIsInstance
+
assertRaisesRegex
+
assertWarnsRegex
+
assertRegex
+
assertNotRegex
+
failUnlessRaises
+
failIf
+
assertRaisesRegexp
+
assertRegexpMatches
+
assertNotRegexpMatches
+
failUnlessEqual
+
assertEquals
+
failIfEqual
+
assertNotEquals
+
failUnlessAlmostEqual
+
assertAlmostEquals
+
failIfAlmostEqual
+
assertNotAlmostEquals
+
failUnless
+
assert_
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/http/client_test.py b/ringcentral/http/client_test.py deleted file mode 100644 index 2ba119d..0000000 --- a/ringcentral/http/client_test.py +++ /dev/null @@ -1,35 +0,0 @@ -import unittest - -from ..test import TestCase -from .client import Client - -body = {'foo': 'bar', 'baz': 'qux'} - - -class TestClient(TestCase): - def test_create_request_with_query_string(self): - req = Client().create_request(url='http://whatever', query_params={'foo': 'bar', 'baz': 'qux'}) - self.assertEqual('http://whatever?foo=bar&baz=qux', req.url) - - req = Client().create_request(url='http://whatever', query_params={'a2z':['abc','xyz']}) - self.assertEqual('http://whatever?a2z=abc&a2z=xyz', req.url) - - def test_create_request_encode_body_url(self): - r = Client().create_request(body=body, headers={'Content-Type': 'application/x-www-form-urlencoded'}) - self.assertEqual('foo=bar&baz=qux', r.data) - - def test_create_request_encode_body_json(self): - r = Client().create_request(body=body, headers={'Content-Type': 'application/json'}) - self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data) - - def test_create_request_encode_body_json_default(self): - r = Client().create_request(body=body) # JSON by default - self.assertEqual('{"foo": "bar", "baz": "qux"}', r.data) - - def test_create_request_encode_body_alternative(self): - r = Client().create_request(body='foo-encoded-text', headers={'content-type': 'foo'}) - self.assertEqual('foo-encoded-text', r.data) - - -if __name__ == '__main__': - unittest.main() diff --git a/ringcentral/http/json_object.html b/ringcentral/http/json_object.html new file mode 100644 index 0000000..1e4a849 --- /dev/null +++ b/ringcentral/http/json_object.html @@ -0,0 +1,373 @@ + + + + + + + ringcentral.http.json_object API documentation + + + + + + + + + +
+
+

+ringcentral.http.json_object

+ + + + + + +
 1# !/usr/bin/env python
+ 2# encoding: utf-8
+ 3from ..core import iterator
+ 4
+ 5
+ 6PYTHON_KEYWORDS = (
+ 7    "and", "del", "from", "not", "while", "as", "elif", "global", "or", "with", "assert", "else", "if", "pass", "yield",
+ 8    "break", "except", "import", "rint", "class", "exec", "in", "raise", "continue", "finally", "is", "return", "def",
+ 9    "for", "lambda", "try",)
+10
+11
+12class JsonObject:
+13    def __init__(self):
+14        pass
+15
+16
+17def safe_name(n):
+18    if n in PYTHON_KEYWORDS:
+19        return n + "_"
+20    else:
+21        return n
+22
+23
+24def unfold(d):
+25    if isinstance(d, dict):
+26        o = JsonObject()
+27        for k, v in iterator(d):
+28            o.__dict__[safe_name(k)] = unfold(v)
+29        return o
+30    elif isinstance(d, list):
+31        o = [unfold(x) for x in d]
+32        return o
+33    else:
+34        return d
+
+ + +
+
+
+ PYTHON_KEYWORDS = + + ('and', 'del', 'from', 'not', 'while', 'as', 'elif', 'global', 'or', 'with', 'assert', 'else', 'if', 'pass', 'yield', 'break', 'except', 'import', 'rint', 'class', 'exec', 'in', 'raise', 'continue', 'finally', 'is', 'return', 'def', 'for', 'lambda', 'try') + + +
+ + + + +
+
+ +
+ + class + JsonObject: + + + +
+ +
13class JsonObject:
+14    def __init__(self):
+15        pass
+
+ + + + +
+
+ +
+ + def + safe_name(n): + + + +
+ +
18def safe_name(n):
+19    if n in PYTHON_KEYWORDS:
+20        return n + "_"
+21    else:
+22        return n
+
+ + + + +
+
+ +
+ + def + unfold(d): + + + +
+ +
25def unfold(d):
+26    if isinstance(d, dict):
+27        o = JsonObject()
+28        for k, v in iterator(d):
+29            o.__dict__[safe_name(k)] = unfold(v)
+30        return o
+31    elif isinstance(d, list):
+32        o = [unfold(x) for x in d]
+33        return o
+34    else:
+35        return d
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/ringcentral/http/json_object.py b/ringcentral/http/json_object.py deleted file mode 100644 index b17f4bc..0000000 --- a/ringcentral/http/json_object.py +++ /dev/null @@ -1,34 +0,0 @@ -# !/usr/bin/env python -# encoding: utf-8 -from ..core import iterator - - -PYTHON_KEYWORDS = ( - "and", "del", "from", "not", "while", "as", "elif", "global", "or", "with", "assert", "else", "if", "pass", "yield", - "break", "except", "import", "rint", "class", "exec", "in", "raise", "continue", "finally", "is", "return", "def", - "for", "lambda", "try",) - - -class JsonObject: - def __init__(self): - pass - - -def safe_name(n): - if n in PYTHON_KEYWORDS: - return n + "_" - else: - return n - - -def unfold(d): - if isinstance(d, dict): - o = JsonObject() - for k, v in iterator(d): - o.__dict__[safe_name(k)] = unfold(v) - return o - elif isinstance(d, list): - o = [unfold(x) for x in d] - return o - else: - return d diff --git a/ringcentral/http/multipart_builder.html b/ringcentral/http/multipart_builder.html new file mode 100644 index 0000000..aa6ff6e --- /dev/null +++ b/ringcentral/http/multipart_builder.html @@ -0,0 +1,556 @@ + + + + + + + ringcentral.http.multipart_builder API documentation + + + + + + + + + +
+
+

+ringcentral.http.multipart_builder

+ + + + + + +
 1import json
+ 2import requests
+ 3
+ 4
+ 5class MultipartBuilder:
+ 6    def __init__(self, platform):
+ 7        self._body = None
+ 8        self._contents = []
+ 9        self._boundary = ''
+10        self._multipart_mixed = False
+11        self._platform = platform
+12
+13    def set_multipart_mixed(self, multipart_mixed):
+14        self._multipart_mixed = multipart_mixed
+15        return self
+16
+17    def set_body(self, body):
+18        self._body = body
+19        return self
+20
+21    def body(self):
+22        return self._body
+23
+24    def contents(self):
+25        return self._contents
+26
+27    def add(self, attachment, name='attachment'):
+28        """
+29        Possible attachment formats:
+30
+31        1. Downloaded: ('filename.ext', urllib.urlopen('https://...').read(), 'image/png')
+32        2. Local file: ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})
+33        3. Direct local file w/o meta: open('report.xls', 'rb')
+34        4. Plain text: ('report.csv', 'some,data,to,send')
+35
+36        :param attachment:
+37        :param name='attachment':
+38        :return:
+39        """
+40        self._contents.append((name, attachment))
+41        return self
+42
+43    def request(self, url, method='POST'):
+44        files = [('json', ('request.json', json.dumps(self._body), 'application/json'))] + self._contents
+45        request = requests.Request(method, url, files=files)
+46        if self._multipart_mixed: # Ref: https://github.com/requests/requests/issues/1736#issuecomment-28470217
+47            request.url = self._platform.create_url(request.url, add_server=True) # prepare requires full url
+48            request = request.prepare()
+49            request.headers['Content-Type'] = request.headers['Content-Type'].replace('multipart/form-data;', 'multipart/mixed;')
+50        return request
+
+ + +
+
+ +
+ + class + MultipartBuilder: + + + +
+ +
 6class MultipartBuilder:
+ 7    def __init__(self, platform):
+ 8        self._body = None
+ 9        self._contents = []
+10        self._boundary = ''
+11        self._multipart_mixed = False
+12        self._platform = platform
+13
+14    def set_multipart_mixed(self, multipart_mixed):
+15        self._multipart_mixed = multipart_mixed
+16        return self
+17
+18    def set_body(self, body):
+19        self._body = body
+20        return self
+21
+22    def body(self):
+23        return self._body
+24
+25    def contents(self):
+26        return self._contents
+27
+28    def add(self, attachment, name='attachment'):
+29        """
+30        Possible attachment formats:
+31
+32        1. Downloaded: ('filename.ext', urllib.urlopen('https://...').read(), 'image/png')
+33        2. Local file: ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})
+34        3. Direct local file w/o meta: open('report.xls', 'rb')
+35        4. Plain text: ('report.csv', 'some,data,to,send')
+36
+37        :param attachment:
+38        :param name='attachment':
+39        :return:
+40        """
+41        self._contents.append((name, attachment))
+42        return self
+43
+44    def request(self, url, method='POST'):
+45        files = [('json', ('request.json', json.dumps(self._body), 'application/json'))] + self._contents
+46        request = requests.Request(method, url, files=files)
+47        if self._multipart_mixed: # Ref: https://github.com/requests/requests/issues/1736#issuecomment-28470217
+48            request.url = self._platform.create_url(request.url, add_server=True) # prepare requires full url
+49            request = request.prepare()
+50            request.headers['Content-Type'] = request.headers['Content-Type'].replace('multipart/form-data;', 'multipart/mixed;')
+51        return request
+
+ + + + +
+ +
+ + MultipartBuilder(platform) + + + +
+ +
 7    def __init__(self, platform):
+ 8        self._body = None
+ 9        self._contents = []
+10        self._boundary = ''
+11        self._multipart_mixed = False
+12        self._platform = platform
+
+ + + + +
+
+ +
+ + def + set_multipart_mixed(self, multipart_mixed): + + + +
+ +
14    def set_multipart_mixed(self, multipart_mixed):
+15        self._multipart_mixed = multipart_mixed
+16        return self
+
+ + + + +
+
+ +
+ + def + set_body(self, body): + + + +
+ +
18    def set_body(self, body):
+19        self._body = body
+20        return self
+
+ + + + +
+
+ +
+ + def + body(self): + + + +
+ +
22    def body(self):
+23        return self._body
+
+ + + + +
+
+ +
+ + def + contents(self): + + + +
+ +
25    def contents(self):
+26        return self._contents
+
+ + + + +
+
+ +
+ + def + add(self, attachment, name='attachment'): + + + +
+ +
28    def add(self, attachment, name='attachment'):
+29        """
+30        Possible attachment formats:
+31
+32        1. Downloaded: ('filename.ext', urllib.urlopen('https://...').read(), 'image/png')
+33        2. Local file: ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})
+34        3. Direct local file w/o meta: open('report.xls', 'rb')
+35        4. Plain text: ('report.csv', 'some,data,to,send')
+36
+37        :param attachment:
+38        :param name='attachment':
+39        :return:
+40        """
+41        self._contents.append((name, attachment))
+42        return self
+
+ + +

Possible attachment formats:

+ +
    +
  1. Downloaded: ('filename.ext', urllib.urlopen('https://...').read(), 'image/png')
  2. +
  3. Local file: ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})
  4. +
  5. Direct local file w/o meta: open('report.xls', 'rb')
  6. +
  7. Plain text: ('report.csv', 'some,data,to,send')
  8. +
+ +
Parameters
+ +
    +
  • attachment:
  • +
  • name='attachment':
  • +
+ +
Returns
+
+ + +
+
+ +
+ + def + request(self, url, method='POST'): + + + +
+ +
44    def request(self, url, method='POST'):
+45        files = [('json', ('request.json', json.dumps(self._body), 'application/json'))] + self._contents
+46        request = requests.Request(method, url, files=files)
+47        if self._multipart_mixed: # Ref: https://github.com/requests/requests/issues/1736#issuecomment-28470217
+48            request.url = self._platform.create_url(request.url, add_server=True) # prepare requires full url
+49            request = request.prepare()
+50            request.headers['Content-Type'] = request.headers['Content-Type'].replace('multipart/form-data;', 'multipart/mixed;')
+51        return request
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/ringcentral/http/multipart_builder.py b/ringcentral/http/multipart_builder.py deleted file mode 100644 index 4914cb4..0000000 --- a/ringcentral/http/multipart_builder.py +++ /dev/null @@ -1,50 +0,0 @@ -import json -import requests - - -class MultipartBuilder: - def __init__(self, platform): - self._body = None - self._contents = [] - self._boundary = '' - self._multipart_mixed = False - self._platform = platform - - def set_multipart_mixed(self, multipart_mixed): - self._multipart_mixed = multipart_mixed - return self - - def set_body(self, body): - self._body = body - return self - - def body(self): - return self._body - - def contents(self): - return self._contents - - def add(self, attachment, name='attachment'): - """ - Possible attachment formats: - - 1. Downloaded: ('filename.ext', urllib.urlopen('https://...').read(), 'image/png') - 2. Local file: ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'}) - 3. Direct local file w/o meta: open('report.xls', 'rb') - 4. Plain text: ('report.csv', 'some,data,to,send') - - :param attachment: - :param name='attachment': - :return: - """ - self._contents.append((name, attachment)) - return self - - def request(self, url, method='POST'): - files = [('json', ('request.json', json.dumps(self._body), 'application/json'))] + self._contents - request = requests.Request(method, url, files=files) - if self._multipart_mixed: # Ref: https://github.com/requests/requests/issues/1736#issuecomment-28470217 - request.url = self._platform.create_url(request.url, add_server=True) # prepare requires full url - request = request.prepare() - request.headers['Content-Type'] = request.headers['Content-Type'].replace('multipart/form-data;', 'multipart/mixed;') - return request diff --git a/ringcentral/http/multipart_builder_test.html b/ringcentral/http/multipart_builder_test.html new file mode 100644 index 0000000..51658c7 --- /dev/null +++ b/ringcentral/http/multipart_builder_test.html @@ -0,0 +1,580 @@ + + + + + + + ringcentral.http.multipart_builder_test API documentation + + + + + + + + + +
+
+

+ringcentral.http.multipart_builder_test

+ + + + + + +
 1import unittest
+ 2
+ 3from ..test import TestCase
+ 4from .multipart_builder import MultipartBuilder
+ 5
+ 6class MockPlatform:
+ 7    def create_url(self, url, add_server):
+ 8        if add_server:
+ 9            return 'http://example.com/' + url
+10        return url
+11
+12class TestMultipartBuilder(TestCase):
+13    def test_add(self):
+14        mb = MultipartBuilder(MockPlatform())
+15
+16        mb.set_body({'foo': 'bar'})
+17        mb.add(('report.csv', 'some,data,to,send'))
+18
+19        req = mb.request('/foo')
+20
+21        self.assertEqual(mb.body(), {'foo': 'bar'})
+22        self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))])
+23        self.assertEqual(req.files, [
+24            ('json', ('request.json', '{"foo": "bar"}', 'application/json')),
+25            ('attachment', ('report.csv', 'some,data,to,send'))
+26        ])
+27
+28    def test_multipart_mixed(self):
+29        mb = MultipartBuilder(MockPlatform())
+30
+31        mb.set_body({'foo': 'bar'})
+32        mb.add(('report.csv', 'some,data,to,send'))
+33        mb.set_multipart_mixed(True)
+34
+35        req = mb.request('/foo')
+36
+37        self.assertTrue('multipart/mixed' in req.headers['Content-Type'], True)
+38        self.assertEqual(mb.body(), {'foo': 'bar'})
+39        self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))])
+40
+41
+42if __name__ == '__main__':
+43    unittest.main()
+
+ + +
+
+ +
+ + class + MockPlatform: + + + +
+ +
 7class MockPlatform:
+ 8    def create_url(self, url, add_server):
+ 9        if add_server:
+10            return 'http://example.com/' + url
+11        return url
+
+ + + + +
+ +
+ + def + create_url(self, url, add_server): + + + +
+ +
 8    def create_url(self, url, add_server):
+ 9        if add_server:
+10            return 'http://example.com/' + url
+11        return url
+
+ + + + +
+
+
+ +
+ + class + TestMultipartBuilder(ringcentral.test.testcase.TestCase): + + + +
+ +
13class TestMultipartBuilder(TestCase):
+14    def test_add(self):
+15        mb = MultipartBuilder(MockPlatform())
+16
+17        mb.set_body({'foo': 'bar'})
+18        mb.add(('report.csv', 'some,data,to,send'))
+19
+20        req = mb.request('/foo')
+21
+22        self.assertEqual(mb.body(), {'foo': 'bar'})
+23        self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))])
+24        self.assertEqual(req.files, [
+25            ('json', ('request.json', '{"foo": "bar"}', 'application/json')),
+26            ('attachment', ('report.csv', 'some,data,to,send'))
+27        ])
+28
+29    def test_multipart_mixed(self):
+30        mb = MultipartBuilder(MockPlatform())
+31
+32        mb.set_body({'foo': 'bar'})
+33        mb.add(('report.csv', 'some,data,to,send'))
+34        mb.set_multipart_mixed(True)
+35
+36        req = mb.request('/foo')
+37
+38        self.assertTrue('multipart/mixed' in req.headers['Content-Type'], True)
+39        self.assertEqual(mb.body(), {'foo': 'bar'})
+40        self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))])
+
+ + +

A class whose instances are single test cases.

+ +

By default, the test code itself should be placed in a method named +'runTest'.

+ +

If the fixture may be used for many test cases, create as +many test methods as are needed. When instantiating such a TestCase +subclass, specify in the constructor arguments the name of the test method +that the instance is to execute.

+ +

Test authors should subclass TestCase for their own tests. Construction +and deconstruction of the test's environment ('fixture') can be +implemented by overriding the 'setUp' and 'tearDown' methods respectively.

+ +

If it is necessary to override the __init__ method, the base class +__init__ method must always be called. It is important that subclasses +should not change the signature of their __init__ method, since instances +of the classes are instantiated automatically by parts of the framework +in order to be run.

+ +

When subclassing TestCase, you can set these attributes:

+ +
    +
  • failureException: determines which exception will be raised when +the instance's assertion methods fail; test methods raising this +exception will be deemed to have 'failed' rather than 'errored'.
  • +
  • longMessage: determines whether long messages (including repr of +objects used in assert methods) will be printed on failure in addition +to any explicit message passed.
  • +
  • maxDiff: sets the maximum length of a diff in failure messages +by assert methods using difflib. It is looked up as an instance +attribute so can be configured by individual tests if required.
  • +
+
+ + +
+ +
+ + def + test_add(self): + + + +
+ +
14    def test_add(self):
+15        mb = MultipartBuilder(MockPlatform())
+16
+17        mb.set_body({'foo': 'bar'})
+18        mb.add(('report.csv', 'some,data,to,send'))
+19
+20        req = mb.request('/foo')
+21
+22        self.assertEqual(mb.body(), {'foo': 'bar'})
+23        self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))])
+24        self.assertEqual(req.files, [
+25            ('json', ('request.json', '{"foo": "bar"}', 'application/json')),
+26            ('attachment', ('report.csv', 'some,data,to,send'))
+27        ])
+
+ + + + +
+
+ +
+ + def + test_multipart_mixed(self): + + + +
+ +
29    def test_multipart_mixed(self):
+30        mb = MultipartBuilder(MockPlatform())
+31
+32        mb.set_body({'foo': 'bar'})
+33        mb.add(('report.csv', 'some,data,to,send'))
+34        mb.set_multipart_mixed(True)
+35
+36        req = mb.request('/foo')
+37
+38        self.assertTrue('multipart/mixed' in req.headers['Content-Type'], True)
+39        self.assertEqual(mb.body(), {'foo': 'bar'})
+40        self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))])
+
+ + + + +
+
+
Inherited Members
+
+ +
unittest.case.TestCase
+
failureException
+
longMessage
+
maxDiff
+
addTypeEqualityFunc
+
addCleanup
+
enterContext
+
addClassCleanup
+
enterClassContext
+
setUp
+
tearDown
+
setUpClass
+
tearDownClass
+
countTestCases
+
defaultTestResult
+
shortDescription
+
id
+
subTest
+
run
+
doCleanups
+
doClassCleanups
+
debug
+
skipTest
+
fail
+
assertFalse
+
assertTrue
+
assertRaises
+
assertWarns
+
assertLogs
+
assertNoLogs
+
assertEqual
+
assertNotEqual
+
assertAlmostEqual
+
assertNotAlmostEqual
+
assertSequenceEqual
+
assertListEqual
+
assertTupleEqual
+
assertSetEqual
+
assertIn
+
assertNotIn
+
assertIs
+
assertIsNot
+
assertDictEqual
+
assertDictContainsSubset
+
assertCountEqual
+
assertMultiLineEqual
+
assertLess
+
assertLessEqual
+
assertGreater
+
assertGreaterEqual
+
assertIsNone
+
assertIsNotNone
+
assertIsInstance
+
assertNotIsInstance
+
assertRaisesRegex
+
assertWarnsRegex
+
assertRegex
+
assertNotRegex
+
failUnlessRaises
+
failIf
+
assertRaisesRegexp
+
assertRegexpMatches
+
assertNotRegexpMatches
+
failUnlessEqual
+
assertEquals
+
failIfEqual
+
assertNotEquals
+
failUnlessAlmostEqual
+
assertAlmostEquals
+
failIfAlmostEqual
+
assertNotAlmostEquals
+
failUnless
+
assert_
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/http/multipart_builder_test.py b/ringcentral/http/multipart_builder_test.py deleted file mode 100644 index 4654fa3..0000000 --- a/ringcentral/http/multipart_builder_test.py +++ /dev/null @@ -1,43 +0,0 @@ -import unittest - -from ..test import TestCase -from .multipart_builder import MultipartBuilder - -class MockPlatform: - def create_url(self, url, add_server): - if add_server: - return 'http://example.com/' + url - return url - -class TestMultipartBuilder(TestCase): - def test_add(self): - mb = MultipartBuilder(MockPlatform()) - - mb.set_body({'foo': 'bar'}) - mb.add(('report.csv', 'some,data,to,send')) - - req = mb.request('/foo') - - self.assertEqual(mb.body(), {'foo': 'bar'}) - self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))]) - self.assertEqual(req.files, [ - ('json', ('request.json', '{"foo": "bar"}', 'application/json')), - ('attachment', ('report.csv', 'some,data,to,send')) - ]) - - def test_multipart_mixed(self): - mb = MultipartBuilder(MockPlatform()) - - mb.set_body({'foo': 'bar'}) - mb.add(('report.csv', 'some,data,to,send')) - mb.set_multipart_mixed(True) - - req = mb.request('/foo') - - self.assertTrue('multipart/mixed' in req.headers['Content-Type'], True) - self.assertEqual(mb.body(), {'foo': 'bar'}) - self.assertEqual(mb.contents(), [('attachment', ('report.csv', 'some,data,to,send'))]) - - -if __name__ == '__main__': - unittest.main() diff --git a/ringcentral/platform.html b/ringcentral/platform.html new file mode 100644 index 0000000..59a9c68 --- /dev/null +++ b/ringcentral/platform.html @@ -0,0 +1,246 @@ + + + + + + + ringcentral.platform API documentation + + + + + + + + + +
+
+

+ringcentral.platform

+ + + + + + +
1from .auth import Auth
+2from .platform import Platform
+
+ + +
+
+ + \ No newline at end of file diff --git a/ringcentral/platform/__init__.py b/ringcentral/platform/__init__.py deleted file mode 100644 index cd269cf..0000000 --- a/ringcentral/platform/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .auth import Auth -from .platform import Platform diff --git a/ringcentral/platform/auth.html b/ringcentral/platform/auth.html new file mode 100644 index 0000000..163261e --- /dev/null +++ b/ringcentral/platform/auth.html @@ -0,0 +1,761 @@ + + + + + + + ringcentral.platform.auth API documentation + + + + + + + + + +
+
+

+ringcentral.platform.auth

+ + + + + + +
  1from time import time
+  2
+  3RELEASE_TIMEOUT = 10
+  4
+  5
+  6class Auth:
+  7    def __init__(self):
+  8        self.__remember = False
+  9
+ 10        self.__token_type = ''
+ 11
+ 12        self.__access_token = ''
+ 13        self.__expires_in = 0
+ 14        self.__expire_time = 0
+ 15
+ 16        self.__refresh_token = ''
+ 17        self.__refresh_token_expires_in = 0
+ 18        self.__refresh_token_expire_time = 0
+ 19
+ 20        self.__scope = ''
+ 21        self.__owner_id = ''
+ 22
+ 23    def set_data(self, auth_data=None):
+ 24
+ 25        if auth_data is None:
+ 26            return self
+ 27
+ 28        # Misc
+ 29
+ 30        if 'remember' in auth_data:
+ 31            self.__remember = auth_data.get('remember')
+ 32
+ 33        if 'token_type' in auth_data:
+ 34            self.__token_type = auth_data.get('token_type')
+ 35
+ 36        if 'owner_id' in auth_data:
+ 37            self.__owner_id = auth_data.get('owner_id')
+ 38
+ 39        if 'scope' in auth_data:
+ 40            self.__scope = auth_data.get('scope')
+ 41
+ 42        # Access Token
+ 43
+ 44        if 'access_token' in auth_data:
+ 45            self.__access_token = auth_data.get('access_token')
+ 46
+ 47        if 'expires_in' in auth_data:
+ 48            self.__expires_in = auth_data.get('expires_in')
+ 49
+ 50        if 'expire_time' not in auth_data and 'expires_in' in auth_data:
+ 51            self.__expire_time = time() + auth_data.get('expires_in')
+ 52        elif 'expire_time' in auth_data:
+ 53            self.__expire_time = auth_data.get('expire_time')
+ 54
+ 55        # Refresh Token
+ 56
+ 57        if 'refresh_token' in auth_data:
+ 58            self.__refresh_token = auth_data.get('refresh_token')
+ 59
+ 60        if 'refresh_token_expires_in' in auth_data:
+ 61            self.__refresh_token_expires_in = auth_data.get('refresh_token_expires_in')
+ 62
+ 63        if 'refresh_token_expire_time' not in auth_data and 'refresh_token_expires_in' in auth_data:
+ 64            self.__refresh_token_expire_time = time() + auth_data.get('refresh_token_expires_in')
+ 65        elif 'refresh_token_expire_time' in auth_data:
+ 66            self.__refresh_token_expire_time = auth_data.get('refresh_token_expire_time')
+ 67
+ 68        return self
+ 69
+ 70    def data(self):
+ 71        return {
+ 72            'remember': self.__remember,
+ 73            'token_type': self.__token_type,
+ 74
+ 75            'access_token': self.__access_token,
+ 76            'expires_in': self.__expires_in,
+ 77            'expire_time': self.__expire_time,
+ 78
+ 79            'refresh_token': self.__refresh_token,
+ 80            'refresh_token_expires_in': self.__refresh_token_expires_in,
+ 81            'refresh_token_expire_time': self.__refresh_token_expire_time,
+ 82
+ 83            'scope': self.__scope,
+ 84            'owner_id': self.__owner_id
+ 85        }
+ 86
+ 87    def reset(self):
+ 88        self.__remember = False
+ 89
+ 90        self.__token_type = ''
+ 91
+ 92        self.__access_token = ''
+ 93        self.__expires_in = 0
+ 94        self.__expire_time = 0
+ 95
+ 96        self.__refresh_token = ''
+ 97        self.__refresh_token_expires_in = 0
+ 98        self.__refresh_token_expire_time = 0
+ 99
+100        self.__scope = ''
+101        self.__owner_id = ''
+102
+103    def access_token(self):
+104        return self.__access_token
+105
+106    def refresh_token(self):
+107        return self.__refresh_token
+108
+109    def token_type(self):
+110        return self.__token_type
+111
+112    def access_token_valid(self):
+113        return self.__is_token_date_valid(self.data().get('expire_time'))
+114
+115    def refresh_token_valid(self):
+116        return self.__is_token_date_valid(self.data().get('refresh_token_expire_time'))
+117
+118    @staticmethod
+119    def __is_token_date_valid(token_date):
+120        return token_date > time()
+
+ + +
+
+
+ RELEASE_TIMEOUT = +10 + + +
+ + + + +
+
+ +
+ + class + Auth: + + + +
+ +
  7class Auth:
+  8    def __init__(self):
+  9        self.__remember = False
+ 10
+ 11        self.__token_type = ''
+ 12
+ 13        self.__access_token = ''
+ 14        self.__expires_in = 0
+ 15        self.__expire_time = 0
+ 16
+ 17        self.__refresh_token = ''
+ 18        self.__refresh_token_expires_in = 0
+ 19        self.__refresh_token_expire_time = 0
+ 20
+ 21        self.__scope = ''
+ 22        self.__owner_id = ''
+ 23
+ 24    def set_data(self, auth_data=None):
+ 25
+ 26        if auth_data is None:
+ 27            return self
+ 28
+ 29        # Misc
+ 30
+ 31        if 'remember' in auth_data:
+ 32            self.__remember = auth_data.get('remember')
+ 33
+ 34        if 'token_type' in auth_data:
+ 35            self.__token_type = auth_data.get('token_type')
+ 36
+ 37        if 'owner_id' in auth_data:
+ 38            self.__owner_id = auth_data.get('owner_id')
+ 39
+ 40        if 'scope' in auth_data:
+ 41            self.__scope = auth_data.get('scope')
+ 42
+ 43        # Access Token
+ 44
+ 45        if 'access_token' in auth_data:
+ 46            self.__access_token = auth_data.get('access_token')
+ 47
+ 48        if 'expires_in' in auth_data:
+ 49            self.__expires_in = auth_data.get('expires_in')
+ 50
+ 51        if 'expire_time' not in auth_data and 'expires_in' in auth_data:
+ 52            self.__expire_time = time() + auth_data.get('expires_in')
+ 53        elif 'expire_time' in auth_data:
+ 54            self.__expire_time = auth_data.get('expire_time')
+ 55
+ 56        # Refresh Token
+ 57
+ 58        if 'refresh_token' in auth_data:
+ 59            self.__refresh_token = auth_data.get('refresh_token')
+ 60
+ 61        if 'refresh_token_expires_in' in auth_data:
+ 62            self.__refresh_token_expires_in = auth_data.get('refresh_token_expires_in')
+ 63
+ 64        if 'refresh_token_expire_time' not in auth_data and 'refresh_token_expires_in' in auth_data:
+ 65            self.__refresh_token_expire_time = time() + auth_data.get('refresh_token_expires_in')
+ 66        elif 'refresh_token_expire_time' in auth_data:
+ 67            self.__refresh_token_expire_time = auth_data.get('refresh_token_expire_time')
+ 68
+ 69        return self
+ 70
+ 71    def data(self):
+ 72        return {
+ 73            'remember': self.__remember,
+ 74            'token_type': self.__token_type,
+ 75
+ 76            'access_token': self.__access_token,
+ 77            'expires_in': self.__expires_in,
+ 78            'expire_time': self.__expire_time,
+ 79
+ 80            'refresh_token': self.__refresh_token,
+ 81            'refresh_token_expires_in': self.__refresh_token_expires_in,
+ 82            'refresh_token_expire_time': self.__refresh_token_expire_time,
+ 83
+ 84            'scope': self.__scope,
+ 85            'owner_id': self.__owner_id
+ 86        }
+ 87
+ 88    def reset(self):
+ 89        self.__remember = False
+ 90
+ 91        self.__token_type = ''
+ 92
+ 93        self.__access_token = ''
+ 94        self.__expires_in = 0
+ 95        self.__expire_time = 0
+ 96
+ 97        self.__refresh_token = ''
+ 98        self.__refresh_token_expires_in = 0
+ 99        self.__refresh_token_expire_time = 0
+100
+101        self.__scope = ''
+102        self.__owner_id = ''
+103
+104    def access_token(self):
+105        return self.__access_token
+106
+107    def refresh_token(self):
+108        return self.__refresh_token
+109
+110    def token_type(self):
+111        return self.__token_type
+112
+113    def access_token_valid(self):
+114        return self.__is_token_date_valid(self.data().get('expire_time'))
+115
+116    def refresh_token_valid(self):
+117        return self.__is_token_date_valid(self.data().get('refresh_token_expire_time'))
+118
+119    @staticmethod
+120    def __is_token_date_valid(token_date):
+121        return token_date > time()
+
+ + + + +
+ +
+ + def + set_data(self, auth_data=None): + + + +
+ +
24    def set_data(self, auth_data=None):
+25
+26        if auth_data is None:
+27            return self
+28
+29        # Misc
+30
+31        if 'remember' in auth_data:
+32            self.__remember = auth_data.get('remember')
+33
+34        if 'token_type' in auth_data:
+35            self.__token_type = auth_data.get('token_type')
+36
+37        if 'owner_id' in auth_data:
+38            self.__owner_id = auth_data.get('owner_id')
+39
+40        if 'scope' in auth_data:
+41            self.__scope = auth_data.get('scope')
+42
+43        # Access Token
+44
+45        if 'access_token' in auth_data:
+46            self.__access_token = auth_data.get('access_token')
+47
+48        if 'expires_in' in auth_data:
+49            self.__expires_in = auth_data.get('expires_in')
+50
+51        if 'expire_time' not in auth_data and 'expires_in' in auth_data:
+52            self.__expire_time = time() + auth_data.get('expires_in')
+53        elif 'expire_time' in auth_data:
+54            self.__expire_time = auth_data.get('expire_time')
+55
+56        # Refresh Token
+57
+58        if 'refresh_token' in auth_data:
+59            self.__refresh_token = auth_data.get('refresh_token')
+60
+61        if 'refresh_token_expires_in' in auth_data:
+62            self.__refresh_token_expires_in = auth_data.get('refresh_token_expires_in')
+63
+64        if 'refresh_token_expire_time' not in auth_data and 'refresh_token_expires_in' in auth_data:
+65            self.__refresh_token_expire_time = time() + auth_data.get('refresh_token_expires_in')
+66        elif 'refresh_token_expire_time' in auth_data:
+67            self.__refresh_token_expire_time = auth_data.get('refresh_token_expire_time')
+68
+69        return self
+
+ + + + +
+
+ +
+ + def + data(self): + + + +
+ +
71    def data(self):
+72        return {
+73            'remember': self.__remember,
+74            'token_type': self.__token_type,
+75
+76            'access_token': self.__access_token,
+77            'expires_in': self.__expires_in,
+78            'expire_time': self.__expire_time,
+79
+80            'refresh_token': self.__refresh_token,
+81            'refresh_token_expires_in': self.__refresh_token_expires_in,
+82            'refresh_token_expire_time': self.__refresh_token_expire_time,
+83
+84            'scope': self.__scope,
+85            'owner_id': self.__owner_id
+86        }
+
+ + + + +
+
+ +
+ + def + reset(self): + + + +
+ +
 88    def reset(self):
+ 89        self.__remember = False
+ 90
+ 91        self.__token_type = ''
+ 92
+ 93        self.__access_token = ''
+ 94        self.__expires_in = 0
+ 95        self.__expire_time = 0
+ 96
+ 97        self.__refresh_token = ''
+ 98        self.__refresh_token_expires_in = 0
+ 99        self.__refresh_token_expire_time = 0
+100
+101        self.__scope = ''
+102        self.__owner_id = ''
+
+ + + + +
+
+ +
+ + def + access_token(self): + + + +
+ +
104    def access_token(self):
+105        return self.__access_token
+
+ + + + +
+
+ +
+ + def + refresh_token(self): + + + +
+ +
107    def refresh_token(self):
+108        return self.__refresh_token
+
+ + + + +
+
+ +
+ + def + token_type(self): + + + +
+ +
110    def token_type(self):
+111        return self.__token_type
+
+ + + + +
+
+ +
+ + def + access_token_valid(self): + + + +
+ +
113    def access_token_valid(self):
+114        return self.__is_token_date_valid(self.data().get('expire_time'))
+
+ + + + +
+
+ +
+ + def + refresh_token_valid(self): + + + +
+ +
116    def refresh_token_valid(self):
+117        return self.__is_token_date_valid(self.data().get('refresh_token_expire_time'))
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/ringcentral/platform/auth.py b/ringcentral/platform/auth.py deleted file mode 100644 index 9769ca3..0000000 --- a/ringcentral/platform/auth.py +++ /dev/null @@ -1,120 +0,0 @@ -from time import time - -RELEASE_TIMEOUT = 10 - - -class Auth: - def __init__(self): - self.__remember = False - - self.__token_type = '' - - self.__access_token = '' - self.__expires_in = 0 - self.__expire_time = 0 - - self.__refresh_token = '' - self.__refresh_token_expires_in = 0 - self.__refresh_token_expire_time = 0 - - self.__scope = '' - self.__owner_id = '' - - def set_data(self, auth_data=None): - - if auth_data is None: - return self - - # Misc - - if 'remember' in auth_data: - self.__remember = auth_data.get('remember') - - if 'token_type' in auth_data: - self.__token_type = auth_data.get('token_type') - - if 'owner_id' in auth_data: - self.__owner_id = auth_data.get('owner_id') - - if 'scope' in auth_data: - self.__scope = auth_data.get('scope') - - # Access Token - - if 'access_token' in auth_data: - self.__access_token = auth_data.get('access_token') - - if 'expires_in' in auth_data: - self.__expires_in = auth_data.get('expires_in') - - if 'expire_time' not in auth_data and 'expires_in' in auth_data: - self.__expire_time = time() + auth_data.get('expires_in') - elif 'expire_time' in auth_data: - self.__expire_time = auth_data.get('expire_time') - - # Refresh Token - - if 'refresh_token' in auth_data: - self.__refresh_token = auth_data.get('refresh_token') - - if 'refresh_token_expires_in' in auth_data: - self.__refresh_token_expires_in = auth_data.get('refresh_token_expires_in') - - if 'refresh_token_expire_time' not in auth_data and 'refresh_token_expires_in' in auth_data: - self.__refresh_token_expire_time = time() + auth_data.get('refresh_token_expires_in') - elif 'refresh_token_expire_time' in auth_data: - self.__refresh_token_expire_time = auth_data.get('refresh_token_expire_time') - - return self - - def data(self): - return { - 'remember': self.__remember, - 'token_type': self.__token_type, - - 'access_token': self.__access_token, - 'expires_in': self.__expires_in, - 'expire_time': self.__expire_time, - - 'refresh_token': self.__refresh_token, - 'refresh_token_expires_in': self.__refresh_token_expires_in, - 'refresh_token_expire_time': self.__refresh_token_expire_time, - - 'scope': self.__scope, - 'owner_id': self.__owner_id - } - - def reset(self): - self.__remember = False - - self.__token_type = '' - - self.__access_token = '' - self.__expires_in = 0 - self.__expire_time = 0 - - self.__refresh_token = '' - self.__refresh_token_expires_in = 0 - self.__refresh_token_expire_time = 0 - - self.__scope = '' - self.__owner_id = '' - - def access_token(self): - return self.__access_token - - def refresh_token(self): - return self.__refresh_token - - def token_type(self): - return self.__token_type - - def access_token_valid(self): - return self.__is_token_date_valid(self.data().get('expire_time')) - - def refresh_token_valid(self): - return self.__is_token_date_valid(self.data().get('refresh_token_expire_time')) - - @staticmethod - def __is_token_date_valid(token_date): - return token_date > time() diff --git a/ringcentral/platform/events.html b/ringcentral/platform/events.html new file mode 100644 index 0000000..8b9b50d --- /dev/null +++ b/ringcentral/platform/events.html @@ -0,0 +1,406 @@ + + + + + + + ringcentral.platform.events API documentation + + + + + + + + + +
+
+

+ringcentral.platform.events

+ + + + + + +
 1class Events:
+ 2    """
+ 3    Events class representing various event types.
+ 4
+ 5    Attributes:
+ 6        refreshSuccess (str): Represents a successful refresh event.
+ 7        refreshError (str): Represents an error during refresh.
+ 8        loginSuccess (str): Represents a successful login event.
+ 9        loginError (str): Represents an error during login.
+10        logoutSuccess (str): Represents a successful logout event.
+11        logoutError (str): Represents an error during logout.
+12    """
+13    refreshSuccess = 'refreshSuccess'
+14    refreshError = 'refreshError'
+15    loginSuccess = 'loginSuccess'
+16    loginError = 'loginError'
+17    logoutSuccess = 'logoutSuccess'
+18    logoutError = 'logoutError'
+19
+20    def __init__(self):
+21        pass
+
+ + +
+
+ +
+ + class + Events: + + + +
+ +
 3class Events:
+ 4    """
+ 5    Events class representing various event types.
+ 6
+ 7    Attributes:
+ 8        refreshSuccess (str): Represents a successful refresh event.
+ 9        refreshError (str): Represents an error during refresh.
+10        loginSuccess (str): Represents a successful login event.
+11        loginError (str): Represents an error during login.
+12        logoutSuccess (str): Represents a successful logout event.
+13        logoutError (str): Represents an error during logout.
+14    """
+15    refreshSuccess = 'refreshSuccess'
+16    refreshError = 'refreshError'
+17    loginSuccess = 'loginSuccess'
+18    loginError = 'loginError'
+19    logoutSuccess = 'logoutSuccess'
+20    logoutError = 'logoutError'
+21
+22    def __init__(self):
+23        pass
+
+ + +

Events class representing various event types.

+ +

Attributes: + refreshSuccess (str): Represents a successful refresh event. + refreshError (str): Represents an error during refresh. + loginSuccess (str): Represents a successful login event. + loginError (str): Represents an error during login. + logoutSuccess (str): Represents a successful logout event. + logoutError (str): Represents an error during logout.

+
+ + +
+
+ refreshSuccess = +'refreshSuccess' + + +
+ + + + +
+
+
+ refreshError = +'refreshError' + + +
+ + + + +
+
+
+ loginSuccess = +'loginSuccess' + + +
+ + + + +
+
+
+ loginError = +'loginError' + + +
+ + + + +
+
+
+ logoutSuccess = +'logoutSuccess' + + +
+ + + + +
+
+
+ logoutError = +'logoutError' + + +
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/ringcentral/platform/events.py b/ringcentral/platform/events.py deleted file mode 100644 index e16257b..0000000 --- a/ringcentral/platform/events.py +++ /dev/null @@ -1,22 +0,0 @@ - -class Events: - """ - Events class representing various event types. - - Attributes: - refreshSuccess (str): Represents a successful refresh event. - refreshError (str): Represents an error during refresh. - loginSuccess (str): Represents a successful login event. - loginError (str): Represents an error during login. - logoutSuccess (str): Represents a successful logout event. - logoutError (str): Represents an error during logout. - """ - refreshSuccess = 'refreshSuccess' - refreshError = 'refreshError' - loginSuccess = 'loginSuccess' - loginError = 'loginError' - logoutSuccess = 'logoutSuccess' - logoutError = 'logoutError' - - def __init__(self): - pass diff --git a/ringcentral/platform/platform.html b/ringcentral/platform/platform.html new file mode 100644 index 0000000..3ff8222 --- /dev/null +++ b/ringcentral/platform/platform.html @@ -0,0 +1,1728 @@ + + + + + + + ringcentral.platform.platform API documentation + + + + + + + + + +
+
+

+ringcentral.platform.platform

+ + + + + + +
  1import sys
+  2try:
+  3    from urllib.parse import urlparse
+  4except ImportError:
+  5    from urlparse import urlparse
+  6from observable import Observable
+  7from functools import reduce
+  8from .auth import Auth
+  9from .events import Events
+ 10from ..core import base64encode
+ 11import warnings
+ 12
+ 13ACCOUNT_ID = '~'
+ 14ACCOUNT_PREFIX = '/account/'
+ 15URL_PREFIX = '/restapi'
+ 16TOKEN_ENDPOINT = '/restapi/oauth/token'
+ 17REVOKE_ENDPOINT = '/restapi/oauth/revoke'
+ 18AUTHORIZE_ENDPOINT = '/restapi/oauth/authorize'
+ 19API_VERSION = 'v1.0'
+ 20ACCESS_TOKEN_TTL = 3600  # 60 minutes
+ 21REFRESH_TOKEN_TTL = 604800  # 1 week
+ 22KNOWN_PREFIXES = [
+ 23    URL_PREFIX,
+ 24    '/rcvideo',
+ 25    '/video',
+ 26    '/webinar',
+ 27    '/analytics',
+ 28    '/ai',
+ 29    '/team-messaging',
+ 30    '/scim',
+ 31    '/cx/'
+ 32]
+ 33
+ 34
+ 35class Platform(Observable):
+ 36    def __init__(self, client, key='', secret='', server='', name='', version='', redirect_uri='',
+ 37                 known_prefixes=None):
+ 38
+ 39        Observable.__init__(self)
+ 40        if(server == None):
+ 41            raise Exception("SDK init error: RINGCENTRAL_SERVER_URL value not found.")
+ 42        if(key == None):
+ 43            raise Exception("SDK init error: RINGCENTRAL_CLIENT_ID value not found.")
+ 44        if(secret == None):
+ 45            raise Exception("SDK init error: RINGCENTRAL_CLIENT_SECRET value not found.")
+ 46
+ 47        self._server = server
+ 48        self._key = key
+ 49        self._name = name if name else 'Unnamed'
+ 50        self._version = version if version else '0.0.0'
+ 51        self._redirect_uri = redirect_uri
+ 52        self._secret = secret
+ 53        self._client = client
+ 54        self._auth = Auth()
+ 55        self._account = ACCOUNT_ID
+ 56        self._known_prefixes = known_prefixes if known_prefixes else KNOWN_PREFIXES
+ 57        self._userAgent = ((self._name + ('/' + self._version if self._version else '') + ' ') if self._name else '') + \
+ 58                          sys.platform + '/VERSION' + ' ' + \
+ 59                          'PYTHON/VERSION ' + \
+ 60                          'RCPYTHONSDK/VERSION'
+ 61
+ 62    def auth(self):
+ 63        return self._auth
+ 64
+ 65    def create_url(self, url, add_server=False, add_method=None, add_token=False):
+ 66        """
+ 67            Creates a complete URL based on the provided URL and additional parameters.
+ 68
+ 69            Args:
+ 70                url (str): The base URL.
+ 71                add_server (bool): Whether to prepend the server URL if the provided URL doesn't contain 'http://' or 'https://'.
+ 72                add_method (str, optional): The HTTP method to append as a query parameter.
+ 73                add_token (bool): Whether to append the access token as a query parameter.
+ 74
+ 75            Returns:
+ 76                str: The complete URL.
+ 77
+ 78            Note:
+ 79                - If `add_server` is True and the provided URL doesn't start with 'http://' or 'https://', the server URL will be prepended.
+ 80                - If the provided URL doesn't contain known prefixes or 'http://' or 'https://', the URL_PREFIX and API_VERSION will be appended.
+ 81                - If the provided URL contains ACCOUNT_PREFIX followed by ACCOUNT_ID, it will be replaced with ACCOUNT_PREFIX and the account ID associated with the SDK instance.
+ 82                - If `add_method` is provided, it will be appended as a query parameter '_method'.
+ 83                - If `add_token` is True, the access token associated with the SDK instance will be appended as a query parameter 'access_token'.
+ 84        """
+ 85        built_url = ''
+ 86        has_http = url.startswith('http://') or url.startswith('https://')
+ 87
+ 88        if add_server and not has_http:
+ 89            built_url += self._server
+ 90
+ 91        if not reduce(lambda res, prefix: res if res else url.find(prefix) == 0, self._known_prefixes, False) and not has_http:
+ 92            built_url += URL_PREFIX + '/' + API_VERSION
+ 93
+ 94        if url.find(ACCOUNT_PREFIX) >= 0:
+ 95            built_url = built_url.replace(ACCOUNT_PREFIX + ACCOUNT_ID, ACCOUNT_PREFIX + self._account)
+ 96
+ 97        built_url += url
+ 98
+ 99        if add_method:
+100            built_url += ('&' if built_url.find('?') >= 0 else '?') + '_method=' + add_method
+101
+102        if add_token:
+103            built_url += ('&' if built_url.find('?') >= 0 else '?') + 'access_token=' + self._auth.access_token()
+104
+105        return built_url
+106
+107    def logged_in(self):
+108        """
+109        Checks if the user is currently logged in.
+110
+111        Returns:
+112            bool: True if the user is logged in, False otherwise.
+113
+114        Note:
+115            - This method checks if the access token is valid.
+116            - If the access token is not valid, it attempts to refresh it by calling the `refresh` method.
+117            - If any exceptions occur during the process, it returns False.
+118        """
+119        try:
+120            return self._auth.access_token_valid() or self.refresh()
+121        except:
+122            return False
+123
+124    def login_url(self, redirect_uri, state='', challenge='', challenge_method='S256'):
+125        """
+126        Generates the URL for initiating the login process.
+127
+128        Args:
+129            redirect_uri (str): The URI to which the user will be redirected after authentication.
+130            state (str, optional): A value to maintain state between the request and the callback. Default is ''.
+131            challenge (str, optional): The code challenge for PKCE (Proof Key for Code Exchange). Default is ''.
+132            challenge_method (str, optional): The code challenge method for PKCE. Default is 'S256'.
+133
+134        Returns:
+135            str: The login URL.
+136        """
+137        built_url = self.create_url( AUTHORIZE_ENDPOINT, add_server=True )
+138        built_url += '?response_type=code&client_id=' + self._key + '&redirect_uri=' + urllib.parse.quote(redirect_uri)
+139        if state:
+140            built_url += '&state=' + urllib.parse.quote(state)
+141        if challenge:
+142            built_url += '&code_challenge=' + urllib.parse.quote(challenge) + '&code_challenge_method=' + challenge_method
+143        return built_url
+144
+145    def login(self, username='', extension='', password='', code='', redirect_uri='', jwt='', verifier=''):
+146        """
+147            Logs in the user using various authentication methods.
+148
+149            Args:
+150                username (str, optional): The username for authentication. Required if password is provided. Default is ''.
+151                extension (str, optional): The extension associated with the username. Default is ''.
+152                password (str, optional): The password for authentication. Required if username is provided. Default is ''.
+153                code (str, optional): The authorization code for authentication. Default is ''.
+154                redirect_uri (str, optional): The URI to redirect to after authentication. Default is ''.
+155                jwt (str, optional): The JWT (JSON Web Token) for authentication. Default is ''.
+156                verifier (str, optional): The code verifier for PKCE (Proof Key for Code Exchange). Default is ''.
+157
+158            Returns:
+159                Response: The response object containing authentication data if successful.
+160
+161            Raises:
+162                Exception: If the login attempt fails or invalid parameters are provided.
+163
+164            Note:
+165                - This method supports multiple authentication flows including password-based, authorization code, and JWT.
+166                - It checks for the presence of required parameters and raises an exception if necessary.
+167                - Deprecation warning is issued for username-password login; recommend using JWT or OAuth instead.
+168                - Constructs the appropriate request body based on the provided parameters.
+169                - Uses `create_url` to build the token endpoint URL, adding the server URL if required.
+170                - Sends the authentication request using `_request_token`.
+171                - Triggers the loginSuccess or loginError event based on the outcome of the login attempt.
+172        """
+173        try:
+174            if not code and not username and not password and not jwt:
+175                raise Exception('Either code, or username with password, or jwt has to be provided')
+176            if username and password:
+177                warnings.warn("username-password login will soon be deprecated. Please use jwt or OAuth instead.")
+178            if not code and not jwt:
+179                body = {
+180                    'grant_type': 'password',
+181                    'username': username,
+182                    'password': password,
+183                    'access_token_ttl': ACCESS_TOKEN_TTL,
+184                    'refresh_token_ttl': REFRESH_TOKEN_TTL
+185                }
+186                if extension:
+187                    body['extension'] = extension
+188            elif jwt:
+189                body = {
+190                    'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer',
+191                    'assertion': jwt
+192                }
+193            else:
+194                body = {
+195                    'grant_type': 'authorization_code',
+196                    'redirect_uri': redirect_uri if redirect_uri else self._redirect_uri,
+197                    'code': code
+198                }
+199                if verifier:
+200                    body['code_verifier'] = verifier
+201
+202            built_url = self.create_url( TOKEN_ENDPOINT, add_server=True )
+203            response = self._request_token( built_url, body=body)
+204            self._auth.set_data(response.json_dict())
+205            self.trigger(Events.loginSuccess, response)
+206            return response
+207        except Exception as e:
+208            self.trigger(Events.loginError, e)
+209            raise e
+210
+211    def refresh(self):
+212        """
+213            Refreshes the authentication tokens.
+214
+215            Returns:
+216                Response: The response object containing refreshed authentication data if successful.
+217
+218            Raises:
+219                Exception: If the refresh token has expired or if any error occurs during the refresh process.
+220
+221            Note:
+222                - This method checks if the refresh token is still valid using `_auth.refresh_token_valid()`.
+223                - Constructs the request body with the grant type as 'refresh_token' and includes the refresh token.
+224                - Sends the token refresh request using `_request_token` at this '/restapi/oauth/token end point.
+225                - Triggers the refreshSuccess or refreshError event based on the outcome of the refresh attempt.
+226        """
+227        try:
+228            if not self._auth.refresh_token_valid():
+229                raise Exception('Refresh token has expired')
+230            response = self._request_token(TOKEN_ENDPOINT, body={
+231                'grant_type': 'refresh_token',
+232                'refresh_token': self._auth.refresh_token(),
+233                'access_token_ttl': ACCESS_TOKEN_TTL,
+234                'refresh_token_ttl': REFRESH_TOKEN_TTL
+235            })
+236            self._auth.set_data(response.json_dict())
+237            self.trigger(Events.refreshSuccess, response)
+238            return response
+239        except Exception as e:
+240            self.trigger(Events.refreshError, e)
+241            raise e
+242
+243    def logout(self):
+244        """
+245            Logs out the user by revoking the access token.
+246
+247            Returns:
+248                Response: The response object containing logout confirmation if successful.
+249
+250            Raises:
+251                Exception: If any error occurs during the logout process.
+252
+253            Note:
+254                - Constructs the request body with the access token to be revoked.
+255                - Sends the token revoke request using `_request_token` at this /restapi/oauth/revoke end point.
+256                - Resets the authentication data using `_auth.reset()` upon successful logout.
+257                - Triggers the logoutSuccess or logoutError event based on the outcome of the logout attempt.
+258        """
+259        try:
+260            response = self._request_token(REVOKE_ENDPOINT, body={
+261                'token': self._auth.access_token()
+262            })
+263            self._auth.reset()
+264            self.trigger(Events.logoutSuccess, response)
+265            return response
+266        except Exception as e:
+267            self.trigger(Events.logoutError, e)
+268            raise e
+269
+270    def inflate_request(self, request, skip_auth_check=False):
+271        """
+272            Inflates the provided request object with necessary headers and URL modifications.
+273
+274            Args:
+275                request (Request): The request object to be inflated.
+276                skip_auth_check (bool, optional): Whether to skip the authentication check and header addition. Default is False.
+277
+278            Note:
+279                - If `skip_auth_check` is False (default), it ensures authentication by calling `_ensure_authentication` and adds the 'Authorization' header.
+280                - Sets the 'User-Agent' and 'X-User-Agent' headers to the value specified in `_userAgent`.
+281                - Modifies the request URL using `create_url`, adding the server URL if necessary.
+282        """
+283        if not skip_auth_check:
+284            self._ensure_authentication()
+285            request.headers['Authorization'] = self._auth_header()
+286
+287        request.headers['User-Agent'] = self._userAgent
+288        request.headers['X-User-Agent'] = self._userAgent
+289        request.url = self.create_url(request.url, add_server=True)
+290
+291        return request
+292
+293    def send_request(self, request, skip_auth_check=False):
+294        return self._client.send(self.inflate_request(request, skip_auth_check=skip_auth_check))
+295
+296    def get(self, url, query_params=None, headers=None, skip_auth_check=False):
+297        request = self._client.create_request('GET', url, query_params=query_params, headers=headers)
+298        return self.send_request(request, skip_auth_check=skip_auth_check)
+299
+300    def post(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+301        request = self._client.create_request('POST', url, query_params=query_params, headers=headers, body=body)
+302        return self.send_request(request, skip_auth_check=skip_auth_check)
+303
+304    def put(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+305        request = self._client.create_request('PUT', url, query_params=query_params, headers=headers, body=body)
+306        return self.send_request(request, skip_auth_check=skip_auth_check)
+307
+308    def patch(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+309        request = self._client.create_request('PATCH', url, query_params=query_params, headers=headers, body=body)
+310        return self.send_request(request, skip_auth_check=skip_auth_check)
+311
+312    def delete(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+313        request = self._client.create_request('DELETE', url, query_params=query_params, headers=headers, body=body)
+314        return self.send_request(request, skip_auth_check=skip_auth_check)
+315
+316    def _request_token(self, path='', body=None):
+317        headers = {
+318            'Authorization': 'Basic ' + self._api_key(),
+319            'Content-Type': 'application/x-www-form-urlencoded'
+320        }
+321        request = self._client.create_request('POST', path, body=body, headers=headers)
+322        return self.send_request(request, skip_auth_check=True)
+323
+324    def _api_key(self):
+325        return base64encode(self._key + ':' + self._secret)
+326
+327    def _auth_header(self):
+328        return self._auth.token_type() + ' ' + self._auth.access_token()
+329
+330    def _ensure_authentication(self):
+331        if not self._auth.access_token_valid():
+332            self.refresh()
+
+ + +
+
+
+ ACCOUNT_ID = +'~' + + +
+ + + + +
+
+
+ ACCOUNT_PREFIX = +'/account/' + + +
+ + + + +
+
+
+ URL_PREFIX = +'/restapi' + + +
+ + + + +
+
+
+ TOKEN_ENDPOINT = +'/restapi/oauth/token' + + +
+ + + + +
+
+
+ REVOKE_ENDPOINT = +'/restapi/oauth/revoke' + + +
+ + + + +
+
+
+ AUTHORIZE_ENDPOINT = +'/restapi/oauth/authorize' + + +
+ + + + +
+
+
+ API_VERSION = +'v1.0' + + +
+ + + + +
+
+
+ ACCESS_TOKEN_TTL = +3600 + + +
+ + + + +
+
+
+ REFRESH_TOKEN_TTL = +604800 + + +
+ + + + +
+
+
+ KNOWN_PREFIXES = + + ['/restapi', '/rcvideo', '/video', '/webinar', '/analytics', '/ai', '/team-messaging', '/scim', '/cx/'] + + +
+ + + + +
+
+ +
+ + class + Platform(observable.core.Observable): + + + +
+ +
 36class Platform(Observable):
+ 37    def __init__(self, client, key='', secret='', server='', name='', version='', redirect_uri='',
+ 38                 known_prefixes=None):
+ 39
+ 40        Observable.__init__(self)
+ 41        if(server == None):
+ 42            raise Exception("SDK init error: RINGCENTRAL_SERVER_URL value not found.")
+ 43        if(key == None):
+ 44            raise Exception("SDK init error: RINGCENTRAL_CLIENT_ID value not found.")
+ 45        if(secret == None):
+ 46            raise Exception("SDK init error: RINGCENTRAL_CLIENT_SECRET value not found.")
+ 47
+ 48        self._server = server
+ 49        self._key = key
+ 50        self._name = name if name else 'Unnamed'
+ 51        self._version = version if version else '0.0.0'
+ 52        self._redirect_uri = redirect_uri
+ 53        self._secret = secret
+ 54        self._client = client
+ 55        self._auth = Auth()
+ 56        self._account = ACCOUNT_ID
+ 57        self._known_prefixes = known_prefixes if known_prefixes else KNOWN_PREFIXES
+ 58        self._userAgent = ((self._name + ('/' + self._version if self._version else '') + ' ') if self._name else '') + \
+ 59                          sys.platform + '/VERSION' + ' ' + \
+ 60                          'PYTHON/VERSION ' + \
+ 61                          'RCPYTHONSDK/VERSION'
+ 62
+ 63    def auth(self):
+ 64        return self._auth
+ 65
+ 66    def create_url(self, url, add_server=False, add_method=None, add_token=False):
+ 67        """
+ 68            Creates a complete URL based on the provided URL and additional parameters.
+ 69
+ 70            Args:
+ 71                url (str): The base URL.
+ 72                add_server (bool): Whether to prepend the server URL if the provided URL doesn't contain 'http://' or 'https://'.
+ 73                add_method (str, optional): The HTTP method to append as a query parameter.
+ 74                add_token (bool): Whether to append the access token as a query parameter.
+ 75
+ 76            Returns:
+ 77                str: The complete URL.
+ 78
+ 79            Note:
+ 80                - If `add_server` is True and the provided URL doesn't start with 'http://' or 'https://', the server URL will be prepended.
+ 81                - If the provided URL doesn't contain known prefixes or 'http://' or 'https://', the URL_PREFIX and API_VERSION will be appended.
+ 82                - If the provided URL contains ACCOUNT_PREFIX followed by ACCOUNT_ID, it will be replaced with ACCOUNT_PREFIX and the account ID associated with the SDK instance.
+ 83                - If `add_method` is provided, it will be appended as a query parameter '_method'.
+ 84                - If `add_token` is True, the access token associated with the SDK instance will be appended as a query parameter 'access_token'.
+ 85        """
+ 86        built_url = ''
+ 87        has_http = url.startswith('http://') or url.startswith('https://')
+ 88
+ 89        if add_server and not has_http:
+ 90            built_url += self._server
+ 91
+ 92        if not reduce(lambda res, prefix: res if res else url.find(prefix) == 0, self._known_prefixes, False) and not has_http:
+ 93            built_url += URL_PREFIX + '/' + API_VERSION
+ 94
+ 95        if url.find(ACCOUNT_PREFIX) >= 0:
+ 96            built_url = built_url.replace(ACCOUNT_PREFIX + ACCOUNT_ID, ACCOUNT_PREFIX + self._account)
+ 97
+ 98        built_url += url
+ 99
+100        if add_method:
+101            built_url += ('&' if built_url.find('?') >= 0 else '?') + '_method=' + add_method
+102
+103        if add_token:
+104            built_url += ('&' if built_url.find('?') >= 0 else '?') + 'access_token=' + self._auth.access_token()
+105
+106        return built_url
+107
+108    def logged_in(self):
+109        """
+110        Checks if the user is currently logged in.
+111
+112        Returns:
+113            bool: True if the user is logged in, False otherwise.
+114
+115        Note:
+116            - This method checks if the access token is valid.
+117            - If the access token is not valid, it attempts to refresh it by calling the `refresh` method.
+118            - If any exceptions occur during the process, it returns False.
+119        """
+120        try:
+121            return self._auth.access_token_valid() or self.refresh()
+122        except:
+123            return False
+124
+125    def login_url(self, redirect_uri, state='', challenge='', challenge_method='S256'):
+126        """
+127        Generates the URL for initiating the login process.
+128
+129        Args:
+130            redirect_uri (str): The URI to which the user will be redirected after authentication.
+131            state (str, optional): A value to maintain state between the request and the callback. Default is ''.
+132            challenge (str, optional): The code challenge for PKCE (Proof Key for Code Exchange). Default is ''.
+133            challenge_method (str, optional): The code challenge method for PKCE. Default is 'S256'.
+134
+135        Returns:
+136            str: The login URL.
+137        """
+138        built_url = self.create_url( AUTHORIZE_ENDPOINT, add_server=True )
+139        built_url += '?response_type=code&client_id=' + self._key + '&redirect_uri=' + urllib.parse.quote(redirect_uri)
+140        if state:
+141            built_url += '&state=' + urllib.parse.quote(state)
+142        if challenge:
+143            built_url += '&code_challenge=' + urllib.parse.quote(challenge) + '&code_challenge_method=' + challenge_method
+144        return built_url
+145
+146    def login(self, username='', extension='', password='', code='', redirect_uri='', jwt='', verifier=''):
+147        """
+148            Logs in the user using various authentication methods.
+149
+150            Args:
+151                username (str, optional): The username for authentication. Required if password is provided. Default is ''.
+152                extension (str, optional): The extension associated with the username. Default is ''.
+153                password (str, optional): The password for authentication. Required if username is provided. Default is ''.
+154                code (str, optional): The authorization code for authentication. Default is ''.
+155                redirect_uri (str, optional): The URI to redirect to after authentication. Default is ''.
+156                jwt (str, optional): The JWT (JSON Web Token) for authentication. Default is ''.
+157                verifier (str, optional): The code verifier for PKCE (Proof Key for Code Exchange). Default is ''.
+158
+159            Returns:
+160                Response: The response object containing authentication data if successful.
+161
+162            Raises:
+163                Exception: If the login attempt fails or invalid parameters are provided.
+164
+165            Note:
+166                - This method supports multiple authentication flows including password-based, authorization code, and JWT.
+167                - It checks for the presence of required parameters and raises an exception if necessary.
+168                - Deprecation warning is issued for username-password login; recommend using JWT or OAuth instead.
+169                - Constructs the appropriate request body based on the provided parameters.
+170                - Uses `create_url` to build the token endpoint URL, adding the server URL if required.
+171                - Sends the authentication request using `_request_token`.
+172                - Triggers the loginSuccess or loginError event based on the outcome of the login attempt.
+173        """
+174        try:
+175            if not code and not username and not password and not jwt:
+176                raise Exception('Either code, or username with password, or jwt has to be provided')
+177            if username and password:
+178                warnings.warn("username-password login will soon be deprecated. Please use jwt or OAuth instead.")
+179            if not code and not jwt:
+180                body = {
+181                    'grant_type': 'password',
+182                    'username': username,
+183                    'password': password,
+184                    'access_token_ttl': ACCESS_TOKEN_TTL,
+185                    'refresh_token_ttl': REFRESH_TOKEN_TTL
+186                }
+187                if extension:
+188                    body['extension'] = extension
+189            elif jwt:
+190                body = {
+191                    'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer',
+192                    'assertion': jwt
+193                }
+194            else:
+195                body = {
+196                    'grant_type': 'authorization_code',
+197                    'redirect_uri': redirect_uri if redirect_uri else self._redirect_uri,
+198                    'code': code
+199                }
+200                if verifier:
+201                    body['code_verifier'] = verifier
+202
+203            built_url = self.create_url( TOKEN_ENDPOINT, add_server=True )
+204            response = self._request_token( built_url, body=body)
+205            self._auth.set_data(response.json_dict())
+206            self.trigger(Events.loginSuccess, response)
+207            return response
+208        except Exception as e:
+209            self.trigger(Events.loginError, e)
+210            raise e
+211
+212    def refresh(self):
+213        """
+214            Refreshes the authentication tokens.
+215
+216            Returns:
+217                Response: The response object containing refreshed authentication data if successful.
+218
+219            Raises:
+220                Exception: If the refresh token has expired or if any error occurs during the refresh process.
+221
+222            Note:
+223                - This method checks if the refresh token is still valid using `_auth.refresh_token_valid()`.
+224                - Constructs the request body with the grant type as 'refresh_token' and includes the refresh token.
+225                - Sends the token refresh request using `_request_token` at this '/restapi/oauth/token end point.
+226                - Triggers the refreshSuccess or refreshError event based on the outcome of the refresh attempt.
+227        """
+228        try:
+229            if not self._auth.refresh_token_valid():
+230                raise Exception('Refresh token has expired')
+231            response = self._request_token(TOKEN_ENDPOINT, body={
+232                'grant_type': 'refresh_token',
+233                'refresh_token': self._auth.refresh_token(),
+234                'access_token_ttl': ACCESS_TOKEN_TTL,
+235                'refresh_token_ttl': REFRESH_TOKEN_TTL
+236            })
+237            self._auth.set_data(response.json_dict())
+238            self.trigger(Events.refreshSuccess, response)
+239            return response
+240        except Exception as e:
+241            self.trigger(Events.refreshError, e)
+242            raise e
+243
+244    def logout(self):
+245        """
+246            Logs out the user by revoking the access token.
+247
+248            Returns:
+249                Response: The response object containing logout confirmation if successful.
+250
+251            Raises:
+252                Exception: If any error occurs during the logout process.
+253
+254            Note:
+255                - Constructs the request body with the access token to be revoked.
+256                - Sends the token revoke request using `_request_token` at this /restapi/oauth/revoke end point.
+257                - Resets the authentication data using `_auth.reset()` upon successful logout.
+258                - Triggers the logoutSuccess or logoutError event based on the outcome of the logout attempt.
+259        """
+260        try:
+261            response = self._request_token(REVOKE_ENDPOINT, body={
+262                'token': self._auth.access_token()
+263            })
+264            self._auth.reset()
+265            self.trigger(Events.logoutSuccess, response)
+266            return response
+267        except Exception as e:
+268            self.trigger(Events.logoutError, e)
+269            raise e
+270
+271    def inflate_request(self, request, skip_auth_check=False):
+272        """
+273            Inflates the provided request object with necessary headers and URL modifications.
+274
+275            Args:
+276                request (Request): The request object to be inflated.
+277                skip_auth_check (bool, optional): Whether to skip the authentication check and header addition. Default is False.
+278
+279            Note:
+280                - If `skip_auth_check` is False (default), it ensures authentication by calling `_ensure_authentication` and adds the 'Authorization' header.
+281                - Sets the 'User-Agent' and 'X-User-Agent' headers to the value specified in `_userAgent`.
+282                - Modifies the request URL using `create_url`, adding the server URL if necessary.
+283        """
+284        if not skip_auth_check:
+285            self._ensure_authentication()
+286            request.headers['Authorization'] = self._auth_header()
+287
+288        request.headers['User-Agent'] = self._userAgent
+289        request.headers['X-User-Agent'] = self._userAgent
+290        request.url = self.create_url(request.url, add_server=True)
+291
+292        return request
+293
+294    def send_request(self, request, skip_auth_check=False):
+295        return self._client.send(self.inflate_request(request, skip_auth_check=skip_auth_check))
+296
+297    def get(self, url, query_params=None, headers=None, skip_auth_check=False):
+298        request = self._client.create_request('GET', url, query_params=query_params, headers=headers)
+299        return self.send_request(request, skip_auth_check=skip_auth_check)
+300
+301    def post(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+302        request = self._client.create_request('POST', url, query_params=query_params, headers=headers, body=body)
+303        return self.send_request(request, skip_auth_check=skip_auth_check)
+304
+305    def put(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+306        request = self._client.create_request('PUT', url, query_params=query_params, headers=headers, body=body)
+307        return self.send_request(request, skip_auth_check=skip_auth_check)
+308
+309    def patch(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+310        request = self._client.create_request('PATCH', url, query_params=query_params, headers=headers, body=body)
+311        return self.send_request(request, skip_auth_check=skip_auth_check)
+312
+313    def delete(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+314        request = self._client.create_request('DELETE', url, query_params=query_params, headers=headers, body=body)
+315        return self.send_request(request, skip_auth_check=skip_auth_check)
+316
+317    def _request_token(self, path='', body=None):
+318        headers = {
+319            'Authorization': 'Basic ' + self._api_key(),
+320            'Content-Type': 'application/x-www-form-urlencoded'
+321        }
+322        request = self._client.create_request('POST', path, body=body, headers=headers)
+323        return self.send_request(request, skip_auth_check=True)
+324
+325    def _api_key(self):
+326        return base64encode(self._key + ':' + self._secret)
+327
+328    def _auth_header(self):
+329        return self._auth.token_type() + ' ' + self._auth.access_token()
+330
+331    def _ensure_authentication(self):
+332        if not self._auth.access_token_valid():
+333            self.refresh()
+
+ + +

Event system for python

+
+ + +
+ +
+ + Platform( client, key='', secret='', server='', name='', version='', redirect_uri='', known_prefixes=None) + + + +
+ +
37    def __init__(self, client, key='', secret='', server='', name='', version='', redirect_uri='',
+38                 known_prefixes=None):
+39
+40        Observable.__init__(self)
+41        if(server == None):
+42            raise Exception("SDK init error: RINGCENTRAL_SERVER_URL value not found.")
+43        if(key == None):
+44            raise Exception("SDK init error: RINGCENTRAL_CLIENT_ID value not found.")
+45        if(secret == None):
+46            raise Exception("SDK init error: RINGCENTRAL_CLIENT_SECRET value not found.")
+47
+48        self._server = server
+49        self._key = key
+50        self._name = name if name else 'Unnamed'
+51        self._version = version if version else '0.0.0'
+52        self._redirect_uri = redirect_uri
+53        self._secret = secret
+54        self._client = client
+55        self._auth = Auth()
+56        self._account = ACCOUNT_ID
+57        self._known_prefixes = known_prefixes if known_prefixes else KNOWN_PREFIXES
+58        self._userAgent = ((self._name + ('/' + self._version if self._version else '') + ' ') if self._name else '') + \
+59                          sys.platform + '/VERSION' + ' ' + \
+60                          'PYTHON/VERSION ' + \
+61                          'RCPYTHONSDK/VERSION'
+
+ + + + +
+
+ +
+ + def + auth(self): + + + +
+ +
63    def auth(self):
+64        return self._auth
+
+ + + + +
+
+ +
+ + def + create_url(self, url, add_server=False, add_method=None, add_token=False): + + + +
+ +
 66    def create_url(self, url, add_server=False, add_method=None, add_token=False):
+ 67        """
+ 68            Creates a complete URL based on the provided URL and additional parameters.
+ 69
+ 70            Args:
+ 71                url (str): The base URL.
+ 72                add_server (bool): Whether to prepend the server URL if the provided URL doesn't contain 'http://' or 'https://'.
+ 73                add_method (str, optional): The HTTP method to append as a query parameter.
+ 74                add_token (bool): Whether to append the access token as a query parameter.
+ 75
+ 76            Returns:
+ 77                str: The complete URL.
+ 78
+ 79            Note:
+ 80                - If `add_server` is True and the provided URL doesn't start with 'http://' or 'https://', the server URL will be prepended.
+ 81                - If the provided URL doesn't contain known prefixes or 'http://' or 'https://', the URL_PREFIX and API_VERSION will be appended.
+ 82                - If the provided URL contains ACCOUNT_PREFIX followed by ACCOUNT_ID, it will be replaced with ACCOUNT_PREFIX and the account ID associated with the SDK instance.
+ 83                - If `add_method` is provided, it will be appended as a query parameter '_method'.
+ 84                - If `add_token` is True, the access token associated with the SDK instance will be appended as a query parameter 'access_token'.
+ 85        """
+ 86        built_url = ''
+ 87        has_http = url.startswith('http://') or url.startswith('https://')
+ 88
+ 89        if add_server and not has_http:
+ 90            built_url += self._server
+ 91
+ 92        if not reduce(lambda res, prefix: res if res else url.find(prefix) == 0, self._known_prefixes, False) and not has_http:
+ 93            built_url += URL_PREFIX + '/' + API_VERSION
+ 94
+ 95        if url.find(ACCOUNT_PREFIX) >= 0:
+ 96            built_url = built_url.replace(ACCOUNT_PREFIX + ACCOUNT_ID, ACCOUNT_PREFIX + self._account)
+ 97
+ 98        built_url += url
+ 99
+100        if add_method:
+101            built_url += ('&' if built_url.find('?') >= 0 else '?') + '_method=' + add_method
+102
+103        if add_token:
+104            built_url += ('&' if built_url.find('?') >= 0 else '?') + 'access_token=' + self._auth.access_token()
+105
+106        return built_url
+
+ + +

Creates a complete URL based on the provided URL and additional parameters.

+ +

Args: + url (str): The base URL. + add_server (bool): Whether to prepend the server URL if the provided URL doesn't contain 'http://' or 'https://'. + add_method (str, optional): The HTTP method to append as a query parameter. + add_token (bool): Whether to append the access token as a query parameter.

+ +

Returns: + str: The complete URL.

+ +

Note: + - If add_server is True and the provided URL doesn't start with 'http://' or 'https://', the server URL will be prepended. + - If the provided URL doesn't contain known prefixes or 'http://' or 'https://', the URL_PREFIX and API_VERSION will be appended. + - If the provided URL contains ACCOUNT_PREFIX followed by ACCOUNT_ID, it will be replaced with ACCOUNT_PREFIX and the account ID associated with the SDK instance. + - If add_method is provided, it will be appended as a query parameter '_method'. + - If add_token is True, the access token associated with the SDK instance will be appended as a query parameter 'access_token'.

+
+ + +
+
+ +
+ + def + logged_in(self): + + + +
+ +
108    def logged_in(self):
+109        """
+110        Checks if the user is currently logged in.
+111
+112        Returns:
+113            bool: True if the user is logged in, False otherwise.
+114
+115        Note:
+116            - This method checks if the access token is valid.
+117            - If the access token is not valid, it attempts to refresh it by calling the `refresh` method.
+118            - If any exceptions occur during the process, it returns False.
+119        """
+120        try:
+121            return self._auth.access_token_valid() or self.refresh()
+122        except:
+123            return False
+
+ + +

Checks if the user is currently logged in.

+ +

Returns: + bool: True if the user is logged in, False otherwise.

+ +

Note: + - This method checks if the access token is valid. + - If the access token is not valid, it attempts to refresh it by calling the refresh method. + - If any exceptions occur during the process, it returns False.

+
+ + +
+
+ +
+ + def + login_url(self, redirect_uri, state='', challenge='', challenge_method='S256'): + + + +
+ +
125    def login_url(self, redirect_uri, state='', challenge='', challenge_method='S256'):
+126        """
+127        Generates the URL for initiating the login process.
+128
+129        Args:
+130            redirect_uri (str): The URI to which the user will be redirected after authentication.
+131            state (str, optional): A value to maintain state between the request and the callback. Default is ''.
+132            challenge (str, optional): The code challenge for PKCE (Proof Key for Code Exchange). Default is ''.
+133            challenge_method (str, optional): The code challenge method for PKCE. Default is 'S256'.
+134
+135        Returns:
+136            str: The login URL.
+137        """
+138        built_url = self.create_url( AUTHORIZE_ENDPOINT, add_server=True )
+139        built_url += '?response_type=code&client_id=' + self._key + '&redirect_uri=' + urllib.parse.quote(redirect_uri)
+140        if state:
+141            built_url += '&state=' + urllib.parse.quote(state)
+142        if challenge:
+143            built_url += '&code_challenge=' + urllib.parse.quote(challenge) + '&code_challenge_method=' + challenge_method
+144        return built_url
+
+ + +

Generates the URL for initiating the login process.

+ +

Args: + redirect_uri (str): The URI to which the user will be redirected after authentication. + state (str, optional): A value to maintain state between the request and the callback. Default is ''. + challenge (str, optional): The code challenge for PKCE (Proof Key for Code Exchange). Default is ''. + challenge_method (str, optional): The code challenge method for PKCE. Default is 'S256'.

+ +

Returns: + str: The login URL.

+
+ + +
+
+ +
+ + def + login( self, username='', extension='', password='', code='', redirect_uri='', jwt='', verifier=''): + + + +
+ +
146    def login(self, username='', extension='', password='', code='', redirect_uri='', jwt='', verifier=''):
+147        """
+148            Logs in the user using various authentication methods.
+149
+150            Args:
+151                username (str, optional): The username for authentication. Required if password is provided. Default is ''.
+152                extension (str, optional): The extension associated with the username. Default is ''.
+153                password (str, optional): The password for authentication. Required if username is provided. Default is ''.
+154                code (str, optional): The authorization code for authentication. Default is ''.
+155                redirect_uri (str, optional): The URI to redirect to after authentication. Default is ''.
+156                jwt (str, optional): The JWT (JSON Web Token) for authentication. Default is ''.
+157                verifier (str, optional): The code verifier for PKCE (Proof Key for Code Exchange). Default is ''.
+158
+159            Returns:
+160                Response: The response object containing authentication data if successful.
+161
+162            Raises:
+163                Exception: If the login attempt fails or invalid parameters are provided.
+164
+165            Note:
+166                - This method supports multiple authentication flows including password-based, authorization code, and JWT.
+167                - It checks for the presence of required parameters and raises an exception if necessary.
+168                - Deprecation warning is issued for username-password login; recommend using JWT or OAuth instead.
+169                - Constructs the appropriate request body based on the provided parameters.
+170                - Uses `create_url` to build the token endpoint URL, adding the server URL if required.
+171                - Sends the authentication request using `_request_token`.
+172                - Triggers the loginSuccess or loginError event based on the outcome of the login attempt.
+173        """
+174        try:
+175            if not code and not username and not password and not jwt:
+176                raise Exception('Either code, or username with password, or jwt has to be provided')
+177            if username and password:
+178                warnings.warn("username-password login will soon be deprecated. Please use jwt or OAuth instead.")
+179            if not code and not jwt:
+180                body = {
+181                    'grant_type': 'password',
+182                    'username': username,
+183                    'password': password,
+184                    'access_token_ttl': ACCESS_TOKEN_TTL,
+185                    'refresh_token_ttl': REFRESH_TOKEN_TTL
+186                }
+187                if extension:
+188                    body['extension'] = extension
+189            elif jwt:
+190                body = {
+191                    'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer',
+192                    'assertion': jwt
+193                }
+194            else:
+195                body = {
+196                    'grant_type': 'authorization_code',
+197                    'redirect_uri': redirect_uri if redirect_uri else self._redirect_uri,
+198                    'code': code
+199                }
+200                if verifier:
+201                    body['code_verifier'] = verifier
+202
+203            built_url = self.create_url( TOKEN_ENDPOINT, add_server=True )
+204            response = self._request_token( built_url, body=body)
+205            self._auth.set_data(response.json_dict())
+206            self.trigger(Events.loginSuccess, response)
+207            return response
+208        except Exception as e:
+209            self.trigger(Events.loginError, e)
+210            raise e
+
+ + +

Logs in the user using various authentication methods.

+ +

Args: + username (str, optional): The username for authentication. Required if password is provided. Default is ''. + extension (str, optional): The extension associated with the username. Default is ''. + password (str, optional): The password for authentication. Required if username is provided. Default is ''. + code (str, optional): The authorization code for authentication. Default is ''. + redirect_uri (str, optional): The URI to redirect to after authentication. Default is ''. + jwt (str, optional): The JWT (JSON Web Token) for authentication. Default is ''. + verifier (str, optional): The code verifier for PKCE (Proof Key for Code Exchange). Default is ''.

+ +

Returns: + Response: The response object containing authentication data if successful.

+ +

Raises: + Exception: If the login attempt fails or invalid parameters are provided.

+ +

Note: + - This method supports multiple authentication flows including password-based, authorization code, and JWT. + - It checks for the presence of required parameters and raises an exception if necessary. + - Deprecation warning is issued for username-password login; recommend using JWT or OAuth instead. + - Constructs the appropriate request body based on the provided parameters. + - Uses create_url to build the token endpoint URL, adding the server URL if required. + - Sends the authentication request using _request_token. + - Triggers the loginSuccess or loginError event based on the outcome of the login attempt.

+
+ + +
+
+ +
+ + def + refresh(self): + + + +
+ +
212    def refresh(self):
+213        """
+214            Refreshes the authentication tokens.
+215
+216            Returns:
+217                Response: The response object containing refreshed authentication data if successful.
+218
+219            Raises:
+220                Exception: If the refresh token has expired or if any error occurs during the refresh process.
+221
+222            Note:
+223                - This method checks if the refresh token is still valid using `_auth.refresh_token_valid()`.
+224                - Constructs the request body with the grant type as 'refresh_token' and includes the refresh token.
+225                - Sends the token refresh request using `_request_token` at this '/restapi/oauth/token end point.
+226                - Triggers the refreshSuccess or refreshError event based on the outcome of the refresh attempt.
+227        """
+228        try:
+229            if not self._auth.refresh_token_valid():
+230                raise Exception('Refresh token has expired')
+231            response = self._request_token(TOKEN_ENDPOINT, body={
+232                'grant_type': 'refresh_token',
+233                'refresh_token': self._auth.refresh_token(),
+234                'access_token_ttl': ACCESS_TOKEN_TTL,
+235                'refresh_token_ttl': REFRESH_TOKEN_TTL
+236            })
+237            self._auth.set_data(response.json_dict())
+238            self.trigger(Events.refreshSuccess, response)
+239            return response
+240        except Exception as e:
+241            self.trigger(Events.refreshError, e)
+242            raise e
+
+ + +

Refreshes the authentication tokens.

+ +

Returns: + Response: The response object containing refreshed authentication data if successful.

+ +

Raises: + Exception: If the refresh token has expired or if any error occurs during the refresh process.

+ +

Note: + - This method checks if the refresh token is still valid using _auth.refresh_token_valid(). + - Constructs the request body with the grant type as 'refresh_token' and includes the refresh token. + - Sends the token refresh request using _request_token at this '/restapi/oauth/token end point. + - Triggers the refreshSuccess or refreshError event based on the outcome of the refresh attempt.

+
+ + +
+
+ +
+ + def + logout(self): + + + +
+ +
244    def logout(self):
+245        """
+246            Logs out the user by revoking the access token.
+247
+248            Returns:
+249                Response: The response object containing logout confirmation if successful.
+250
+251            Raises:
+252                Exception: If any error occurs during the logout process.
+253
+254            Note:
+255                - Constructs the request body with the access token to be revoked.
+256                - Sends the token revoke request using `_request_token` at this /restapi/oauth/revoke end point.
+257                - Resets the authentication data using `_auth.reset()` upon successful logout.
+258                - Triggers the logoutSuccess or logoutError event based on the outcome of the logout attempt.
+259        """
+260        try:
+261            response = self._request_token(REVOKE_ENDPOINT, body={
+262                'token': self._auth.access_token()
+263            })
+264            self._auth.reset()
+265            self.trigger(Events.logoutSuccess, response)
+266            return response
+267        except Exception as e:
+268            self.trigger(Events.logoutError, e)
+269            raise e
+
+ + +

Logs out the user by revoking the access token.

+ +

Returns: + Response: The response object containing logout confirmation if successful.

+ +

Raises: + Exception: If any error occurs during the logout process.

+ +

Note: + - Constructs the request body with the access token to be revoked. + - Sends the token revoke request using _request_token at this /restapi/oauth/revoke end point. + - Resets the authentication data using _auth.reset() upon successful logout. + - Triggers the logoutSuccess or logoutError event based on the outcome of the logout attempt.

+
+ + +
+
+ +
+ + def + inflate_request(self, request, skip_auth_check=False): + + + +
+ +
271    def inflate_request(self, request, skip_auth_check=False):
+272        """
+273            Inflates the provided request object with necessary headers and URL modifications.
+274
+275            Args:
+276                request (Request): The request object to be inflated.
+277                skip_auth_check (bool, optional): Whether to skip the authentication check and header addition. Default is False.
+278
+279            Note:
+280                - If `skip_auth_check` is False (default), it ensures authentication by calling `_ensure_authentication` and adds the 'Authorization' header.
+281                - Sets the 'User-Agent' and 'X-User-Agent' headers to the value specified in `_userAgent`.
+282                - Modifies the request URL using `create_url`, adding the server URL if necessary.
+283        """
+284        if not skip_auth_check:
+285            self._ensure_authentication()
+286            request.headers['Authorization'] = self._auth_header()
+287
+288        request.headers['User-Agent'] = self._userAgent
+289        request.headers['X-User-Agent'] = self._userAgent
+290        request.url = self.create_url(request.url, add_server=True)
+291
+292        return request
+
+ + +

Inflates the provided request object with necessary headers and URL modifications.

+ +

Args: + request (Request): The request object to be inflated. + skip_auth_check (bool, optional): Whether to skip the authentication check and header addition. Default is False.

+ +

Note: + - If skip_auth_check is False (default), it ensures authentication by calling _ensure_authentication and adds the 'Authorization' header. + - Sets the 'User-Agent' and 'X-User-Agent' headers to the value specified in _userAgent. + - Modifies the request URL using create_url, adding the server URL if necessary.

+
+ + +
+
+ +
+ + def + send_request(self, request, skip_auth_check=False): + + + +
+ +
294    def send_request(self, request, skip_auth_check=False):
+295        return self._client.send(self.inflate_request(request, skip_auth_check=skip_auth_check))
+
+ + + + +
+
+ +
+ + def + get(self, url, query_params=None, headers=None, skip_auth_check=False): + + + +
+ +
297    def get(self, url, query_params=None, headers=None, skip_auth_check=False):
+298        request = self._client.create_request('GET', url, query_params=query_params, headers=headers)
+299        return self.send_request(request, skip_auth_check=skip_auth_check)
+
+ + + + +
+
+ +
+ + def + post( self, url, body=None, query_params=None, headers=None, skip_auth_check=False): + + + +
+ +
301    def post(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+302        request = self._client.create_request('POST', url, query_params=query_params, headers=headers, body=body)
+303        return self.send_request(request, skip_auth_check=skip_auth_check)
+
+ + + + +
+
+ +
+ + def + put( self, url, body=None, query_params=None, headers=None, skip_auth_check=False): + + + +
+ +
305    def put(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+306        request = self._client.create_request('PUT', url, query_params=query_params, headers=headers, body=body)
+307        return self.send_request(request, skip_auth_check=skip_auth_check)
+
+ + + + +
+
+ +
+ + def + patch( self, url, body=None, query_params=None, headers=None, skip_auth_check=False): + + + +
+ +
309    def patch(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+310        request = self._client.create_request('PATCH', url, query_params=query_params, headers=headers, body=body)
+311        return self.send_request(request, skip_auth_check=skip_auth_check)
+
+ + + + +
+
+ +
+ + def + delete( self, url, body=None, query_params=None, headers=None, skip_auth_check=False): + + + +
+ +
313    def delete(self, url, body=None, query_params=None, headers=None, skip_auth_check=False):
+314        request = self._client.create_request('DELETE', url, query_params=query_params, headers=headers, body=body)
+315        return self.send_request(request, skip_auth_check=skip_auth_check)
+
+ + + + +
+
+
Inherited Members
+
+
observable.core.Observable
+
events
+
on
+
off
+
once
+
trigger
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/platform/platform.py b/ringcentral/platform/platform.py deleted file mode 100644 index 0a9d62a..0000000 --- a/ringcentral/platform/platform.py +++ /dev/null @@ -1,332 +0,0 @@ -import sys -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse -from observable import Observable -from functools import reduce -from .auth import Auth -from .events import Events -from ..core import base64encode -import warnings - -ACCOUNT_ID = '~' -ACCOUNT_PREFIX = '/account/' -URL_PREFIX = '/restapi' -TOKEN_ENDPOINT = '/restapi/oauth/token' -REVOKE_ENDPOINT = '/restapi/oauth/revoke' -AUTHORIZE_ENDPOINT = '/restapi/oauth/authorize' -API_VERSION = 'v1.0' -ACCESS_TOKEN_TTL = 3600 # 60 minutes -REFRESH_TOKEN_TTL = 604800 # 1 week -KNOWN_PREFIXES = [ - URL_PREFIX, - '/rcvideo', - '/video', - '/webinar', - '/analytics', - '/ai', - '/team-messaging', - '/scim', - '/cx/' -] - - -class Platform(Observable): - def __init__(self, client, key='', secret='', server='', name='', version='', redirect_uri='', - known_prefixes=None): - - Observable.__init__(self) - if(server == None): - raise Exception("SDK init error: RINGCENTRAL_SERVER_URL value not found.") - if(key == None): - raise Exception("SDK init error: RINGCENTRAL_CLIENT_ID value not found.") - if(secret == None): - raise Exception("SDK init error: RINGCENTRAL_CLIENT_SECRET value not found.") - - self._server = server - self._key = key - self._name = name if name else 'Unnamed' - self._version = version if version else '0.0.0' - self._redirect_uri = redirect_uri - self._secret = secret - self._client = client - self._auth = Auth() - self._account = ACCOUNT_ID - self._known_prefixes = known_prefixes if known_prefixes else KNOWN_PREFIXES - self._userAgent = ((self._name + ('/' + self._version if self._version else '') + ' ') if self._name else '') + \ - sys.platform + '/VERSION' + ' ' + \ - 'PYTHON/VERSION ' + \ - 'RCPYTHONSDK/VERSION' - - def auth(self): - return self._auth - - def create_url(self, url, add_server=False, add_method=None, add_token=False): - """ - Creates a complete URL based on the provided URL and additional parameters. - - Args: - url (str): The base URL. - add_server (bool): Whether to prepend the server URL if the provided URL doesn't contain 'http://' or 'https://'. - add_method (str, optional): The HTTP method to append as a query parameter. - add_token (bool): Whether to append the access token as a query parameter. - - Returns: - str: The complete URL. - - Note: - - If `add_server` is True and the provided URL doesn't start with 'http://' or 'https://', the server URL will be prepended. - - If the provided URL doesn't contain known prefixes or 'http://' or 'https://', the URL_PREFIX and API_VERSION will be appended. - - If the provided URL contains ACCOUNT_PREFIX followed by ACCOUNT_ID, it will be replaced with ACCOUNT_PREFIX and the account ID associated with the SDK instance. - - If `add_method` is provided, it will be appended as a query parameter '_method'. - - If `add_token` is True, the access token associated with the SDK instance will be appended as a query parameter 'access_token'. - """ - built_url = '' - has_http = url.startswith('http://') or url.startswith('https://') - - if add_server and not has_http: - built_url += self._server - - if not reduce(lambda res, prefix: res if res else url.find(prefix) == 0, self._known_prefixes, False) and not has_http: - built_url += URL_PREFIX + '/' + API_VERSION - - if url.find(ACCOUNT_PREFIX) >= 0: - built_url = built_url.replace(ACCOUNT_PREFIX + ACCOUNT_ID, ACCOUNT_PREFIX + self._account) - - built_url += url - - if add_method: - built_url += ('&' if built_url.find('?') >= 0 else '?') + '_method=' + add_method - - if add_token: - built_url += ('&' if built_url.find('?') >= 0 else '?') + 'access_token=' + self._auth.access_token() - - return built_url - - def logged_in(self): - """ - Checks if the user is currently logged in. - - Returns: - bool: True if the user is logged in, False otherwise. - - Note: - - This method checks if the access token is valid. - - If the access token is not valid, it attempts to refresh it by calling the `refresh` method. - - If any exceptions occur during the process, it returns False. - """ - try: - return self._auth.access_token_valid() or self.refresh() - except: - return False - - def login_url(self, redirect_uri, state='', challenge='', challenge_method='S256'): - """ - Generates the URL for initiating the login process. - - Args: - redirect_uri (str): The URI to which the user will be redirected after authentication. - state (str, optional): A value to maintain state between the request and the callback. Default is ''. - challenge (str, optional): The code challenge for PKCE (Proof Key for Code Exchange). Default is ''. - challenge_method (str, optional): The code challenge method for PKCE. Default is 'S256'. - - Returns: - str: The login URL. - """ - built_url = self.create_url( AUTHORIZE_ENDPOINT, add_server=True ) - built_url += '?response_type=code&client_id=' + self._key + '&redirect_uri=' + urllib.parse.quote(redirect_uri) - if state: - built_url += '&state=' + urllib.parse.quote(state) - if challenge: - built_url += '&code_challenge=' + urllib.parse.quote(challenge) + '&code_challenge_method=' + challenge_method - return built_url - - def login(self, username='', extension='', password='', code='', redirect_uri='', jwt='', verifier=''): - """ - Logs in the user using various authentication methods. - - Args: - username (str, optional): The username for authentication. Required if password is provided. Default is ''. - extension (str, optional): The extension associated with the username. Default is ''. - password (str, optional): The password for authentication. Required if username is provided. Default is ''. - code (str, optional): The authorization code for authentication. Default is ''. - redirect_uri (str, optional): The URI to redirect to after authentication. Default is ''. - jwt (str, optional): The JWT (JSON Web Token) for authentication. Default is ''. - verifier (str, optional): The code verifier for PKCE (Proof Key for Code Exchange). Default is ''. - - Returns: - Response: The response object containing authentication data if successful. - - Raises: - Exception: If the login attempt fails or invalid parameters are provided. - - Note: - - This method supports multiple authentication flows including password-based, authorization code, and JWT. - - It checks for the presence of required parameters and raises an exception if necessary. - - Deprecation warning is issued for username-password login; recommend using JWT or OAuth instead. - - Constructs the appropriate request body based on the provided parameters. - - Uses `create_url` to build the token endpoint URL, adding the server URL if required. - - Sends the authentication request using `_request_token`. - - Triggers the loginSuccess or loginError event based on the outcome of the login attempt. - """ - try: - if not code and not username and not password and not jwt: - raise Exception('Either code, or username with password, or jwt has to be provided') - if username and password: - warnings.warn("username-password login will soon be deprecated. Please use jwt or OAuth instead.") - if not code and not jwt: - body = { - 'grant_type': 'password', - 'username': username, - 'password': password, - 'access_token_ttl': ACCESS_TOKEN_TTL, - 'refresh_token_ttl': REFRESH_TOKEN_TTL - } - if extension: - body['extension'] = extension - elif jwt: - body = { - 'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer', - 'assertion': jwt - } - else: - body = { - 'grant_type': 'authorization_code', - 'redirect_uri': redirect_uri if redirect_uri else self._redirect_uri, - 'code': code - } - if verifier: - body['code_verifier'] = verifier - - built_url = self.create_url( TOKEN_ENDPOINT, add_server=True ) - response = self._request_token( built_url, body=body) - self._auth.set_data(response.json_dict()) - self.trigger(Events.loginSuccess, response) - return response - except Exception as e: - self.trigger(Events.loginError, e) - raise e - - def refresh(self): - """ - Refreshes the authentication tokens. - - Returns: - Response: The response object containing refreshed authentication data if successful. - - Raises: - Exception: If the refresh token has expired or if any error occurs during the refresh process. - - Note: - - This method checks if the refresh token is still valid using `_auth.refresh_token_valid()`. - - Constructs the request body with the grant type as 'refresh_token' and includes the refresh token. - - Sends the token refresh request using `_request_token` at this '/restapi/oauth/token end point. - - Triggers the refreshSuccess or refreshError event based on the outcome of the refresh attempt. - """ - try: - if not self._auth.refresh_token_valid(): - raise Exception('Refresh token has expired') - response = self._request_token(TOKEN_ENDPOINT, body={ - 'grant_type': 'refresh_token', - 'refresh_token': self._auth.refresh_token(), - 'access_token_ttl': ACCESS_TOKEN_TTL, - 'refresh_token_ttl': REFRESH_TOKEN_TTL - }) - self._auth.set_data(response.json_dict()) - self.trigger(Events.refreshSuccess, response) - return response - except Exception as e: - self.trigger(Events.refreshError, e) - raise e - - def logout(self): - """ - Logs out the user by revoking the access token. - - Returns: - Response: The response object containing logout confirmation if successful. - - Raises: - Exception: If any error occurs during the logout process. - - Note: - - Constructs the request body with the access token to be revoked. - - Sends the token revoke request using `_request_token` at this /restapi/oauth/revoke end point. - - Resets the authentication data using `_auth.reset()` upon successful logout. - - Triggers the logoutSuccess or logoutError event based on the outcome of the logout attempt. - """ - try: - response = self._request_token(REVOKE_ENDPOINT, body={ - 'token': self._auth.access_token() - }) - self._auth.reset() - self.trigger(Events.logoutSuccess, response) - return response - except Exception as e: - self.trigger(Events.logoutError, e) - raise e - - def inflate_request(self, request, skip_auth_check=False): - """ - Inflates the provided request object with necessary headers and URL modifications. - - Args: - request (Request): The request object to be inflated. - skip_auth_check (bool, optional): Whether to skip the authentication check and header addition. Default is False. - - Note: - - If `skip_auth_check` is False (default), it ensures authentication by calling `_ensure_authentication` and adds the 'Authorization' header. - - Sets the 'User-Agent' and 'X-User-Agent' headers to the value specified in `_userAgent`. - - Modifies the request URL using `create_url`, adding the server URL if necessary. - """ - if not skip_auth_check: - self._ensure_authentication() - request.headers['Authorization'] = self._auth_header() - - request.headers['User-Agent'] = self._userAgent - request.headers['X-User-Agent'] = self._userAgent - request.url = self.create_url(request.url, add_server=True) - - return request - - def send_request(self, request, skip_auth_check=False): - return self._client.send(self.inflate_request(request, skip_auth_check=skip_auth_check)) - - def get(self, url, query_params=None, headers=None, skip_auth_check=False): - request = self._client.create_request('GET', url, query_params=query_params, headers=headers) - return self.send_request(request, skip_auth_check=skip_auth_check) - - def post(self, url, body=None, query_params=None, headers=None, skip_auth_check=False): - request = self._client.create_request('POST', url, query_params=query_params, headers=headers, body=body) - return self.send_request(request, skip_auth_check=skip_auth_check) - - def put(self, url, body=None, query_params=None, headers=None, skip_auth_check=False): - request = self._client.create_request('PUT', url, query_params=query_params, headers=headers, body=body) - return self.send_request(request, skip_auth_check=skip_auth_check) - - def patch(self, url, body=None, query_params=None, headers=None, skip_auth_check=False): - request = self._client.create_request('PATCH', url, query_params=query_params, headers=headers, body=body) - return self.send_request(request, skip_auth_check=skip_auth_check) - - def delete(self, url, body=None, query_params=None, headers=None, skip_auth_check=False): - request = self._client.create_request('DELETE', url, query_params=query_params, headers=headers, body=body) - return self.send_request(request, skip_auth_check=skip_auth_check) - - def _request_token(self, path='', body=None): - headers = { - 'Authorization': 'Basic ' + self._api_key(), - 'Content-Type': 'application/x-www-form-urlencoded' - } - request = self._client.create_request('POST', path, body=body, headers=headers) - return self.send_request(request, skip_auth_check=True) - - def _api_key(self): - return base64encode(self._key + ':' + self._secret) - - def _auth_header(self): - return self._auth.token_type() + ' ' + self._auth.access_token() - - def _ensure_authentication(self): - if not self._auth.access_token_valid(): - self.refresh() diff --git a/ringcentral/platform/platform_test.html b/ringcentral/platform/platform_test.html new file mode 100644 index 0000000..1694c0b --- /dev/null +++ b/ringcentral/platform/platform_test.html @@ -0,0 +1,1108 @@ + + + + + + + ringcentral.platform.platform_test API documentation + + + + + + + + + +
+
+

+ringcentral.platform.platform_test

+ + + + + + +
  1import sys
+  2import unittest
+  3import requests_mock
+  4
+  5from ..test import TestCase
+  6
+  7
+  8@requests_mock.Mocker()
+  9class TestPlatform(TestCase):
+ 10    def test_key(self, mock):
+ 11        sdk = self.get_sdk(mock)
+ 12        self.assertEqual('d2hhdGV2ZXI6d2hhdGV2ZXI=', sdk.platform()._api_key())
+ 13
+ 14    def test_login(self, mock):
+ 15        sdk = self.get_sdk(mock)
+ 16        self.assertTrue(sdk.platform().auth().data()['access_token'])
+ 17
+ 18    def test_login_code(self, mock):
+ 19        sdk = self.get_sdk(mock)
+ 20        self.logout_mock(mock)
+ 21        sdk.platform().logout()
+ 22        self.authentication_mock(mock)
+ 23        sdk.platform().login(code='foo')
+ 24        text = str(mock.request_history[-1].text)
+ 25        if sys.version_info[0] == 3:
+ 26            self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect&code=foo')
+ 27        else:
+ 28            self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect')
+ 29
+ 30    def test_login_fail(self, mock):
+ 31        sdk = self.get_sdk(mock)
+ 32        self.logout_mock(mock)
+ 33        sdk.platform().logout()
+ 34        self.authentication_mock(mock)
+ 35        try:
+ 36            sdk.platform().login()
+ 37        except Exception as e:
+ 38            self.assertTrue( e )
+ 39
+ 40    def test_login_code_redirect(self, mock):
+ 41        sdk = self.get_sdk(mock)
+ 42        self.logout_mock(mock)
+ 43        sdk.platform().logout()
+ 44        self.authentication_mock(mock)
+ 45        sdk.platform().login(code='foo', redirect_uri='bar')
+ 46        text = str(mock.request_history[-1].text)
+ 47        if sys.version_info[0] == 3:
+ 48            self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=bar&code=foo')
+ 49        else:
+ 50            self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=bar')
+ 51
+ 52    def test_refresh_with_outdated_token(self, mock):
+ 53        sdk = self.get_sdk(mock)
+ 54
+ 55        self.refresh_mock(mock)
+ 56
+ 57        sdk.platform().auth().set_data({
+ 58            'refresh_token_expires_in': 1,
+ 59            'refresh_token_expire_time': 1
+ 60        })
+ 61
+ 62        self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expires_in'])
+ 63        self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expire_time'])
+ 64
+ 65        caught = False
+ 66        try:
+ 67            sdk.platform().refresh()
+ 68        except Exception as e:
+ 69            caught = True
+ 70            self.assertEqual('Refresh token has expired', str(e))
+ 71
+ 72        self.assertTrue(caught)
+ 73
+ 74    def test_logged_in(self, mock):
+ 75        sdk = self.get_sdk(mock)
+ 76
+ 77        self.assertTrue(sdk.platform().logged_in())
+ 78
+ 79    def test_manual_refresh(self, mock):
+ 80        sdk = self.get_sdk(mock)
+ 81
+ 82        self.refresh_mock(mock)
+ 83        self.add(mock, 'GET', '/foo', {'foo': 'bar'})
+ 84
+ 85        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+ 86
+ 87        sdk.platform().refresh()
+ 88
+ 89        self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
+ 90
+ 91    def skip_test_automatic_refresh(self, mock):  # FIXME Put it back
+ 92        sdk = self.get_sdk(mock)
+ 93
+ 94        self.add(mock, 'GET', '/foo', {'foo': 'bar'})
+ 95        self.refresh_mock(mock)
+ 96
+ 97        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+ 98
+ 99        sdk.platform().auth().set_data({
+100            'expires_in': 0,
+101            'expire_time': 0
+102        })
+103
+104        self.assertEqual('bar', sdk.platform().get('/foo').json().foo)
+105        self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
+106
+107    def test_logout(self, mock):
+108        sdk = self.get_sdk(mock)
+109
+110        self.logout_mock(mock)
+111
+112        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+113
+114        sdk.platform().logout()
+115
+116        self.assertEqual('', sdk.platform().auth().data()['access_token'])
+117        self.assertEqual('', sdk.platform().auth().data()['refresh_token'])
+118        self.assertFalse(sdk.platform().logged_in())
+119
+120    def test_api_url(self, mock):
+121        sdk = self.get_sdk(mock)
+122
+123        exp1 = 'https://whatever/restapi/v1.0/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN'
+124        act1 = sdk.platform().create_url('/account/~/extension/~', add_server=True, add_method='POST', add_token=True)
+125        self.assertEqual(exp1, act1)
+126
+127        exp2 = 'https://foo/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN'
+128        url2 = 'https://foo/account/~/extension/~'
+129        act2 = sdk.platform().create_url(url2, add_server=True, add_method='POST', add_token=True)
+130        self.assertEqual(exp2, act2)
+131
+132    def test_api_url_custom_prefixes(self, mock):
+133        sdk = self.get_sdk(mock)
+134        exp = 'https://whatever/scim/v2/foo'
+135        url = '/scim/v2/foo'
+136        act = sdk.platform().create_url(url, add_server=True)
+137        self.assertEqual(exp, act)
+138
+139        exp = 'https://whatever/analytics/phone/foo'
+140        url = '/analytics/phone/foo'
+141        act = sdk.platform().create_url(url, add_server=True)
+142        self.assertEqual(exp, act)
+143
+144    def test_delete_with_body(self,mock):
+145        sdk = self.get_sdk(mock)
+146        self.delete_mock_with_body(mock)
+147        res = sdk.platform().delete(url='/restapi/v2/accounts/~/extensions',body={"keepAssetsInInventory": True,"records": [{"id": "123"}]})
+148        self.assertTrue(mock.called)
+149
+150    def test_delete_without_body(self, mock):
+151        sdk = self.get_sdk(mock)
+152        self.delete_mock_without_body(mock)
+153        sdk.platform().delete(url='/restapi/v2/accounts/~/extensions')
+154        self.assertTrue(mock.called)
+155
+156if __name__ == '__main__':
+157    unittest.main()
+
+ + +
+
+ +
+
@requests_mock.Mocker()
+ + class + TestPlatform(ringcentral.test.testcase.TestCase): + + + +
+ +
  9@requests_mock.Mocker()
+ 10class TestPlatform(TestCase):
+ 11    def test_key(self, mock):
+ 12        sdk = self.get_sdk(mock)
+ 13        self.assertEqual('d2hhdGV2ZXI6d2hhdGV2ZXI=', sdk.platform()._api_key())
+ 14
+ 15    def test_login(self, mock):
+ 16        sdk = self.get_sdk(mock)
+ 17        self.assertTrue(sdk.platform().auth().data()['access_token'])
+ 18
+ 19    def test_login_code(self, mock):
+ 20        sdk = self.get_sdk(mock)
+ 21        self.logout_mock(mock)
+ 22        sdk.platform().logout()
+ 23        self.authentication_mock(mock)
+ 24        sdk.platform().login(code='foo')
+ 25        text = str(mock.request_history[-1].text)
+ 26        if sys.version_info[0] == 3:
+ 27            self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect&code=foo')
+ 28        else:
+ 29            self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect')
+ 30
+ 31    def test_login_fail(self, mock):
+ 32        sdk = self.get_sdk(mock)
+ 33        self.logout_mock(mock)
+ 34        sdk.platform().logout()
+ 35        self.authentication_mock(mock)
+ 36        try:
+ 37            sdk.platform().login()
+ 38        except Exception as e:
+ 39            self.assertTrue( e )
+ 40
+ 41    def test_login_code_redirect(self, mock):
+ 42        sdk = self.get_sdk(mock)
+ 43        self.logout_mock(mock)
+ 44        sdk.platform().logout()
+ 45        self.authentication_mock(mock)
+ 46        sdk.platform().login(code='foo', redirect_uri='bar')
+ 47        text = str(mock.request_history[-1].text)
+ 48        if sys.version_info[0] == 3:
+ 49            self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=bar&code=foo')
+ 50        else:
+ 51            self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=bar')
+ 52
+ 53    def test_refresh_with_outdated_token(self, mock):
+ 54        sdk = self.get_sdk(mock)
+ 55
+ 56        self.refresh_mock(mock)
+ 57
+ 58        sdk.platform().auth().set_data({
+ 59            'refresh_token_expires_in': 1,
+ 60            'refresh_token_expire_time': 1
+ 61        })
+ 62
+ 63        self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expires_in'])
+ 64        self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expire_time'])
+ 65
+ 66        caught = False
+ 67        try:
+ 68            sdk.platform().refresh()
+ 69        except Exception as e:
+ 70            caught = True
+ 71            self.assertEqual('Refresh token has expired', str(e))
+ 72
+ 73        self.assertTrue(caught)
+ 74
+ 75    def test_logged_in(self, mock):
+ 76        sdk = self.get_sdk(mock)
+ 77
+ 78        self.assertTrue(sdk.platform().logged_in())
+ 79
+ 80    def test_manual_refresh(self, mock):
+ 81        sdk = self.get_sdk(mock)
+ 82
+ 83        self.refresh_mock(mock)
+ 84        self.add(mock, 'GET', '/foo', {'foo': 'bar'})
+ 85
+ 86        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+ 87
+ 88        sdk.platform().refresh()
+ 89
+ 90        self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
+ 91
+ 92    def skip_test_automatic_refresh(self, mock):  # FIXME Put it back
+ 93        sdk = self.get_sdk(mock)
+ 94
+ 95        self.add(mock, 'GET', '/foo', {'foo': 'bar'})
+ 96        self.refresh_mock(mock)
+ 97
+ 98        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+ 99
+100        sdk.platform().auth().set_data({
+101            'expires_in': 0,
+102            'expire_time': 0
+103        })
+104
+105        self.assertEqual('bar', sdk.platform().get('/foo').json().foo)
+106        self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
+107
+108    def test_logout(self, mock):
+109        sdk = self.get_sdk(mock)
+110
+111        self.logout_mock(mock)
+112
+113        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+114
+115        sdk.platform().logout()
+116
+117        self.assertEqual('', sdk.platform().auth().data()['access_token'])
+118        self.assertEqual('', sdk.platform().auth().data()['refresh_token'])
+119        self.assertFalse(sdk.platform().logged_in())
+120
+121    def test_api_url(self, mock):
+122        sdk = self.get_sdk(mock)
+123
+124        exp1 = 'https://whatever/restapi/v1.0/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN'
+125        act1 = sdk.platform().create_url('/account/~/extension/~', add_server=True, add_method='POST', add_token=True)
+126        self.assertEqual(exp1, act1)
+127
+128        exp2 = 'https://foo/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN'
+129        url2 = 'https://foo/account/~/extension/~'
+130        act2 = sdk.platform().create_url(url2, add_server=True, add_method='POST', add_token=True)
+131        self.assertEqual(exp2, act2)
+132
+133    def test_api_url_custom_prefixes(self, mock):
+134        sdk = self.get_sdk(mock)
+135        exp = 'https://whatever/scim/v2/foo'
+136        url = '/scim/v2/foo'
+137        act = sdk.platform().create_url(url, add_server=True)
+138        self.assertEqual(exp, act)
+139
+140        exp = 'https://whatever/analytics/phone/foo'
+141        url = '/analytics/phone/foo'
+142        act = sdk.platform().create_url(url, add_server=True)
+143        self.assertEqual(exp, act)
+144
+145    def test_delete_with_body(self,mock):
+146        sdk = self.get_sdk(mock)
+147        self.delete_mock_with_body(mock)
+148        res = sdk.platform().delete(url='/restapi/v2/accounts/~/extensions',body={"keepAssetsInInventory": True,"records": [{"id": "123"}]})
+149        self.assertTrue(mock.called)
+150
+151    def test_delete_without_body(self, mock):
+152        sdk = self.get_sdk(mock)
+153        self.delete_mock_without_body(mock)
+154        sdk.platform().delete(url='/restapi/v2/accounts/~/extensions')
+155        self.assertTrue(mock.called)
+
+ + +

A class whose instances are single test cases.

+ +

By default, the test code itself should be placed in a method named +'runTest'.

+ +

If the fixture may be used for many test cases, create as +many test methods as are needed. When instantiating such a TestCase +subclass, specify in the constructor arguments the name of the test method +that the instance is to execute.

+ +

Test authors should subclass TestCase for their own tests. Construction +and deconstruction of the test's environment ('fixture') can be +implemented by overriding the 'setUp' and 'tearDown' methods respectively.

+ +

If it is necessary to override the __init__ method, the base class +__init__ method must always be called. It is important that subclasses +should not change the signature of their __init__ method, since instances +of the classes are instantiated automatically by parts of the framework +in order to be run.

+ +

When subclassing TestCase, you can set these attributes:

+ +
    +
  • failureException: determines which exception will be raised when +the instance's assertion methods fail; test methods raising this +exception will be deemed to have 'failed' rather than 'errored'.
  • +
  • longMessage: determines whether long messages (including repr of +objects used in assert methods) will be printed on failure in addition +to any explicit message passed.
  • +
  • maxDiff: sets the maximum length of a diff in failure messages +by assert methods using difflib. It is looked up as an instance +attribute so can be configured by individual tests if required.
  • +
+
+ + +
+ +
+ + def + test_key(self, mock): + + + +
+ +
11    def test_key(self, mock):
+12        sdk = self.get_sdk(mock)
+13        self.assertEqual('d2hhdGV2ZXI6d2hhdGV2ZXI=', sdk.platform()._api_key())
+
+ + + + +
+
+ +
+ + def + test_login(self, mock): + + + +
+ +
15    def test_login(self, mock):
+16        sdk = self.get_sdk(mock)
+17        self.assertTrue(sdk.platform().auth().data()['access_token'])
+
+ + + + +
+
+ +
+ + def + test_login_code(self, mock): + + + +
+ +
19    def test_login_code(self, mock):
+20        sdk = self.get_sdk(mock)
+21        self.logout_mock(mock)
+22        sdk.platform().logout()
+23        self.authentication_mock(mock)
+24        sdk.platform().login(code='foo')
+25        text = str(mock.request_history[-1].text)
+26        if sys.version_info[0] == 3:
+27            self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect&code=foo')
+28        else:
+29            self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect')
+
+ + + + +
+
+ +
+ + def + test_login_fail(self, mock): + + + +
+ +
31    def test_login_fail(self, mock):
+32        sdk = self.get_sdk(mock)
+33        self.logout_mock(mock)
+34        sdk.platform().logout()
+35        self.authentication_mock(mock)
+36        try:
+37            sdk.platform().login()
+38        except Exception as e:
+39            self.assertTrue( e )
+
+ + + + +
+
+ +
+ + def + test_login_code_redirect(self, mock): + + + +
+ +
41    def test_login_code_redirect(self, mock):
+42        sdk = self.get_sdk(mock)
+43        self.logout_mock(mock)
+44        sdk.platform().logout()
+45        self.authentication_mock(mock)
+46        sdk.platform().login(code='foo', redirect_uri='bar')
+47        text = str(mock.request_history[-1].text)
+48        if sys.version_info[0] == 3:
+49            self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=bar&code=foo')
+50        else:
+51            self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=bar')
+
+ + + + +
+
+ +
+ + def + test_refresh_with_outdated_token(self, mock): + + + +
+ +
53    def test_refresh_with_outdated_token(self, mock):
+54        sdk = self.get_sdk(mock)
+55
+56        self.refresh_mock(mock)
+57
+58        sdk.platform().auth().set_data({
+59            'refresh_token_expires_in': 1,
+60            'refresh_token_expire_time': 1
+61        })
+62
+63        self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expires_in'])
+64        self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expire_time'])
+65
+66        caught = False
+67        try:
+68            sdk.platform().refresh()
+69        except Exception as e:
+70            caught = True
+71            self.assertEqual('Refresh token has expired', str(e))
+72
+73        self.assertTrue(caught)
+
+ + + + +
+
+ +
+ + def + test_logged_in(self, mock): + + + +
+ +
75    def test_logged_in(self, mock):
+76        sdk = self.get_sdk(mock)
+77
+78        self.assertTrue(sdk.platform().logged_in())
+
+ + + + +
+
+ +
+ + def + test_manual_refresh(self, mock): + + + +
+ +
80    def test_manual_refresh(self, mock):
+81        sdk = self.get_sdk(mock)
+82
+83        self.refresh_mock(mock)
+84        self.add(mock, 'GET', '/foo', {'foo': 'bar'})
+85
+86        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+87
+88        sdk.platform().refresh()
+89
+90        self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
+
+ + + + +
+
+ +
+ + def + skip_test_automatic_refresh(self, mock): + + + +
+ +
 92    def skip_test_automatic_refresh(self, mock):  # FIXME Put it back
+ 93        sdk = self.get_sdk(mock)
+ 94
+ 95        self.add(mock, 'GET', '/foo', {'foo': 'bar'})
+ 96        self.refresh_mock(mock)
+ 97
+ 98        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+ 99
+100        sdk.platform().auth().set_data({
+101            'expires_in': 0,
+102            'expire_time': 0
+103        })
+104
+105        self.assertEqual('bar', sdk.platform().get('/foo').json().foo)
+106        self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
+
+ + + + +
+
+ +
+ + def + test_logout(self, mock): + + + +
+ +
108    def test_logout(self, mock):
+109        sdk = self.get_sdk(mock)
+110
+111        self.logout_mock(mock)
+112
+113        self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token'])
+114
+115        sdk.platform().logout()
+116
+117        self.assertEqual('', sdk.platform().auth().data()['access_token'])
+118        self.assertEqual('', sdk.platform().auth().data()['refresh_token'])
+119        self.assertFalse(sdk.platform().logged_in())
+
+ + + + +
+
+ +
+ + def + test_api_url(self, mock): + + + +
+ +
121    def test_api_url(self, mock):
+122        sdk = self.get_sdk(mock)
+123
+124        exp1 = 'https://whatever/restapi/v1.0/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN'
+125        act1 = sdk.platform().create_url('/account/~/extension/~', add_server=True, add_method='POST', add_token=True)
+126        self.assertEqual(exp1, act1)
+127
+128        exp2 = 'https://foo/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN'
+129        url2 = 'https://foo/account/~/extension/~'
+130        act2 = sdk.platform().create_url(url2, add_server=True, add_method='POST', add_token=True)
+131        self.assertEqual(exp2, act2)
+
+ + + + +
+
+ +
+ + def + test_api_url_custom_prefixes(self, mock): + + + +
+ +
133    def test_api_url_custom_prefixes(self, mock):
+134        sdk = self.get_sdk(mock)
+135        exp = 'https://whatever/scim/v2/foo'
+136        url = '/scim/v2/foo'
+137        act = sdk.platform().create_url(url, add_server=True)
+138        self.assertEqual(exp, act)
+139
+140        exp = 'https://whatever/analytics/phone/foo'
+141        url = '/analytics/phone/foo'
+142        act = sdk.platform().create_url(url, add_server=True)
+143        self.assertEqual(exp, act)
+
+ + + + +
+
+ +
+ + def + test_delete_with_body(self, mock): + + + +
+ +
145    def test_delete_with_body(self,mock):
+146        sdk = self.get_sdk(mock)
+147        self.delete_mock_with_body(mock)
+148        res = sdk.platform().delete(url='/restapi/v2/accounts/~/extensions',body={"keepAssetsInInventory": True,"records": [{"id": "123"}]})
+149        self.assertTrue(mock.called)
+
+ + + + +
+
+ +
+ + def + test_delete_without_body(self, mock): + + + +
+ +
151    def test_delete_without_body(self, mock):
+152        sdk = self.get_sdk(mock)
+153        self.delete_mock_without_body(mock)
+154        sdk.platform().delete(url='/restapi/v2/accounts/~/extensions')
+155        self.assertTrue(mock.called)
+
+ + + + +
+
+
Inherited Members
+
+ +
unittest.case.TestCase
+
failureException
+
longMessage
+
maxDiff
+
addTypeEqualityFunc
+
addCleanup
+
enterContext
+
addClassCleanup
+
enterClassContext
+
setUp
+
tearDown
+
setUpClass
+
tearDownClass
+
countTestCases
+
defaultTestResult
+
shortDescription
+
id
+
subTest
+
run
+
doCleanups
+
doClassCleanups
+
debug
+
skipTest
+
fail
+
assertFalse
+
assertTrue
+
assertRaises
+
assertWarns
+
assertLogs
+
assertNoLogs
+
assertEqual
+
assertNotEqual
+
assertAlmostEqual
+
assertNotAlmostEqual
+
assertSequenceEqual
+
assertListEqual
+
assertTupleEqual
+
assertSetEqual
+
assertIn
+
assertNotIn
+
assertIs
+
assertIsNot
+
assertDictEqual
+
assertDictContainsSubset
+
assertCountEqual
+
assertMultiLineEqual
+
assertLess
+
assertLessEqual
+
assertGreater
+
assertGreaterEqual
+
assertIsNone
+
assertIsNotNone
+
assertIsInstance
+
assertNotIsInstance
+
assertRaisesRegex
+
assertWarnsRegex
+
assertRegex
+
assertNotRegex
+
failUnlessRaises
+
failIf
+
assertRaisesRegexp
+
assertRegexpMatches
+
assertNotRegexpMatches
+
failUnlessEqual
+
assertEquals
+
failIfEqual
+
assertNotEquals
+
failUnlessAlmostEqual
+
assertAlmostEquals
+
failIfAlmostEqual
+
assertNotAlmostEquals
+
failUnless
+
assert_
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/platform/platform_test.py b/ringcentral/platform/platform_test.py deleted file mode 100644 index d186c04..0000000 --- a/ringcentral/platform/platform_test.py +++ /dev/null @@ -1,157 +0,0 @@ -import sys -import unittest -import requests_mock - -from ..test import TestCase - - -@requests_mock.Mocker() -class TestPlatform(TestCase): - def test_key(self, mock): - sdk = self.get_sdk(mock) - self.assertEqual('d2hhdGV2ZXI6d2hhdGV2ZXI=', sdk.platform()._api_key()) - - def test_login(self, mock): - sdk = self.get_sdk(mock) - self.assertTrue(sdk.platform().auth().data()['access_token']) - - def test_login_code(self, mock): - sdk = self.get_sdk(mock) - self.logout_mock(mock) - sdk.platform().logout() - self.authentication_mock(mock) - sdk.platform().login(code='foo') - text = str(mock.request_history[-1].text) - if sys.version_info[0] == 3: - self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect&code=foo') - else: - self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect') - - def test_login_fail(self, mock): - sdk = self.get_sdk(mock) - self.logout_mock(mock) - sdk.platform().logout() - self.authentication_mock(mock) - try: - sdk.platform().login() - except Exception as e: - self.assertTrue( e ) - - def test_login_code_redirect(self, mock): - sdk = self.get_sdk(mock) - self.logout_mock(mock) - sdk.platform().logout() - self.authentication_mock(mock) - sdk.platform().login(code='foo', redirect_uri='bar') - text = str(mock.request_history[-1].text) - if sys.version_info[0] == 3: - self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=bar&code=foo') - else: - self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=bar') - - def test_refresh_with_outdated_token(self, mock): - sdk = self.get_sdk(mock) - - self.refresh_mock(mock) - - sdk.platform().auth().set_data({ - 'refresh_token_expires_in': 1, - 'refresh_token_expire_time': 1 - }) - - self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expires_in']) - self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expire_time']) - - caught = False - try: - sdk.platform().refresh() - except Exception as e: - caught = True - self.assertEqual('Refresh token has expired', str(e)) - - self.assertTrue(caught) - - def test_logged_in(self, mock): - sdk = self.get_sdk(mock) - - self.assertTrue(sdk.platform().logged_in()) - - def test_manual_refresh(self, mock): - sdk = self.get_sdk(mock) - - self.refresh_mock(mock) - self.add(mock, 'GET', '/foo', {'foo': 'bar'}) - - self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) - - sdk.platform().refresh() - - self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token']) - - def skip_test_automatic_refresh(self, mock): # FIXME Put it back - sdk = self.get_sdk(mock) - - self.add(mock, 'GET', '/foo', {'foo': 'bar'}) - self.refresh_mock(mock) - - self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) - - sdk.platform().auth().set_data({ - 'expires_in': 0, - 'expire_time': 0 - }) - - self.assertEqual('bar', sdk.platform().get('/foo').json().foo) - self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token']) - - def test_logout(self, mock): - sdk = self.get_sdk(mock) - - self.logout_mock(mock) - - self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) - - sdk.platform().logout() - - self.assertEqual('', sdk.platform().auth().data()['access_token']) - self.assertEqual('', sdk.platform().auth().data()['refresh_token']) - self.assertFalse(sdk.platform().logged_in()) - - def test_api_url(self, mock): - sdk = self.get_sdk(mock) - - exp1 = 'https://whatever/restapi/v1.0/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' - act1 = sdk.platform().create_url('/account/~/extension/~', add_server=True, add_method='POST', add_token=True) - self.assertEqual(exp1, act1) - - exp2 = 'https://foo/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' - url2 = 'https://foo/account/~/extension/~' - act2 = sdk.platform().create_url(url2, add_server=True, add_method='POST', add_token=True) - self.assertEqual(exp2, act2) - - def test_api_url_custom_prefixes(self, mock): - sdk = self.get_sdk(mock) - exp = 'https://whatever/scim/v2/foo' - url = '/scim/v2/foo' - act = sdk.platform().create_url(url, add_server=True) - self.assertEqual(exp, act) - - exp = 'https://whatever/analytics/phone/foo' - url = '/analytics/phone/foo' - act = sdk.platform().create_url(url, add_server=True) - self.assertEqual(exp, act) - - def test_delete_with_body(self,mock): - sdk = self.get_sdk(mock) - self.delete_mock_with_body(mock) - res = sdk.platform().delete(url='/restapi/v2/accounts/~/extensions',body={"keepAssetsInInventory": True,"records": [{"id": "123"}]}) - self.assertTrue(mock.called) - - def test_delete_without_body(self, mock): - sdk = self.get_sdk(mock) - self.delete_mock_without_body(mock) - sdk.platform().delete(url='/restapi/v2/accounts/~/extensions') - self.assertTrue(mock.called) - -if __name__ == '__main__': - unittest.main() diff --git a/ringcentral/sdk.html b/ringcentral/sdk.html new file mode 100644 index 0000000..7475691 --- /dev/null +++ b/ringcentral/sdk.html @@ -0,0 +1,383 @@ + + + + + + + ringcentral.sdk API documentation + + + + + + + + + +
+
+

+ringcentral.sdk

+ + + + + + +
 1from .platform import Platform
+ 2from .websocket import WebSocketClient
+ 3from .http import Client, MultipartBuilder
+ 4
+ 5
+ 6class SDK:
+ 7    def __init__(self, key, secret, server, name='', version='', redirect_uri=None, known_prefixes=None):
+ 8        self._client = Client()
+ 9        self._platform = Platform(self._client, key, secret, server, name, version, redirect_uri, known_prefixes)
+10
+11    def platform(self):
+12        return self._platform
+13
+14    def create_web_socket_client(self):
+15        return WebSocketClient(self._platform)
+16
+17    def create_multipart_builder(self):
+18        return MultipartBuilder(self._platform)
+
+ + +
+
+ +
+ + class + SDK: + + + +
+ +
 7class SDK:
+ 8    def __init__(self, key, secret, server, name='', version='', redirect_uri=None, known_prefixes=None):
+ 9        self._client = Client()
+10        self._platform = Platform(self._client, key, secret, server, name, version, redirect_uri, known_prefixes)
+11
+12    def platform(self):
+13        return self._platform
+14
+15    def create_web_socket_client(self):
+16        return WebSocketClient(self._platform)
+17
+18    def create_multipart_builder(self):
+19        return MultipartBuilder(self._platform)
+
+ + + + +
+ +
+ + SDK( key, secret, server, name='', version='', redirect_uri=None, known_prefixes=None) + + + +
+ +
 8    def __init__(self, key, secret, server, name='', version='', redirect_uri=None, known_prefixes=None):
+ 9        self._client = Client()
+10        self._platform = Platform(self._client, key, secret, server, name, version, redirect_uri, known_prefixes)
+
+ + + + +
+
+ +
+ + def + platform(self): + + + +
+ +
12    def platform(self):
+13        return self._platform
+
+ + + + +
+
+ +
+ + def + create_web_socket_client(self): + + + +
+ +
15    def create_web_socket_client(self):
+16        return WebSocketClient(self._platform)
+
+ + + + +
+
+ +
+ + def + create_multipart_builder(self): + + + +
+ +
18    def create_multipart_builder(self):
+19        return MultipartBuilder(self._platform)
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/ringcentral/sdk.py b/ringcentral/sdk.py deleted file mode 100644 index 691a10c..0000000 --- a/ringcentral/sdk.py +++ /dev/null @@ -1,18 +0,0 @@ -from .platform import Platform -from .websocket import WebSocketClient -from .http import Client, MultipartBuilder - - -class SDK: - def __init__(self, key, secret, server, name='', version='', redirect_uri=None, known_prefixes=None): - self._client = Client() - self._platform = Platform(self._client, key, secret, server, name, version, redirect_uri, known_prefixes) - - def platform(self): - return self._platform - - def create_web_socket_client(self): - return WebSocketClient(self._platform) - - def create_multipart_builder(self): - return MultipartBuilder(self._platform) \ No newline at end of file diff --git a/ringcentral/sdk_test.html b/ringcentral/sdk_test.html new file mode 100644 index 0000000..7d59296 --- /dev/null +++ b/ringcentral/sdk_test.html @@ -0,0 +1,431 @@ + + + + + + + ringcentral.sdk_test API documentation + + + + + + + + + +
+
+

+ringcentral.sdk_test

+ + + + + + +
 1import unittest
+ 2from .test import TestCase
+ 3from . import SDK
+ 4
+ 5
+ 6class TestSDK(TestCase):
+ 7    def test_instance(self):
+ 8        sdk = SDK('whatever', 'whatever', 'https://whatever')
+ 9        self.assertEqual(sdk.platform().create_url('/foo', add_server=True), 'https://whatever/restapi/v1.0/foo')
+10
+11
+12if __name__ == '__main__':
+13    unittest.main()
+
+ + +
+
+ +
+ + class + TestSDK(ringcentral.test.testcase.TestCase): + + + +
+ +
 7class TestSDK(TestCase):
+ 8    def test_instance(self):
+ 9        sdk = SDK('whatever', 'whatever', 'https://whatever')
+10        self.assertEqual(sdk.platform().create_url('/foo', add_server=True), 'https://whatever/restapi/v1.0/foo')
+
+ + +

A class whose instances are single test cases.

+ +

By default, the test code itself should be placed in a method named +'runTest'.

+ +

If the fixture may be used for many test cases, create as +many test methods as are needed. When instantiating such a TestCase +subclass, specify in the constructor arguments the name of the test method +that the instance is to execute.

+ +

Test authors should subclass TestCase for their own tests. Construction +and deconstruction of the test's environment ('fixture') can be +implemented by overriding the 'setUp' and 'tearDown' methods respectively.

+ +

If it is necessary to override the __init__ method, the base class +__init__ method must always be called. It is important that subclasses +should not change the signature of their __init__ method, since instances +of the classes are instantiated automatically by parts of the framework +in order to be run.

+ +

When subclassing TestCase, you can set these attributes:

+ +
    +
  • failureException: determines which exception will be raised when +the instance's assertion methods fail; test methods raising this +exception will be deemed to have 'failed' rather than 'errored'.
  • +
  • longMessage: determines whether long messages (including repr of +objects used in assert methods) will be printed on failure in addition +to any explicit message passed.
  • +
  • maxDiff: sets the maximum length of a diff in failure messages +by assert methods using difflib. It is looked up as an instance +attribute so can be configured by individual tests if required.
  • +
+
+ + +
+ +
+ + def + test_instance(self): + + + +
+ +
 8    def test_instance(self):
+ 9        sdk = SDK('whatever', 'whatever', 'https://whatever')
+10        self.assertEqual(sdk.platform().create_url('/foo', add_server=True), 'https://whatever/restapi/v1.0/foo')
+
+ + + + +
+
+
Inherited Members
+
+ +
unittest.case.TestCase
+
failureException
+
longMessage
+
maxDiff
+
addTypeEqualityFunc
+
addCleanup
+
enterContext
+
addClassCleanup
+
enterClassContext
+
setUp
+
tearDown
+
setUpClass
+
tearDownClass
+
countTestCases
+
defaultTestResult
+
shortDescription
+
id
+
subTest
+
run
+
doCleanups
+
doClassCleanups
+
debug
+
skipTest
+
fail
+
assertFalse
+
assertTrue
+
assertRaises
+
assertWarns
+
assertLogs
+
assertNoLogs
+
assertEqual
+
assertNotEqual
+
assertAlmostEqual
+
assertNotAlmostEqual
+
assertSequenceEqual
+
assertListEqual
+
assertTupleEqual
+
assertSetEqual
+
assertIn
+
assertNotIn
+
assertIs
+
assertIsNot
+
assertDictEqual
+
assertDictContainsSubset
+
assertCountEqual
+
assertMultiLineEqual
+
assertLess
+
assertLessEqual
+
assertGreater
+
assertGreaterEqual
+
assertIsNone
+
assertIsNotNone
+
assertIsInstance
+
assertNotIsInstance
+
assertRaisesRegex
+
assertWarnsRegex
+
assertRegex
+
assertNotRegex
+
failUnlessRaises
+
failIf
+
assertRaisesRegexp
+
assertRegexpMatches
+
assertNotRegexpMatches
+
failUnlessEqual
+
assertEquals
+
failIfEqual
+
assertNotEquals
+
failUnlessAlmostEqual
+
assertAlmostEquals
+
failIfAlmostEqual
+
assertNotAlmostEquals
+
failUnless
+
assert_
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/sdk_test.py b/ringcentral/sdk_test.py deleted file mode 100644 index 48e5fb7..0000000 --- a/ringcentral/sdk_test.py +++ /dev/null @@ -1,13 +0,0 @@ -import unittest -from .test import TestCase -from . import SDK - - -class TestSDK(TestCase): - def test_instance(self): - sdk = SDK('whatever', 'whatever', 'https://whatever') - self.assertEqual(sdk.platform().create_url('/foo', add_server=True), 'https://whatever/restapi/v1.0/foo') - - -if __name__ == '__main__': - unittest.main() diff --git a/ringcentral/test.html b/ringcentral/test.html new file mode 100644 index 0000000..a0b9960 --- /dev/null +++ b/ringcentral/test.html @@ -0,0 +1,244 @@ + + + + + + + ringcentral.test API documentation + + + + + + + + + +
+
+

+ringcentral.test

+ + + + + + +
1from .spy import Spy
+2from .testcase import TestCase
+
+ + +
+
+ + \ No newline at end of file diff --git a/ringcentral/test/__init__.py b/ringcentral/test/__init__.py deleted file mode 100644 index 39f5d7c..0000000 --- a/ringcentral/test/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .spy import Spy -from .testcase import TestCase diff --git a/ringcentral/test/spy.html b/ringcentral/test/spy.html new file mode 100644 index 0000000..6e64e3f --- /dev/null +++ b/ringcentral/test/spy.html @@ -0,0 +1,292 @@ + + + + + + + ringcentral.test.spy API documentation + + + + + + + + + +
+
+

+ringcentral.test.spy

+ + + + + + +
1class Spy(object):
+2    def __init__(self):
+3        self.args = None
+4
+5    def __call__(self, *args, **kwargs):
+6        self.args = args
+7        self.kwargs = kwargs
+
+ + +
+
+ +
+ + class + Spy: + + + +
+ +
2class Spy(object):
+3    def __init__(self):
+4        self.args = None
+5
+6    def __call__(self, *args, **kwargs):
+7        self.args = args
+8        self.kwargs = kwargs
+
+ + + + +
+
+ args + + +
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/ringcentral/test/spy.py b/ringcentral/test/spy.py deleted file mode 100644 index 3da7fdd..0000000 --- a/ringcentral/test/spy.py +++ /dev/null @@ -1,7 +0,0 @@ -class Spy(object): - def __init__(self): - self.args = None - - def __call__(self, *args, **kwargs): - self.args = args - self.kwargs = kwargs diff --git a/ringcentral/test/testcase.html b/ringcentral/test/testcase.html new file mode 100644 index 0000000..ab5908d --- /dev/null +++ b/ringcentral/test/testcase.html @@ -0,0 +1,888 @@ + + + + + + + ringcentral.test.testcase API documentation + + + + + + + + + +
+
+

+ringcentral.test.testcase

+ + + + + + +
  1import unittest
+  2import requests_mock
+  3import json
+  4import re
+  5from time import time
+  6from datetime import date
+  7from .. import SDK
+  8
+  9requests_mock.Mocker.TEST_PREFIX = 'test'
+ 10
+ 11
+ 12class TestCase(unittest.TestCase):
+ 13    def __init__(self, method_name=None):
+ 14        unittest.TestCase.__init__(self, method_name)
+ 15
+ 16    def get_sdk(self, mock):
+ 17        sdk = SDK('whatever', 'whatever', 'https://whatever', redirect_uri='https://whatever-redirect')
+ 18        self.authentication_mock(mock)
+ 19        sdk.platform().login(jwt='jwt-token')
+ 20        return sdk
+ 21
+ 22    def add(self, mock, method, url, body, status=200):
+ 23        mock.register_uri(
+ 24            method=method,
+ 25            url='https://whatever' + url,
+ 26            text= '' if body is None else json.dumps(body),
+ 27            headers={'Content-Type': 'application/json'},
+ 28            status_code=status
+ 29        )
+ 30
+ 31    def authentication_mock(self, mock):
+ 32        return self.add(mock, 'POST', '/restapi/oauth/token', {
+ 33            'access_token': 'ACCESS_TOKEN',
+ 34            'token_type': 'bearer',
+ 35            'expires_in': 3600,
+ 36            'refresh_token': 'REFRESH_TOKEN',
+ 37            'refresh_token_expires_in': 60480,
+ 38            'scope': 'SMS RCM Foo Boo',
+ 39            'expireTime': time() + 3600,
+ 40            'owner_id': 'foo'
+ 41        })
+ 42
+ 43    def logout_mock(self, mock):
+ 44        return self.add(mock, 'POST', '/restapi/oauth/revoke', {})
+ 45
+ 46    def presence_subscription_mock(self, mock, id='1', detailed=True):
+ 47        detailed = '?detailedTelephonyState=true' if detailed else ''
+ 48        expires_in = 15 * 60 * 60
+ 49
+ 50        return self.add(mock, 'POST', '/restapi/v1.0/subscription', {
+ 51            'eventFilters': ['/restapi/v1.0/account/~/extension/' + id + '/presence' + detailed],
+ 52            'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(),
+ 53            'expiresIn': expires_in,
+ 54            'deliveryMode': {
+ 55                'transportType': 'WebSocket',
+ 56                'encryption': True,
+ 57                'address': '123_foo',
+ 58                'subscriberKey': 'sub-c-foo',
+ 59                'secretKey': 'sec-c-bar',
+ 60                'encryptionAlgorithm': 'AES',
+ 61                'encryptionKey': 'e0bMTqmumPfFUbwzppkSbA=='
+ 62            },
+ 63            'creationTime': date.today().isoformat(),
+ 64            'id': 'foo-bar-baz',
+ 65            'status': 'Active',
+ 66            'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz'
+ 67        })
+ 68
+ 69    def refresh_mock(self, mock, failure=False, expires_in=3600):
+ 70        status = 200
+ 71        body = {
+ 72            'access_token': 'ACCESS_TOKEN_FROM_REFRESH',
+ 73            'token_type': 'bearer',
+ 74            'expires_in': expires_in,
+ 75            'refresh_token': 'REFRESH_TOKEN_FROM_REFRESH',
+ 76            'refresh_token_expires_in': 60480,
+ 77            'scope': 'SMS RCM Foo Boo',
+ 78            'expireTime': time() + expires_in,
+ 79            'owner_id': 'foo'
+ 80        }
+ 81
+ 82        if failure:
+ 83            status = 400
+ 84            body = {'message': 'Wrong token (mock)'}
+ 85
+ 86        return self.add(mock, 'POST', '/restapi/oauth/token', body, status)
+ 87
+ 88    def subscription_mock(self, mock, expires_in=54000, filters=None, id=None):
+ 89        if filters is None:
+ 90            filters = ['/restapi/v1.0/account/~/extension/1/presence']
+ 91
+ 92        return self.add(mock, 'POST' if not id else 'PUT', '/restapi/v1.0/subscription' + ('/' + id if id else ''), {
+ 93            'eventFilters': filters,
+ 94            'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(),
+ 95            'expiresIn': expires_in,
+ 96            'deliveryMode': {
+ 97                'transportType': 'WebSocket',
+ 98                'encryption': False,
+ 99                'address': '123_foo',
+100                'subscriberKey': 'sub-c-foo',
+101                'secretKey': 'sec-c-bar'
+102            },
+103            'id': id if id else 'foo-bar-baz',
+104            'creationTime': date.today().isoformat(),
+105            'status': 'Active',
+106            'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz'
+107        })
+108
+109    def delete_mock_with_body(self,mock):
+110        return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', {"keepAssetsInInventory": True,"records": [{"id": "123"}]})
+111
+112    def delete_mock_without_body(self,mock):
+113        return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', body=None)
+
+ + +
+
+ +
+ + class + TestCase(unittest.case.TestCase): + + + +
+ +
 13class TestCase(unittest.TestCase):
+ 14    def __init__(self, method_name=None):
+ 15        unittest.TestCase.__init__(self, method_name)
+ 16
+ 17    def get_sdk(self, mock):
+ 18        sdk = SDK('whatever', 'whatever', 'https://whatever', redirect_uri='https://whatever-redirect')
+ 19        self.authentication_mock(mock)
+ 20        sdk.platform().login(jwt='jwt-token')
+ 21        return sdk
+ 22
+ 23    def add(self, mock, method, url, body, status=200):
+ 24        mock.register_uri(
+ 25            method=method,
+ 26            url='https://whatever' + url,
+ 27            text= '' if body is None else json.dumps(body),
+ 28            headers={'Content-Type': 'application/json'},
+ 29            status_code=status
+ 30        )
+ 31
+ 32    def authentication_mock(self, mock):
+ 33        return self.add(mock, 'POST', '/restapi/oauth/token', {
+ 34            'access_token': 'ACCESS_TOKEN',
+ 35            'token_type': 'bearer',
+ 36            'expires_in': 3600,
+ 37            'refresh_token': 'REFRESH_TOKEN',
+ 38            'refresh_token_expires_in': 60480,
+ 39            'scope': 'SMS RCM Foo Boo',
+ 40            'expireTime': time() + 3600,
+ 41            'owner_id': 'foo'
+ 42        })
+ 43
+ 44    def logout_mock(self, mock):
+ 45        return self.add(mock, 'POST', '/restapi/oauth/revoke', {})
+ 46
+ 47    def presence_subscription_mock(self, mock, id='1', detailed=True):
+ 48        detailed = '?detailedTelephonyState=true' if detailed else ''
+ 49        expires_in = 15 * 60 * 60
+ 50
+ 51        return self.add(mock, 'POST', '/restapi/v1.0/subscription', {
+ 52            'eventFilters': ['/restapi/v1.0/account/~/extension/' + id + '/presence' + detailed],
+ 53            'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(),
+ 54            'expiresIn': expires_in,
+ 55            'deliveryMode': {
+ 56                'transportType': 'WebSocket',
+ 57                'encryption': True,
+ 58                'address': '123_foo',
+ 59                'subscriberKey': 'sub-c-foo',
+ 60                'secretKey': 'sec-c-bar',
+ 61                'encryptionAlgorithm': 'AES',
+ 62                'encryptionKey': 'e0bMTqmumPfFUbwzppkSbA=='
+ 63            },
+ 64            'creationTime': date.today().isoformat(),
+ 65            'id': 'foo-bar-baz',
+ 66            'status': 'Active',
+ 67            'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz'
+ 68        })
+ 69
+ 70    def refresh_mock(self, mock, failure=False, expires_in=3600):
+ 71        status = 200
+ 72        body = {
+ 73            'access_token': 'ACCESS_TOKEN_FROM_REFRESH',
+ 74            'token_type': 'bearer',
+ 75            'expires_in': expires_in,
+ 76            'refresh_token': 'REFRESH_TOKEN_FROM_REFRESH',
+ 77            'refresh_token_expires_in': 60480,
+ 78            'scope': 'SMS RCM Foo Boo',
+ 79            'expireTime': time() + expires_in,
+ 80            'owner_id': 'foo'
+ 81        }
+ 82
+ 83        if failure:
+ 84            status = 400
+ 85            body = {'message': 'Wrong token (mock)'}
+ 86
+ 87        return self.add(mock, 'POST', '/restapi/oauth/token', body, status)
+ 88
+ 89    def subscription_mock(self, mock, expires_in=54000, filters=None, id=None):
+ 90        if filters is None:
+ 91            filters = ['/restapi/v1.0/account/~/extension/1/presence']
+ 92
+ 93        return self.add(mock, 'POST' if not id else 'PUT', '/restapi/v1.0/subscription' + ('/' + id if id else ''), {
+ 94            'eventFilters': filters,
+ 95            'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(),
+ 96            'expiresIn': expires_in,
+ 97            'deliveryMode': {
+ 98                'transportType': 'WebSocket',
+ 99                'encryption': False,
+100                'address': '123_foo',
+101                'subscriberKey': 'sub-c-foo',
+102                'secretKey': 'sec-c-bar'
+103            },
+104            'id': id if id else 'foo-bar-baz',
+105            'creationTime': date.today().isoformat(),
+106            'status': 'Active',
+107            'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz'
+108        })
+109
+110    def delete_mock_with_body(self,mock):
+111        return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', {"keepAssetsInInventory": True,"records": [{"id": "123"}]})
+112
+113    def delete_mock_without_body(self,mock):
+114        return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', body=None)
+
+ + +

A class whose instances are single test cases.

+ +

By default, the test code itself should be placed in a method named +'runTest'.

+ +

If the fixture may be used for many test cases, create as +many test methods as are needed. When instantiating such a TestCase +subclass, specify in the constructor arguments the name of the test method +that the instance is to execute.

+ +

Test authors should subclass TestCase for their own tests. Construction +and deconstruction of the test's environment ('fixture') can be +implemented by overriding the 'setUp' and 'tearDown' methods respectively.

+ +

If it is necessary to override the __init__ method, the base class +__init__ method must always be called. It is important that subclasses +should not change the signature of their __init__ method, since instances +of the classes are instantiated automatically by parts of the framework +in order to be run.

+ +

When subclassing TestCase, you can set these attributes:

+ +
    +
  • failureException: determines which exception will be raised when +the instance's assertion methods fail; test methods raising this +exception will be deemed to have 'failed' rather than 'errored'.
  • +
  • longMessage: determines whether long messages (including repr of +objects used in assert methods) will be printed on failure in addition +to any explicit message passed.
  • +
  • maxDiff: sets the maximum length of a diff in failure messages +by assert methods using difflib. It is looked up as an instance +attribute so can be configured by individual tests if required.
  • +
+
+ + +
+ +
+ + TestCase(method_name=None) + + + +
+ +
14    def __init__(self, method_name=None):
+15        unittest.TestCase.__init__(self, method_name)
+
+ + +

Create an instance of the class that will use the named test +method when executed. Raises a ValueError if the instance does +not have a method with the specified name.

+
+ + +
+
+ +
+ + def + get_sdk(self, mock): + + + +
+ +
17    def get_sdk(self, mock):
+18        sdk = SDK('whatever', 'whatever', 'https://whatever', redirect_uri='https://whatever-redirect')
+19        self.authentication_mock(mock)
+20        sdk.platform().login(jwt='jwt-token')
+21        return sdk
+
+ + + + +
+
+ +
+ + def + add(self, mock, method, url, body, status=200): + + + +
+ +
23    def add(self, mock, method, url, body, status=200):
+24        mock.register_uri(
+25            method=method,
+26            url='https://whatever' + url,
+27            text= '' if body is None else json.dumps(body),
+28            headers={'Content-Type': 'application/json'},
+29            status_code=status
+30        )
+
+ + + + +
+
+ +
+ + def + authentication_mock(self, mock): + + + +
+ +
32    def authentication_mock(self, mock):
+33        return self.add(mock, 'POST', '/restapi/oauth/token', {
+34            'access_token': 'ACCESS_TOKEN',
+35            'token_type': 'bearer',
+36            'expires_in': 3600,
+37            'refresh_token': 'REFRESH_TOKEN',
+38            'refresh_token_expires_in': 60480,
+39            'scope': 'SMS RCM Foo Boo',
+40            'expireTime': time() + 3600,
+41            'owner_id': 'foo'
+42        })
+
+ + + + +
+
+ +
+ + def + logout_mock(self, mock): + + + +
+ +
44    def logout_mock(self, mock):
+45        return self.add(mock, 'POST', '/restapi/oauth/revoke', {})
+
+ + + + +
+
+ +
+ + def + presence_subscription_mock(self, mock, id='1', detailed=True): + + + +
+ +
47    def presence_subscription_mock(self, mock, id='1', detailed=True):
+48        detailed = '?detailedTelephonyState=true' if detailed else ''
+49        expires_in = 15 * 60 * 60
+50
+51        return self.add(mock, 'POST', '/restapi/v1.0/subscription', {
+52            'eventFilters': ['/restapi/v1.0/account/~/extension/' + id + '/presence' + detailed],
+53            'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(),
+54            'expiresIn': expires_in,
+55            'deliveryMode': {
+56                'transportType': 'WebSocket',
+57                'encryption': True,
+58                'address': '123_foo',
+59                'subscriberKey': 'sub-c-foo',
+60                'secretKey': 'sec-c-bar',
+61                'encryptionAlgorithm': 'AES',
+62                'encryptionKey': 'e0bMTqmumPfFUbwzppkSbA=='
+63            },
+64            'creationTime': date.today().isoformat(),
+65            'id': 'foo-bar-baz',
+66            'status': 'Active',
+67            'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz'
+68        })
+
+ + + + +
+
+ +
+ + def + refresh_mock(self, mock, failure=False, expires_in=3600): + + + +
+ +
70    def refresh_mock(self, mock, failure=False, expires_in=3600):
+71        status = 200
+72        body = {
+73            'access_token': 'ACCESS_TOKEN_FROM_REFRESH',
+74            'token_type': 'bearer',
+75            'expires_in': expires_in,
+76            'refresh_token': 'REFRESH_TOKEN_FROM_REFRESH',
+77            'refresh_token_expires_in': 60480,
+78            'scope': 'SMS RCM Foo Boo',
+79            'expireTime': time() + expires_in,
+80            'owner_id': 'foo'
+81        }
+82
+83        if failure:
+84            status = 400
+85            body = {'message': 'Wrong token (mock)'}
+86
+87        return self.add(mock, 'POST', '/restapi/oauth/token', body, status)
+
+ + + + +
+
+ +
+ + def + subscription_mock(self, mock, expires_in=54000, filters=None, id=None): + + + +
+ +
 89    def subscription_mock(self, mock, expires_in=54000, filters=None, id=None):
+ 90        if filters is None:
+ 91            filters = ['/restapi/v1.0/account/~/extension/1/presence']
+ 92
+ 93        return self.add(mock, 'POST' if not id else 'PUT', '/restapi/v1.0/subscription' + ('/' + id if id else ''), {
+ 94            'eventFilters': filters,
+ 95            'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(),
+ 96            'expiresIn': expires_in,
+ 97            'deliveryMode': {
+ 98                'transportType': 'WebSocket',
+ 99                'encryption': False,
+100                'address': '123_foo',
+101                'subscriberKey': 'sub-c-foo',
+102                'secretKey': 'sec-c-bar'
+103            },
+104            'id': id if id else 'foo-bar-baz',
+105            'creationTime': date.today().isoformat(),
+106            'status': 'Active',
+107            'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz'
+108        })
+
+ + + + +
+
+ +
+ + def + delete_mock_with_body(self, mock): + + + +
+ +
110    def delete_mock_with_body(self,mock):
+111        return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', {"keepAssetsInInventory": True,"records": [{"id": "123"}]})
+
+ + + + +
+
+ +
+ + def + delete_mock_without_body(self, mock): + + + +
+ +
113    def delete_mock_without_body(self,mock):
+114        return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', body=None)
+
+ + + + +
+
+
Inherited Members
+
+
unittest.case.TestCase
+
failureException
+
longMessage
+
maxDiff
+
addTypeEqualityFunc
+
addCleanup
+
enterContext
+
addClassCleanup
+
enterClassContext
+
setUp
+
tearDown
+
setUpClass
+
tearDownClass
+
countTestCases
+
defaultTestResult
+
shortDescription
+
id
+
subTest
+
run
+
doCleanups
+
doClassCleanups
+
debug
+
skipTest
+
fail
+
assertFalse
+
assertTrue
+
assertRaises
+
assertWarns
+
assertLogs
+
assertNoLogs
+
assertEqual
+
assertNotEqual
+
assertAlmostEqual
+
assertNotAlmostEqual
+
assertSequenceEqual
+
assertListEqual
+
assertTupleEqual
+
assertSetEqual
+
assertIn
+
assertNotIn
+
assertIs
+
assertIsNot
+
assertDictEqual
+
assertDictContainsSubset
+
assertCountEqual
+
assertMultiLineEqual
+
assertLess
+
assertLessEqual
+
assertGreater
+
assertGreaterEqual
+
assertIsNone
+
assertIsNotNone
+
assertIsInstance
+
assertNotIsInstance
+
assertRaisesRegex
+
assertWarnsRegex
+
assertRegex
+
assertNotRegex
+
failUnlessRaises
+
failIf
+
assertRaisesRegexp
+
assertRegexpMatches
+
assertNotRegexpMatches
+
failUnlessEqual
+
assertEquals
+
failIfEqual
+
assertNotEquals
+
failUnlessAlmostEqual
+
assertAlmostEquals
+
failIfAlmostEqual
+
assertNotAlmostEquals
+
failUnless
+
assert_
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/test/testcase.py b/ringcentral/test/testcase.py deleted file mode 100644 index 8f78a24..0000000 --- a/ringcentral/test/testcase.py +++ /dev/null @@ -1,113 +0,0 @@ -import unittest -import requests_mock -import json -import re -from time import time -from datetime import date -from .. import SDK - -requests_mock.Mocker.TEST_PREFIX = 'test' - - -class TestCase(unittest.TestCase): - def __init__(self, method_name=None): - unittest.TestCase.__init__(self, method_name) - - def get_sdk(self, mock): - sdk = SDK('whatever', 'whatever', 'https://whatever', redirect_uri='https://whatever-redirect') - self.authentication_mock(mock) - sdk.platform().login(jwt='jwt-token') - return sdk - - def add(self, mock, method, url, body, status=200): - mock.register_uri( - method=method, - url='https://whatever' + url, - text= '' if body is None else json.dumps(body), - headers={'Content-Type': 'application/json'}, - status_code=status - ) - - def authentication_mock(self, mock): - return self.add(mock, 'POST', '/restapi/oauth/token', { - 'access_token': 'ACCESS_TOKEN', - 'token_type': 'bearer', - 'expires_in': 3600, - 'refresh_token': 'REFRESH_TOKEN', - 'refresh_token_expires_in': 60480, - 'scope': 'SMS RCM Foo Boo', - 'expireTime': time() + 3600, - 'owner_id': 'foo' - }) - - def logout_mock(self, mock): - return self.add(mock, 'POST', '/restapi/oauth/revoke', {}) - - def presence_subscription_mock(self, mock, id='1', detailed=True): - detailed = '?detailedTelephonyState=true' if detailed else '' - expires_in = 15 * 60 * 60 - - return self.add(mock, 'POST', '/restapi/v1.0/subscription', { - 'eventFilters': ['/restapi/v1.0/account/~/extension/' + id + '/presence' + detailed], - 'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(), - 'expiresIn': expires_in, - 'deliveryMode': { - 'transportType': 'WebSocket', - 'encryption': True, - 'address': '123_foo', - 'subscriberKey': 'sub-c-foo', - 'secretKey': 'sec-c-bar', - 'encryptionAlgorithm': 'AES', - 'encryptionKey': 'e0bMTqmumPfFUbwzppkSbA==' - }, - 'creationTime': date.today().isoformat(), - 'id': 'foo-bar-baz', - 'status': 'Active', - 'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz' - }) - - def refresh_mock(self, mock, failure=False, expires_in=3600): - status = 200 - body = { - 'access_token': 'ACCESS_TOKEN_FROM_REFRESH', - 'token_type': 'bearer', - 'expires_in': expires_in, - 'refresh_token': 'REFRESH_TOKEN_FROM_REFRESH', - 'refresh_token_expires_in': 60480, - 'scope': 'SMS RCM Foo Boo', - 'expireTime': time() + expires_in, - 'owner_id': 'foo' - } - - if failure: - status = 400 - body = {'message': 'Wrong token (mock)'} - - return self.add(mock, 'POST', '/restapi/oauth/token', body, status) - - def subscription_mock(self, mock, expires_in=54000, filters=None, id=None): - if filters is None: - filters = ['/restapi/v1.0/account/~/extension/1/presence'] - - return self.add(mock, 'POST' if not id else 'PUT', '/restapi/v1.0/subscription' + ('/' + id if id else ''), { - 'eventFilters': filters, - 'expirationTime': date.fromtimestamp(time() + expires_in).isoformat(), - 'expiresIn': expires_in, - 'deliveryMode': { - 'transportType': 'WebSocket', - 'encryption': False, - 'address': '123_foo', - 'subscriberKey': 'sub-c-foo', - 'secretKey': 'sec-c-bar' - }, - 'id': id if id else 'foo-bar-baz', - 'creationTime': date.today().isoformat(), - 'status': 'Active', - 'uri': 'https://platform.ringcentral.com/restapi/v1.0/subscription/foo-bar-baz' - }) - - def delete_mock_with_body(self,mock): - return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', {"keepAssetsInInventory": True,"records": [{"id": "123"}]}) - - def delete_mock_without_body(self,mock): - return self.add(mock, 'DELETE', '/restapi/v2/accounts/~/extensions', body=None) \ No newline at end of file diff --git a/ringcentral/websocket.html b/ringcentral/websocket.html new file mode 100644 index 0000000..4b9b831 --- /dev/null +++ b/ringcentral/websocket.html @@ -0,0 +1,246 @@ + + + + + + + ringcentral.websocket API documentation + + + + + + + + + +
+
+

+ringcentral.websocket

+ + + + + + +
1from .web_socket_client import WebSocketClient
+2from .web_socket_subscription import WebSocketSubscription
+3from .events import WebSocketEvents
+
+ + +
+
+ + \ No newline at end of file diff --git a/ringcentral/websocket/__init__.py b/ringcentral/websocket/__init__.py deleted file mode 100644 index 5d1ba71..0000000 --- a/ringcentral/websocket/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .web_socket_client import WebSocketClient -from .web_socket_subscription import WebSocketSubscription -from .events import WebSocketEvents \ No newline at end of file diff --git a/ringcentral/websocket/events.html b/ringcentral/websocket/events.html new file mode 100644 index 0000000..6ad4f29 --- /dev/null +++ b/ringcentral/websocket/events.html @@ -0,0 +1,586 @@ + + + + + + + ringcentral.websocket.events API documentation + + + + + + + + + +
+
+

+ringcentral.websocket.events

+ + + + + + +
 1class WebSocketEvents:
+ 2    """
+ 3        WebSocketEvents class representing various events related to WebSocket communication.
+ 4
+ 5        Attributes:
+ 6            getTokenError (str): Event triggered when an error occurs while retrieving the WebSocket token.
+ 7            createConnectionError (str): Event triggered when an error occurs while creating a WebSocket connection.
+ 8            connectionCreated (str): Event triggered when a WebSocket connection is successfully created.
+ 9            closeConnectionError (str): Event triggered when an error occurs while closing a WebSocket connection.
+10            recoverConnectionError (str): Event triggered when an error occurs while recovering a WebSocket connection.
+11            receiveMessage (str): Event triggered when a message is received over the WebSocket connection.
+12            sendMessageError (str): Event triggered when an error occurs while sending a message over the WebSocket connection.
+13            connectionNotReady (str): Event triggered when attempting to perform an action while the WebSocket connection is not ready.
+14            createSubscriptionError (str): Event triggered when an error occurs while creating a subscription.
+15            updateSubscriptionError (str): Event triggered when an error occurs while updating a subscription.
+16            removeSubscriptionError (str): Event triggered when an error occurs while removing a subscription.
+17            subscriptionCreated (str): Event triggered when a subscription is successfully created.
+18            subscriptionUpdated (str): Event triggered when a subscription is successfully updated.
+19            subscriptionRemoved (str): Event triggered when a subscription is successfully removed.
+20            receiveSubscriptionNotification (str): Event triggered when a subscription notification is received.
+21    """
+22    getTokenError = 'getTokenError'
+23    createConnectionError = 'createConnectionError'
+24    connectionCreated = 'connectionCreated'
+25    closeConnectionError = 'closeConnectionError'
+26    recoverConnectionError = 'recoverConnectionError'
+27    receiveMessage = 'receiveMessage'
+28    sendMessageError = 'sendMessageError'
+29    connectionNotReady = 'connectionNotReady'
+30    createSubscriptionError = 'createSubscriptionError'
+31    updateSubscriptionError = 'updateSubscriptionError'
+32    removeSubscriptionError = 'removeSubscriptionError'
+33    subscriptionCreated = 'subscriptionCreated'
+34    subscriptionUpdated = 'subscriptionUpdated'
+35    subscriptionRemoved = 'subscriptionRemoved'
+36    receiveSubscriptionNotification = 'receiveSubscriptionNotification'
+37
+38    def __init__(self):
+39        pass
+
+ + +
+
+ +
+ + class + WebSocketEvents: + + + +
+ +
 3class WebSocketEvents:
+ 4    """
+ 5        WebSocketEvents class representing various events related to WebSocket communication.
+ 6
+ 7        Attributes:
+ 8            getTokenError (str): Event triggered when an error occurs while retrieving the WebSocket token.
+ 9            createConnectionError (str): Event triggered when an error occurs while creating a WebSocket connection.
+10            connectionCreated (str): Event triggered when a WebSocket connection is successfully created.
+11            closeConnectionError (str): Event triggered when an error occurs while closing a WebSocket connection.
+12            recoverConnectionError (str): Event triggered when an error occurs while recovering a WebSocket connection.
+13            receiveMessage (str): Event triggered when a message is received over the WebSocket connection.
+14            sendMessageError (str): Event triggered when an error occurs while sending a message over the WebSocket connection.
+15            connectionNotReady (str): Event triggered when attempting to perform an action while the WebSocket connection is not ready.
+16            createSubscriptionError (str): Event triggered when an error occurs while creating a subscription.
+17            updateSubscriptionError (str): Event triggered when an error occurs while updating a subscription.
+18            removeSubscriptionError (str): Event triggered when an error occurs while removing a subscription.
+19            subscriptionCreated (str): Event triggered when a subscription is successfully created.
+20            subscriptionUpdated (str): Event triggered when a subscription is successfully updated.
+21            subscriptionRemoved (str): Event triggered when a subscription is successfully removed.
+22            receiveSubscriptionNotification (str): Event triggered when a subscription notification is received.
+23    """
+24    getTokenError = 'getTokenError'
+25    createConnectionError = 'createConnectionError'
+26    connectionCreated = 'connectionCreated'
+27    closeConnectionError = 'closeConnectionError'
+28    recoverConnectionError = 'recoverConnectionError'
+29    receiveMessage = 'receiveMessage'
+30    sendMessageError = 'sendMessageError'
+31    connectionNotReady = 'connectionNotReady'
+32    createSubscriptionError = 'createSubscriptionError'
+33    updateSubscriptionError = 'updateSubscriptionError'
+34    removeSubscriptionError = 'removeSubscriptionError'
+35    subscriptionCreated = 'subscriptionCreated'
+36    subscriptionUpdated = 'subscriptionUpdated'
+37    subscriptionRemoved = 'subscriptionRemoved'
+38    receiveSubscriptionNotification = 'receiveSubscriptionNotification'
+39
+40    def __init__(self):
+41        pass
+
+ + +

WebSocketEvents class representing various events related to WebSocket communication.

+ +

Attributes: + getTokenError (str): Event triggered when an error occurs while retrieving the WebSocket token. + createConnectionError (str): Event triggered when an error occurs while creating a WebSocket connection. + connectionCreated (str): Event triggered when a WebSocket connection is successfully created. + closeConnectionError (str): Event triggered when an error occurs while closing a WebSocket connection. + recoverConnectionError (str): Event triggered when an error occurs while recovering a WebSocket connection. + receiveMessage (str): Event triggered when a message is received over the WebSocket connection. + sendMessageError (str): Event triggered when an error occurs while sending a message over the WebSocket connection. + connectionNotReady (str): Event triggered when attempting to perform an action while the WebSocket connection is not ready. + createSubscriptionError (str): Event triggered when an error occurs while creating a subscription. + updateSubscriptionError (str): Event triggered when an error occurs while updating a subscription. + removeSubscriptionError (str): Event triggered when an error occurs while removing a subscription. + subscriptionCreated (str): Event triggered when a subscription is successfully created. + subscriptionUpdated (str): Event triggered when a subscription is successfully updated. + subscriptionRemoved (str): Event triggered when a subscription is successfully removed. + receiveSubscriptionNotification (str): Event triggered when a subscription notification is received.

+
+ + +
+
+ getTokenError = +'getTokenError' + + +
+ + + + +
+
+
+ createConnectionError = +'createConnectionError' + + +
+ + + + +
+
+
+ connectionCreated = +'connectionCreated' + + +
+ + + + +
+
+
+ closeConnectionError = +'closeConnectionError' + + +
+ + + + +
+
+
+ recoverConnectionError = +'recoverConnectionError' + + +
+ + + + +
+
+
+ receiveMessage = +'receiveMessage' + + +
+ + + + +
+
+
+ sendMessageError = +'sendMessageError' + + +
+ + + + +
+
+
+ connectionNotReady = +'connectionNotReady' + + +
+ + + + +
+
+
+ createSubscriptionError = +'createSubscriptionError' + + +
+ + + + +
+
+
+ updateSubscriptionError = +'updateSubscriptionError' + + +
+ + + + +
+
+
+ removeSubscriptionError = +'removeSubscriptionError' + + +
+ + + + +
+
+
+ subscriptionCreated = +'subscriptionCreated' + + +
+ + + + +
+
+
+ subscriptionUpdated = +'subscriptionUpdated' + + +
+ + + + +
+
+
+ subscriptionRemoved = +'subscriptionRemoved' + + +
+ + + + +
+
+
+ receiveSubscriptionNotification = +'receiveSubscriptionNotification' + + +
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/ringcentral/websocket/events.py b/ringcentral/websocket/events.py deleted file mode 100644 index f529bd6..0000000 --- a/ringcentral/websocket/events.py +++ /dev/null @@ -1,40 +0,0 @@ - -class WebSocketEvents: - """ - WebSocketEvents class representing various events related to WebSocket communication. - - Attributes: - getTokenError (str): Event triggered when an error occurs while retrieving the WebSocket token. - createConnectionError (str): Event triggered when an error occurs while creating a WebSocket connection. - connectionCreated (str): Event triggered when a WebSocket connection is successfully created. - closeConnectionError (str): Event triggered when an error occurs while closing a WebSocket connection. - recoverConnectionError (str): Event triggered when an error occurs while recovering a WebSocket connection. - receiveMessage (str): Event triggered when a message is received over the WebSocket connection. - sendMessageError (str): Event triggered when an error occurs while sending a message over the WebSocket connection. - connectionNotReady (str): Event triggered when attempting to perform an action while the WebSocket connection is not ready. - createSubscriptionError (str): Event triggered when an error occurs while creating a subscription. - updateSubscriptionError (str): Event triggered when an error occurs while updating a subscription. - removeSubscriptionError (str): Event triggered when an error occurs while removing a subscription. - subscriptionCreated (str): Event triggered when a subscription is successfully created. - subscriptionUpdated (str): Event triggered when a subscription is successfully updated. - subscriptionRemoved (str): Event triggered when a subscription is successfully removed. - receiveSubscriptionNotification (str): Event triggered when a subscription notification is received. - """ - getTokenError = 'getTokenError' - createConnectionError = 'createConnectionError' - connectionCreated = 'connectionCreated' - closeConnectionError = 'closeConnectionError' - recoverConnectionError = 'recoverConnectionError' - receiveMessage = 'receiveMessage' - sendMessageError = 'sendMessageError' - connectionNotReady = 'connectionNotReady' - createSubscriptionError = 'createSubscriptionError' - updateSubscriptionError = 'updateSubscriptionError' - removeSubscriptionError = 'removeSubscriptionError' - subscriptionCreated = 'subscriptionCreated' - subscriptionUpdated = 'subscriptionUpdated' - subscriptionRemoved = 'subscriptionRemoved' - receiveSubscriptionNotification = 'receiveSubscriptionNotification' - - def __init__(self): - pass diff --git a/ringcentral/websocket/web_socket_client.html b/ringcentral/websocket/web_socket_client.html new file mode 100644 index 0000000..7d2759e --- /dev/null +++ b/ringcentral/websocket/web_socket_client.html @@ -0,0 +1,1415 @@ + + + + + + + ringcentral.websocket.web_socket_client API documentation + + + + + + + + + +
+
+

+ringcentral.websocket.web_socket_client

+ + + + + + +
  1#!/usr/bin/env python
+  2# encoding: utf-8
+  3from observable import Observable
+  4import websockets
+  5from .web_socket_subscription import WebSocketSubscription
+  6from .events import WebSocketEvents
+  7import json
+  8import asyncio
+  9import uuid
+ 10
+ 11class WebSocketClient(Observable):
+ 12    def __init__(self, platform):
+ 13        Observable.__init__(self)
+ 14        self._platform = platform
+ 15        self._web_socket = None
+ 16        self._done = False
+ 17        self._is_ready = False
+ 18        self._send_attempt_counter = 0
+ 19
+ 20    async def create_new_connection(self):
+ 21        """
+ 22        Creates a new WebSocket connection.
+ 23
+ 24        Returns:
+ 25            Any: Response object containing the result of the connection creation.
+ 26
+ 27        Raises:
+ 28            Exception: If any error occurs during the process.
+ 29
+ 30        Note:
+ 31            - Retrieves the WebSocket token using `get_web_socket_token`.
+ 32            - Attempts to open a WebSocket connection using the retrieved token's URI and access token.
+ 33            - Triggers the createConnectionError event if an error occurs and raises the exception.
+ 34        """
+ 35        try:
+ 36            web_socket_token = self.get_web_socket_token()
+ 37            open_connection_response = await self.open_connection(
+ 38                web_socket_token["uri"], web_socket_token["ws_access_token"]
+ 39            )
+ 40            return open_connection_response
+ 41        except Exception as e:
+ 42            self.trigger(WebSocketEvents.createConnectionError, e)
+ 43            raise
+ 44
+ 45    def get_web_socket_token(self):
+ 46        """
+ 47            Retrieves a WebSocket token.
+ 48
+ 49            Returns:
+ 50                dict: WebSocket token containing URI and access token.
+ 51
+ 52            Raises:
+ 53                Exception: If any error occurs during the process.
+ 54
+ 55            Note:
+ 56                - Sends a POST request to the '/restapi/oauth/wstoken' endpoint to obtain the WebSocket token.
+ 57                - Returns the WebSocket token as a dictionary containing the URI and access token.
+ 58                - Triggers the getTokenError event if an error occurs and raises the exception.
+ 59        """
+ 60        try:
+ 61            response = self._platform.post("/restapi/oauth/wstoken", body={})
+ 62            return response.json_dict()
+ 63        except Exception as e:
+ 64            self.trigger(WebSocketEvents.getTokenError, e)
+ 65            raise
+ 66
+ 67    async def open_connection(self, ws_uri, ws_access_token):
+ 68        """
+ 69            Opens a WebSocket connection.
+ 70
+ 71            Args:
+ 72                ws_uri (str): The WebSocket URI.
+ 73                ws_access_token (str): The access token for WebSocket authentication.
+ 74
+ 75            Raises:
+ 76                Exception: If any error occurs during the process.
+ 77
+ 78            Note:
+ 79                - Attempts to establish a WebSocket connection to the provided URI with the given access token.
+ 80                - Upon successful connection, sets up a heartbeat mechanism to maintain the connection.
+ 81                - Triggers the connectionCreated event upon successful connection establishment.
+ 82                - Listens for incoming messages and triggers the receiveMessage event for each received message.
+ 83                - Triggers the createConnectionError event if an error occurs during the connection process and raises the exception.
+ 84        """
+ 85        try:
+ 86            websocket = await websockets.connect(
+ 87                f"{ws_uri}?access_token={ws_access_token}"
+ 88            )
+ 89            connectionMessage = await websocket.recv()
+ 90            connection_info = {}
+ 91            connection_info["connection"] = websocket
+ 92            connection_info["connection_details"] = connectionMessage
+ 93            self._web_socket = connection_info
+ 94            self._is_ready = True
+ 95            self.trigger(WebSocketEvents.connectionCreated, self)
+ 96
+ 97            # heartbeat every 10 minutes
+ 98            async def timer_function():
+ 99                while True:
+100                    if self._done:
+101                        timer.cancel()
+102                        break
+103                    await asyncio.sleep(600)
+104                    await self.send_message([{"type": "Heartbeat", "messageId": str(uuid.uuid4())}])
+105            timer = asyncio.create_task(timer_function())
+106
+107            await asyncio.sleep(0)
+108            while True:
+109                message = await websocket.recv()
+110                self.trigger(WebSocketEvents.receiveMessage, message)
+111                await asyncio.sleep(0)
+112        except Exception as e:
+113            self.trigger(WebSocketEvents.createConnectionError, e)
+114            raise
+115
+116    def get_connection_info(self):
+117        return self._web_socket
+118
+119    def get_connection(self):
+120        return self._web_socket["connection"]
+121
+122    async def close_connection(self):
+123        """
+124            Closes the WebSocket connection.
+125
+126            Raises:
+127                Exception: If any error occurs during the process.
+128
+129            Note:
+130                - Sets the `_done` flag to True to signal the termination of the heartbeat mechanism.
+131                - Sets the `_is_ready` flag to False to indicate that the connection is no longer ready.
+132                - Retrieves the WebSocket connection using `get_connection`.
+133                - Closes the WebSocket connection.
+134                - Triggers the closeConnectionError event if an error occurs during the closing process and raises the exception.
+135        """
+136        try:
+137            self._done = True
+138            self._is_ready = False
+139            ws_connection = self.get_connection()
+140            await ws_connection.close()
+141        except Exception as e:
+142            self.trigger(WebSocketEvents.closeConnectionError, e)
+143            raise
+144
+145    async def recover_connection(self):
+146        try:
+147            ws_connection_info = self.get_web_socket_token()
+148            recovered_connection_info = await self.open_connection(
+149                ws_connection_info["uri"], ws_connection_info["ws_access_token"]
+150            )
+151            # if recovered_connection_info['recoveryState'] === "Successful", then subscription is restored
+152            # otherwise, need to create a new subscription
+153            # IMPORTANT: WebSocket creation is successful if it doesn't raise any exception
+154            return recovered_connection_info
+155        except Exception as e:
+156            self.trigger(WebSocketEvents.recoverConnectionError, e)
+157            raise
+158
+159    async def send_message(self, message):
+160        """
+161            Sends a message over the WebSocket connection.
+162
+163            Args:
+164                message (Any): The message to be sent.
+165
+166            Raises:
+167                Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.
+168
+169            Note:
+170                - Checks if the WebSocket connection is ready (`_is_ready` flag).
+171                - If the connection is ready, resets the send attempt counter and sends the message.
+172                - If the connection is not ready, retries after a delay and increments the send attempt counter.
+173                - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.
+174        """
+175        try:
+176            if self._is_ready:
+177                self._send_attempt_counter = 0
+178                requestBodyJson = json.dumps(message)
+179                await self.get_connection().send(requestBodyJson)
+180            else:
+181                await asyncio.sleep(1)
+182                await self.send_message(message)
+183                self._send_attempt_counter += 1
+184                if(self._send_attempt_counter > 10):
+185                    self.trigger(WebSocketEvents.connectionNotReady)
+186                    self._send_attempt_counter = 0
+187                    raise
+188        except Exception as e:
+189            self.trigger(WebSocketEvents.sendMessageError, e)
+190            raise
+191
+192    async def create_subscription(self, events=None):
+193        """
+194            Creates a subscription to WebSocket events.
+195
+196            Args:
+197                events (list, optional): A list of events to subscribe to. Default is None.
+198
+199            Raises:
+200                Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.
+201
+202            Note:
+203                - If the WebSocket connection is ready (`_is_ready` flag), resets the send attempt counter and creates a WebSocketSubscription instance.
+204                - Registers the subscription with the specified events.
+205                - If the connection is not ready, retries after a delay and increments the send attempt counter.
+206                - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.
+207        """
+208        try:
+209            if self._is_ready:
+210                self._send_attempt_counter = 0
+211                subscription = WebSocketSubscription(self)
+212                await subscription.register(events)
+213            else:
+214                await asyncio.sleep(1)
+215                await self.create_subscription(events)
+216                self._send_attempt_counter += 1
+217                if(self._send_attempt_counter > 10):
+218                    self.trigger(WebSocketEvents.connectionNotReady)
+219                    self._send_attempt_counter = 0
+220                    raise
+221
+222        except Exception as e:
+223            self.trigger(WebSocketEvents.createSubscriptionError, e)
+224            raise
+225
+226    async def update_subscription(self, subscription, events=None):
+227        """
+228            Updates an existing WebSocket subscription with new events.
+229
+230            Args:
+231                subscription : The WebSocket subscription to update.
+232                events (list, optional): A list of events to update the subscription with. Default is None.
+233
+234            Returns:
+235                WebSocketSubscription: The updated WebSocket subscription.
+236
+237            Raises:
+238                Exception: If any error occurs during the process.
+239
+240            Note:
+241                - Updates the specified WebSocket subscription with the new events provided.
+242                - If the update is successful, returns the updated WebSocket subscription.
+243                - If an error occurs during the update process, triggers the updateSubscriptionError event and raises an exception.
+244        """
+245        try:
+246            await subscription.update(events)
+247            return subscription
+248        except Exception as e:
+249            self.trigger(WebSocketEvents.updateSubscriptionError, e)
+250            raise
+251
+252    async def remove_subscription(self, subscription):
+253        """
+254            Removes an existing WebSocket subscription.
+255
+256            Args:
+257                subscription : The WebSocket subscription to remove.
+258
+259            Raises:
+260                Exception: If any error occurs during the removal process.
+261
+262            Note:
+263                - Removes the specified WebSocket subscription.
+264                - If the removal is successful, the subscription is effectively unsubscribed from the events it was subscribed to.
+265                - If an error occurs during the removal process, triggers the removeSubscriptionError event and raises an exception.
+266        """
+267        try:
+268            await subscription.remove()
+269        except Exception as e:
+270            self.trigger(WebSocketEvents.removeSubscriptionError, e)
+271            raise
+272
+273
+274if __name__ == "__main__":
+275    pass
+
+ + +
+
+ +
+ + class + WebSocketClient(observable.core.Observable): + + + +
+ +
 12class WebSocketClient(Observable):
+ 13    def __init__(self, platform):
+ 14        Observable.__init__(self)
+ 15        self._platform = platform
+ 16        self._web_socket = None
+ 17        self._done = False
+ 18        self._is_ready = False
+ 19        self._send_attempt_counter = 0
+ 20
+ 21    async def create_new_connection(self):
+ 22        """
+ 23        Creates a new WebSocket connection.
+ 24
+ 25        Returns:
+ 26            Any: Response object containing the result of the connection creation.
+ 27
+ 28        Raises:
+ 29            Exception: If any error occurs during the process.
+ 30
+ 31        Note:
+ 32            - Retrieves the WebSocket token using `get_web_socket_token`.
+ 33            - Attempts to open a WebSocket connection using the retrieved token's URI and access token.
+ 34            - Triggers the createConnectionError event if an error occurs and raises the exception.
+ 35        """
+ 36        try:
+ 37            web_socket_token = self.get_web_socket_token()
+ 38            open_connection_response = await self.open_connection(
+ 39                web_socket_token["uri"], web_socket_token["ws_access_token"]
+ 40            )
+ 41            return open_connection_response
+ 42        except Exception as e:
+ 43            self.trigger(WebSocketEvents.createConnectionError, e)
+ 44            raise
+ 45
+ 46    def get_web_socket_token(self):
+ 47        """
+ 48            Retrieves a WebSocket token.
+ 49
+ 50            Returns:
+ 51                dict: WebSocket token containing URI and access token.
+ 52
+ 53            Raises:
+ 54                Exception: If any error occurs during the process.
+ 55
+ 56            Note:
+ 57                - Sends a POST request to the '/restapi/oauth/wstoken' endpoint to obtain the WebSocket token.
+ 58                - Returns the WebSocket token as a dictionary containing the URI and access token.
+ 59                - Triggers the getTokenError event if an error occurs and raises the exception.
+ 60        """
+ 61        try:
+ 62            response = self._platform.post("/restapi/oauth/wstoken", body={})
+ 63            return response.json_dict()
+ 64        except Exception as e:
+ 65            self.trigger(WebSocketEvents.getTokenError, e)
+ 66            raise
+ 67
+ 68    async def open_connection(self, ws_uri, ws_access_token):
+ 69        """
+ 70            Opens a WebSocket connection.
+ 71
+ 72            Args:
+ 73                ws_uri (str): The WebSocket URI.
+ 74                ws_access_token (str): The access token for WebSocket authentication.
+ 75
+ 76            Raises:
+ 77                Exception: If any error occurs during the process.
+ 78
+ 79            Note:
+ 80                - Attempts to establish a WebSocket connection to the provided URI with the given access token.
+ 81                - Upon successful connection, sets up a heartbeat mechanism to maintain the connection.
+ 82                - Triggers the connectionCreated event upon successful connection establishment.
+ 83                - Listens for incoming messages and triggers the receiveMessage event for each received message.
+ 84                - Triggers the createConnectionError event if an error occurs during the connection process and raises the exception.
+ 85        """
+ 86        try:
+ 87            websocket = await websockets.connect(
+ 88                f"{ws_uri}?access_token={ws_access_token}"
+ 89            )
+ 90            connectionMessage = await websocket.recv()
+ 91            connection_info = {}
+ 92            connection_info["connection"] = websocket
+ 93            connection_info["connection_details"] = connectionMessage
+ 94            self._web_socket = connection_info
+ 95            self._is_ready = True
+ 96            self.trigger(WebSocketEvents.connectionCreated, self)
+ 97
+ 98            # heartbeat every 10 minutes
+ 99            async def timer_function():
+100                while True:
+101                    if self._done:
+102                        timer.cancel()
+103                        break
+104                    await asyncio.sleep(600)
+105                    await self.send_message([{"type": "Heartbeat", "messageId": str(uuid.uuid4())}])
+106            timer = asyncio.create_task(timer_function())
+107
+108            await asyncio.sleep(0)
+109            while True:
+110                message = await websocket.recv()
+111                self.trigger(WebSocketEvents.receiveMessage, message)
+112                await asyncio.sleep(0)
+113        except Exception as e:
+114            self.trigger(WebSocketEvents.createConnectionError, e)
+115            raise
+116
+117    def get_connection_info(self):
+118        return self._web_socket
+119
+120    def get_connection(self):
+121        return self._web_socket["connection"]
+122
+123    async def close_connection(self):
+124        """
+125            Closes the WebSocket connection.
+126
+127            Raises:
+128                Exception: If any error occurs during the process.
+129
+130            Note:
+131                - Sets the `_done` flag to True to signal the termination of the heartbeat mechanism.
+132                - Sets the `_is_ready` flag to False to indicate that the connection is no longer ready.
+133                - Retrieves the WebSocket connection using `get_connection`.
+134                - Closes the WebSocket connection.
+135                - Triggers the closeConnectionError event if an error occurs during the closing process and raises the exception.
+136        """
+137        try:
+138            self._done = True
+139            self._is_ready = False
+140            ws_connection = self.get_connection()
+141            await ws_connection.close()
+142        except Exception as e:
+143            self.trigger(WebSocketEvents.closeConnectionError, e)
+144            raise
+145
+146    async def recover_connection(self):
+147        try:
+148            ws_connection_info = self.get_web_socket_token()
+149            recovered_connection_info = await self.open_connection(
+150                ws_connection_info["uri"], ws_connection_info["ws_access_token"]
+151            )
+152            # if recovered_connection_info['recoveryState'] === "Successful", then subscription is restored
+153            # otherwise, need to create a new subscription
+154            # IMPORTANT: WebSocket creation is successful if it doesn't raise any exception
+155            return recovered_connection_info
+156        except Exception as e:
+157            self.trigger(WebSocketEvents.recoverConnectionError, e)
+158            raise
+159
+160    async def send_message(self, message):
+161        """
+162            Sends a message over the WebSocket connection.
+163
+164            Args:
+165                message (Any): The message to be sent.
+166
+167            Raises:
+168                Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.
+169
+170            Note:
+171                - Checks if the WebSocket connection is ready (`_is_ready` flag).
+172                - If the connection is ready, resets the send attempt counter and sends the message.
+173                - If the connection is not ready, retries after a delay and increments the send attempt counter.
+174                - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.
+175        """
+176        try:
+177            if self._is_ready:
+178                self._send_attempt_counter = 0
+179                requestBodyJson = json.dumps(message)
+180                await self.get_connection().send(requestBodyJson)
+181            else:
+182                await asyncio.sleep(1)
+183                await self.send_message(message)
+184                self._send_attempt_counter += 1
+185                if(self._send_attempt_counter > 10):
+186                    self.trigger(WebSocketEvents.connectionNotReady)
+187                    self._send_attempt_counter = 0
+188                    raise
+189        except Exception as e:
+190            self.trigger(WebSocketEvents.sendMessageError, e)
+191            raise
+192
+193    async def create_subscription(self, events=None):
+194        """
+195            Creates a subscription to WebSocket events.
+196
+197            Args:
+198                events (list, optional): A list of events to subscribe to. Default is None.
+199
+200            Raises:
+201                Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.
+202
+203            Note:
+204                - If the WebSocket connection is ready (`_is_ready` flag), resets the send attempt counter and creates a WebSocketSubscription instance.
+205                - Registers the subscription with the specified events.
+206                - If the connection is not ready, retries after a delay and increments the send attempt counter.
+207                - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.
+208        """
+209        try:
+210            if self._is_ready:
+211                self._send_attempt_counter = 0
+212                subscription = WebSocketSubscription(self)
+213                await subscription.register(events)
+214            else:
+215                await asyncio.sleep(1)
+216                await self.create_subscription(events)
+217                self._send_attempt_counter += 1
+218                if(self._send_attempt_counter > 10):
+219                    self.trigger(WebSocketEvents.connectionNotReady)
+220                    self._send_attempt_counter = 0
+221                    raise
+222
+223        except Exception as e:
+224            self.trigger(WebSocketEvents.createSubscriptionError, e)
+225            raise
+226
+227    async def update_subscription(self, subscription, events=None):
+228        """
+229            Updates an existing WebSocket subscription with new events.
+230
+231            Args:
+232                subscription : The WebSocket subscription to update.
+233                events (list, optional): A list of events to update the subscription with. Default is None.
+234
+235            Returns:
+236                WebSocketSubscription: The updated WebSocket subscription.
+237
+238            Raises:
+239                Exception: If any error occurs during the process.
+240
+241            Note:
+242                - Updates the specified WebSocket subscription with the new events provided.
+243                - If the update is successful, returns the updated WebSocket subscription.
+244                - If an error occurs during the update process, triggers the updateSubscriptionError event and raises an exception.
+245        """
+246        try:
+247            await subscription.update(events)
+248            return subscription
+249        except Exception as e:
+250            self.trigger(WebSocketEvents.updateSubscriptionError, e)
+251            raise
+252
+253    async def remove_subscription(self, subscription):
+254        """
+255            Removes an existing WebSocket subscription.
+256
+257            Args:
+258                subscription : The WebSocket subscription to remove.
+259
+260            Raises:
+261                Exception: If any error occurs during the removal process.
+262
+263            Note:
+264                - Removes the specified WebSocket subscription.
+265                - If the removal is successful, the subscription is effectively unsubscribed from the events it was subscribed to.
+266                - If an error occurs during the removal process, triggers the removeSubscriptionError event and raises an exception.
+267        """
+268        try:
+269            await subscription.remove()
+270        except Exception as e:
+271            self.trigger(WebSocketEvents.removeSubscriptionError, e)
+272            raise
+
+ + +

Event system for python

+
+ + +
+ +
+ + WebSocketClient(platform) + + + +
+ +
13    def __init__(self, platform):
+14        Observable.__init__(self)
+15        self._platform = platform
+16        self._web_socket = None
+17        self._done = False
+18        self._is_ready = False
+19        self._send_attempt_counter = 0
+
+ + + + +
+
+ +
+ + async def + create_new_connection(self): + + + +
+ +
21    async def create_new_connection(self):
+22        """
+23        Creates a new WebSocket connection.
+24
+25        Returns:
+26            Any: Response object containing the result of the connection creation.
+27
+28        Raises:
+29            Exception: If any error occurs during the process.
+30
+31        Note:
+32            - Retrieves the WebSocket token using `get_web_socket_token`.
+33            - Attempts to open a WebSocket connection using the retrieved token's URI and access token.
+34            - Triggers the createConnectionError event if an error occurs and raises the exception.
+35        """
+36        try:
+37            web_socket_token = self.get_web_socket_token()
+38            open_connection_response = await self.open_connection(
+39                web_socket_token["uri"], web_socket_token["ws_access_token"]
+40            )
+41            return open_connection_response
+42        except Exception as e:
+43            self.trigger(WebSocketEvents.createConnectionError, e)
+44            raise
+
+ + +

Creates a new WebSocket connection.

+ +

Returns: + Any: Response object containing the result of the connection creation.

+ +

Raises: + Exception: If any error occurs during the process.

+ +

Note: + - Retrieves the WebSocket token using get_web_socket_token. + - Attempts to open a WebSocket connection using the retrieved token's URI and access token. + - Triggers the createConnectionError event if an error occurs and raises the exception.

+
+ + +
+
+ +
+ + def + get_web_socket_token(self): + + + +
+ +
46    def get_web_socket_token(self):
+47        """
+48            Retrieves a WebSocket token.
+49
+50            Returns:
+51                dict: WebSocket token containing URI and access token.
+52
+53            Raises:
+54                Exception: If any error occurs during the process.
+55
+56            Note:
+57                - Sends a POST request to the '/restapi/oauth/wstoken' endpoint to obtain the WebSocket token.
+58                - Returns the WebSocket token as a dictionary containing the URI and access token.
+59                - Triggers the getTokenError event if an error occurs and raises the exception.
+60        """
+61        try:
+62            response = self._platform.post("/restapi/oauth/wstoken", body={})
+63            return response.json_dict()
+64        except Exception as e:
+65            self.trigger(WebSocketEvents.getTokenError, e)
+66            raise
+
+ + +

Retrieves a WebSocket token.

+ +

Returns: + dict: WebSocket token containing URI and access token.

+ +

Raises: + Exception: If any error occurs during the process.

+ +

Note: + - Sends a POST request to the '/restapi/oauth/wstoken' endpoint to obtain the WebSocket token. + - Returns the WebSocket token as a dictionary containing the URI and access token. + - Triggers the getTokenError event if an error occurs and raises the exception.

+
+ + +
+
+ +
+ + async def + open_connection(self, ws_uri, ws_access_token): + + + +
+ +
 68    async def open_connection(self, ws_uri, ws_access_token):
+ 69        """
+ 70            Opens a WebSocket connection.
+ 71
+ 72            Args:
+ 73                ws_uri (str): The WebSocket URI.
+ 74                ws_access_token (str): The access token for WebSocket authentication.
+ 75
+ 76            Raises:
+ 77                Exception: If any error occurs during the process.
+ 78
+ 79            Note:
+ 80                - Attempts to establish a WebSocket connection to the provided URI with the given access token.
+ 81                - Upon successful connection, sets up a heartbeat mechanism to maintain the connection.
+ 82                - Triggers the connectionCreated event upon successful connection establishment.
+ 83                - Listens for incoming messages and triggers the receiveMessage event for each received message.
+ 84                - Triggers the createConnectionError event if an error occurs during the connection process and raises the exception.
+ 85        """
+ 86        try:
+ 87            websocket = await websockets.connect(
+ 88                f"{ws_uri}?access_token={ws_access_token}"
+ 89            )
+ 90            connectionMessage = await websocket.recv()
+ 91            connection_info = {}
+ 92            connection_info["connection"] = websocket
+ 93            connection_info["connection_details"] = connectionMessage
+ 94            self._web_socket = connection_info
+ 95            self._is_ready = True
+ 96            self.trigger(WebSocketEvents.connectionCreated, self)
+ 97
+ 98            # heartbeat every 10 minutes
+ 99            async def timer_function():
+100                while True:
+101                    if self._done:
+102                        timer.cancel()
+103                        break
+104                    await asyncio.sleep(600)
+105                    await self.send_message([{"type": "Heartbeat", "messageId": str(uuid.uuid4())}])
+106            timer = asyncio.create_task(timer_function())
+107
+108            await asyncio.sleep(0)
+109            while True:
+110                message = await websocket.recv()
+111                self.trigger(WebSocketEvents.receiveMessage, message)
+112                await asyncio.sleep(0)
+113        except Exception as e:
+114            self.trigger(WebSocketEvents.createConnectionError, e)
+115            raise
+
+ + +

Opens a WebSocket connection.

+ +

Args: + ws_uri (str): The WebSocket URI. + ws_access_token (str): The access token for WebSocket authentication.

+ +

Raises: + Exception: If any error occurs during the process.

+ +

Note: + - Attempts to establish a WebSocket connection to the provided URI with the given access token. + - Upon successful connection, sets up a heartbeat mechanism to maintain the connection. + - Triggers the connectionCreated event upon successful connection establishment. + - Listens for incoming messages and triggers the receiveMessage event for each received message. + - Triggers the createConnectionError event if an error occurs during the connection process and raises the exception.

+
+ + +
+
+ +
+ + def + get_connection_info(self): + + + +
+ +
117    def get_connection_info(self):
+118        return self._web_socket
+
+ + + + +
+
+ +
+ + def + get_connection(self): + + + +
+ +
120    def get_connection(self):
+121        return self._web_socket["connection"]
+
+ + + + +
+
+ +
+ + async def + close_connection(self): + + + +
+ +
123    async def close_connection(self):
+124        """
+125            Closes the WebSocket connection.
+126
+127            Raises:
+128                Exception: If any error occurs during the process.
+129
+130            Note:
+131                - Sets the `_done` flag to True to signal the termination of the heartbeat mechanism.
+132                - Sets the `_is_ready` flag to False to indicate that the connection is no longer ready.
+133                - Retrieves the WebSocket connection using `get_connection`.
+134                - Closes the WebSocket connection.
+135                - Triggers the closeConnectionError event if an error occurs during the closing process and raises the exception.
+136        """
+137        try:
+138            self._done = True
+139            self._is_ready = False
+140            ws_connection = self.get_connection()
+141            await ws_connection.close()
+142        except Exception as e:
+143            self.trigger(WebSocketEvents.closeConnectionError, e)
+144            raise
+
+ + +

Closes the WebSocket connection.

+ +

Raises: + Exception: If any error occurs during the process.

+ +

Note: + - Sets the _done flag to True to signal the termination of the heartbeat mechanism. + - Sets the _is_ready flag to False to indicate that the connection is no longer ready. + - Retrieves the WebSocket connection using get_connection. + - Closes the WebSocket connection. + - Triggers the closeConnectionError event if an error occurs during the closing process and raises the exception.

+
+ + +
+
+ +
+ + async def + recover_connection(self): + + + +
+ +
146    async def recover_connection(self):
+147        try:
+148            ws_connection_info = self.get_web_socket_token()
+149            recovered_connection_info = await self.open_connection(
+150                ws_connection_info["uri"], ws_connection_info["ws_access_token"]
+151            )
+152            # if recovered_connection_info['recoveryState'] === "Successful", then subscription is restored
+153            # otherwise, need to create a new subscription
+154            # IMPORTANT: WebSocket creation is successful if it doesn't raise any exception
+155            return recovered_connection_info
+156        except Exception as e:
+157            self.trigger(WebSocketEvents.recoverConnectionError, e)
+158            raise
+
+ + + + +
+
+ +
+ + async def + send_message(self, message): + + + +
+ +
160    async def send_message(self, message):
+161        """
+162            Sends a message over the WebSocket connection.
+163
+164            Args:
+165                message (Any): The message to be sent.
+166
+167            Raises:
+168                Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.
+169
+170            Note:
+171                - Checks if the WebSocket connection is ready (`_is_ready` flag).
+172                - If the connection is ready, resets the send attempt counter and sends the message.
+173                - If the connection is not ready, retries after a delay and increments the send attempt counter.
+174                - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.
+175        """
+176        try:
+177            if self._is_ready:
+178                self._send_attempt_counter = 0
+179                requestBodyJson = json.dumps(message)
+180                await self.get_connection().send(requestBodyJson)
+181            else:
+182                await asyncio.sleep(1)
+183                await self.send_message(message)
+184                self._send_attempt_counter += 1
+185                if(self._send_attempt_counter > 10):
+186                    self.trigger(WebSocketEvents.connectionNotReady)
+187                    self._send_attempt_counter = 0
+188                    raise
+189        except Exception as e:
+190            self.trigger(WebSocketEvents.sendMessageError, e)
+191            raise
+
+ + +

Sends a message over the WebSocket connection.

+ +

Args: + message (Any): The message to be sent.

+ +

Raises: + Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.

+ +

Note: + - Checks if the WebSocket connection is ready (_is_ready flag). + - If the connection is ready, resets the send attempt counter and sends the message. + - If the connection is not ready, retries after a delay and increments the send attempt counter. + - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.

+
+ + +
+
+ +
+ + async def + create_subscription(self, events=None): + + + +
+ +
193    async def create_subscription(self, events=None):
+194        """
+195            Creates a subscription to WebSocket events.
+196
+197            Args:
+198                events (list, optional): A list of events to subscribe to. Default is None.
+199
+200            Raises:
+201                Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.
+202
+203            Note:
+204                - If the WebSocket connection is ready (`_is_ready` flag), resets the send attempt counter and creates a WebSocketSubscription instance.
+205                - Registers the subscription with the specified events.
+206                - If the connection is not ready, retries after a delay and increments the send attempt counter.
+207                - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.
+208        """
+209        try:
+210            if self._is_ready:
+211                self._send_attempt_counter = 0
+212                subscription = WebSocketSubscription(self)
+213                await subscription.register(events)
+214            else:
+215                await asyncio.sleep(1)
+216                await self.create_subscription(events)
+217                self._send_attempt_counter += 1
+218                if(self._send_attempt_counter > 10):
+219                    self.trigger(WebSocketEvents.connectionNotReady)
+220                    self._send_attempt_counter = 0
+221                    raise
+222
+223        except Exception as e:
+224            self.trigger(WebSocketEvents.createSubscriptionError, e)
+225            raise
+
+ + +

Creates a subscription to WebSocket events.

+ +

Args: + events (list, optional): A list of events to subscribe to. Default is None.

+ +

Raises: + Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.

+ +

Note: + - If the WebSocket connection is ready (_is_ready flag), resets the send attempt counter and creates a WebSocketSubscription instance. + - Registers the subscription with the specified events. + - If the connection is not ready, retries after a delay and increments the send attempt counter. + - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.

+
+ + +
+
+ +
+ + async def + update_subscription(self, subscription, events=None): + + + +
+ +
227    async def update_subscription(self, subscription, events=None):
+228        """
+229            Updates an existing WebSocket subscription with new events.
+230
+231            Args:
+232                subscription : The WebSocket subscription to update.
+233                events (list, optional): A list of events to update the subscription with. Default is None.
+234
+235            Returns:
+236                WebSocketSubscription: The updated WebSocket subscription.
+237
+238            Raises:
+239                Exception: If any error occurs during the process.
+240
+241            Note:
+242                - Updates the specified WebSocket subscription with the new events provided.
+243                - If the update is successful, returns the updated WebSocket subscription.
+244                - If an error occurs during the update process, triggers the updateSubscriptionError event and raises an exception.
+245        """
+246        try:
+247            await subscription.update(events)
+248            return subscription
+249        except Exception as e:
+250            self.trigger(WebSocketEvents.updateSubscriptionError, e)
+251            raise
+
+ + +

Updates an existing WebSocket subscription with new events.

+ +

Args: + subscription : The WebSocket subscription to update. + events (list, optional): A list of events to update the subscription with. Default is None.

+ +

Returns: + WebSocketSubscription: The updated WebSocket subscription.

+ +

Raises: + Exception: If any error occurs during the process.

+ +

Note: + - Updates the specified WebSocket subscription with the new events provided. + - If the update is successful, returns the updated WebSocket subscription. + - If an error occurs during the update process, triggers the updateSubscriptionError event and raises an exception.

+
+ + +
+
+ +
+ + async def + remove_subscription(self, subscription): + + + +
+ +
253    async def remove_subscription(self, subscription):
+254        """
+255            Removes an existing WebSocket subscription.
+256
+257            Args:
+258                subscription : The WebSocket subscription to remove.
+259
+260            Raises:
+261                Exception: If any error occurs during the removal process.
+262
+263            Note:
+264                - Removes the specified WebSocket subscription.
+265                - If the removal is successful, the subscription is effectively unsubscribed from the events it was subscribed to.
+266                - If an error occurs during the removal process, triggers the removeSubscriptionError event and raises an exception.
+267        """
+268        try:
+269            await subscription.remove()
+270        except Exception as e:
+271            self.trigger(WebSocketEvents.removeSubscriptionError, e)
+272            raise
+
+ + +

Removes an existing WebSocket subscription.

+ +

Args: + subscription : The WebSocket subscription to remove.

+ +

Raises: + Exception: If any error occurs during the removal process.

+ +

Note: + - Removes the specified WebSocket subscription. + - If the removal is successful, the subscription is effectively unsubscribed from the events it was subscribed to. + - If an error occurs during the removal process, triggers the removeSubscriptionError event and raises an exception.

+
+ + +
+
+
Inherited Members
+
+
observable.core.Observable
+
events
+
on
+
off
+
once
+
trigger
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/websocket/web_socket_client.py b/ringcentral/websocket/web_socket_client.py deleted file mode 100644 index 637398f..0000000 --- a/ringcentral/websocket/web_socket_client.py +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 -from observable import Observable -import websockets -from .web_socket_subscription import WebSocketSubscription -from .events import WebSocketEvents -import json -import asyncio -import uuid - -class WebSocketClient(Observable): - def __init__(self, platform): - Observable.__init__(self) - self._platform = platform - self._web_socket = None - self._done = False - self._is_ready = False - self._send_attempt_counter = 0 - - async def create_new_connection(self): - """ - Creates a new WebSocket connection. - - Returns: - Any: Response object containing the result of the connection creation. - - Raises: - Exception: If any error occurs during the process. - - Note: - - Retrieves the WebSocket token using `get_web_socket_token`. - - Attempts to open a WebSocket connection using the retrieved token's URI and access token. - - Triggers the createConnectionError event if an error occurs and raises the exception. - """ - try: - web_socket_token = self.get_web_socket_token() - open_connection_response = await self.open_connection( - web_socket_token["uri"], web_socket_token["ws_access_token"] - ) - return open_connection_response - except Exception as e: - self.trigger(WebSocketEvents.createConnectionError, e) - raise - - def get_web_socket_token(self): - """ - Retrieves a WebSocket token. - - Returns: - dict: WebSocket token containing URI and access token. - - Raises: - Exception: If any error occurs during the process. - - Note: - - Sends a POST request to the '/restapi/oauth/wstoken' endpoint to obtain the WebSocket token. - - Returns the WebSocket token as a dictionary containing the URI and access token. - - Triggers the getTokenError event if an error occurs and raises the exception. - """ - try: - response = self._platform.post("/restapi/oauth/wstoken", body={}) - return response.json_dict() - except Exception as e: - self.trigger(WebSocketEvents.getTokenError, e) - raise - - async def open_connection(self, ws_uri, ws_access_token): - """ - Opens a WebSocket connection. - - Args: - ws_uri (str): The WebSocket URI. - ws_access_token (str): The access token for WebSocket authentication. - - Raises: - Exception: If any error occurs during the process. - - Note: - - Attempts to establish a WebSocket connection to the provided URI with the given access token. - - Upon successful connection, sets up a heartbeat mechanism to maintain the connection. - - Triggers the connectionCreated event upon successful connection establishment. - - Listens for incoming messages and triggers the receiveMessage event for each received message. - - Triggers the createConnectionError event if an error occurs during the connection process and raises the exception. - """ - try: - websocket = await websockets.connect( - f"{ws_uri}?access_token={ws_access_token}" - ) - connectionMessage = await websocket.recv() - connection_info = {} - connection_info["connection"] = websocket - connection_info["connection_details"] = connectionMessage - self._web_socket = connection_info - self._is_ready = True - self.trigger(WebSocketEvents.connectionCreated, self) - - # heartbeat every 10 minutes - async def timer_function(): - while True: - if self._done: - timer.cancel() - break - await asyncio.sleep(600) - await self.send_message([{"type": "Heartbeat", "messageId": str(uuid.uuid4())}]) - timer = asyncio.create_task(timer_function()) - - await asyncio.sleep(0) - while True: - message = await websocket.recv() - self.trigger(WebSocketEvents.receiveMessage, message) - await asyncio.sleep(0) - except Exception as e: - self.trigger(WebSocketEvents.createConnectionError, e) - raise - - def get_connection_info(self): - return self._web_socket - - def get_connection(self): - return self._web_socket["connection"] - - async def close_connection(self): - """ - Closes the WebSocket connection. - - Raises: - Exception: If any error occurs during the process. - - Note: - - Sets the `_done` flag to True to signal the termination of the heartbeat mechanism. - - Sets the `_is_ready` flag to False to indicate that the connection is no longer ready. - - Retrieves the WebSocket connection using `get_connection`. - - Closes the WebSocket connection. - - Triggers the closeConnectionError event if an error occurs during the closing process and raises the exception. - """ - try: - self._done = True - self._is_ready = False - ws_connection = self.get_connection() - await ws_connection.close() - except Exception as e: - self.trigger(WebSocketEvents.closeConnectionError, e) - raise - - async def recover_connection(self): - try: - ws_connection_info = self.get_web_socket_token() - recovered_connection_info = await self.open_connection( - ws_connection_info["uri"], ws_connection_info["ws_access_token"] - ) - # if recovered_connection_info['recoveryState'] === "Successful", then subscription is restored - # otherwise, need to create a new subscription - # IMPORTANT: WebSocket creation is successful if it doesn't raise any exception - return recovered_connection_info - except Exception as e: - self.trigger(WebSocketEvents.recoverConnectionError, e) - raise - - async def send_message(self, message): - """ - Sends a message over the WebSocket connection. - - Args: - message (Any): The message to be sent. - - Raises: - Exception: If any error occurs during the process or if the connection is not ready after multiple attempts. - - Note: - - Checks if the WebSocket connection is ready (`_is_ready` flag). - - If the connection is ready, resets the send attempt counter and sends the message. - - If the connection is not ready, retries after a delay and increments the send attempt counter. - - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception. - """ - try: - if self._is_ready: - self._send_attempt_counter = 0 - requestBodyJson = json.dumps(message) - await self.get_connection().send(requestBodyJson) - else: - await asyncio.sleep(1) - await self.send_message(message) - self._send_attempt_counter += 1 - if(self._send_attempt_counter > 10): - self.trigger(WebSocketEvents.connectionNotReady) - self._send_attempt_counter = 0 - raise - except Exception as e: - self.trigger(WebSocketEvents.sendMessageError, e) - raise - - async def create_subscription(self, events=None): - """ - Creates a subscription to WebSocket events. - - Args: - events (list, optional): A list of events to subscribe to. Default is None. - - Raises: - Exception: If any error occurs during the process or if the connection is not ready after multiple attempts. - - Note: - - If the WebSocket connection is ready (`_is_ready` flag), resets the send attempt counter and creates a WebSocketSubscription instance. - - Registers the subscription with the specified events. - - If the connection is not ready, retries after a delay and increments the send attempt counter. - - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception. - """ - try: - if self._is_ready: - self._send_attempt_counter = 0 - subscription = WebSocketSubscription(self) - await subscription.register(events) - else: - await asyncio.sleep(1) - await self.create_subscription(events) - self._send_attempt_counter += 1 - if(self._send_attempt_counter > 10): - self.trigger(WebSocketEvents.connectionNotReady) - self._send_attempt_counter = 0 - raise - - except Exception as e: - self.trigger(WebSocketEvents.createSubscriptionError, e) - raise - - async def update_subscription(self, subscription, events=None): - """ - Updates an existing WebSocket subscription with new events. - - Args: - subscription : The WebSocket subscription to update. - events (list, optional): A list of events to update the subscription with. Default is None. - - Returns: - WebSocketSubscription: The updated WebSocket subscription. - - Raises: - Exception: If any error occurs during the process. - - Note: - - Updates the specified WebSocket subscription with the new events provided. - - If the update is successful, returns the updated WebSocket subscription. - - If an error occurs during the update process, triggers the updateSubscriptionError event and raises an exception. - """ - try: - await subscription.update(events) - return subscription - except Exception as e: - self.trigger(WebSocketEvents.updateSubscriptionError, e) - raise - - async def remove_subscription(self, subscription): - """ - Removes an existing WebSocket subscription. - - Args: - subscription : The WebSocket subscription to remove. - - Raises: - Exception: If any error occurs during the removal process. - - Note: - - Removes the specified WebSocket subscription. - - If the removal is successful, the subscription is effectively unsubscribed from the events it was subscribed to. - - If an error occurs during the removal process, triggers the removeSubscriptionError event and raises an exception. - """ - try: - await subscription.remove() - except Exception as e: - self.trigger(WebSocketEvents.removeSubscriptionError, e) - raise - - -if __name__ == "__main__": - pass diff --git a/ringcentral/websocket/web_socket_subscription.html b/ringcentral/websocket/web_socket_subscription.html new file mode 100644 index 0000000..2933e6c --- /dev/null +++ b/ringcentral/websocket/web_socket_subscription.html @@ -0,0 +1,901 @@ + + + + + + + ringcentral.websocket.web_socket_subscription API documentation + + + + + + + + + +
+
+

+ringcentral.websocket.web_socket_subscription

+ + + + + + +
  1#!/usr/bin/env python
+  2# encoding: utf-8
+  3import uuid
+  4import json
+  5from .events import WebSocketEvents
+  6from observable import Observable
+  7
+  8# _subscription format example: https://git.ringcentral.com/platform/wsg/-/blob/master/RingCentral_WebSocket_API.md#step-4-subscribing-to-rc-events
+  9
+ 10
+ 11class WebSocketSubscription(Observable):
+ 12    def __init__(self, web_socket_client):
+ 13        Observable.__init__(self)
+ 14        self._web_socket_client = web_socket_client
+ 15        self._event_filters = []
+ 16        self._subscription = None
+ 17
+ 18    def on_message(self, message):
+ 19        message_json = json.loads(message)
+ 20        if(message_json[0]['type'] == 'ClientRequest' and 'WSG-SubscriptionId' in message_json[0]['headers']):
+ 21            self.set_subscription(message_json)
+ 22            self._web_socket_client.trigger(WebSocketEvents.subscriptionCreated, self)
+ 23        else: 
+ 24            if(message_json[0]['type'] == 'ServerNotification'):
+ 25                self._web_socket_client.trigger(WebSocketEvents.receiveSubscriptionNotification, message_json)
+ 26
+ 27    async def register(self, events=None):
+ 28        if not self._subscription:
+ 29            await self.subscribe(events=events)
+ 30        else:
+ 31            await self.update(events=events)
+ 32
+ 33    def add_events(self, events):
+ 34        self._event_filters += events
+ 35        pass
+ 36
+ 37    def set_events(self, events):
+ 38        self._event_filters = events
+ 39
+ 40    async def subscribe(self, events=None):
+ 41        if events:
+ 42            self.set_events(events)
+ 43
+ 44        if not self._event_filters or len(self._event_filters) == 0:
+ 45            raise Exception("Events are undefined")
+ 46
+ 47        try:
+ 48            messageId = str(uuid.uuid4())
+ 49            requestBodyJson = [
+ 50                {
+ 51                    "type": "ClientRequest",
+ 52                    "messageId": messageId,
+ 53                    "method": "POST",
+ 54                    "path": "/restapi/v1.0/subscription/",
+ 55                },
+ 56                {
+ 57                    "eventFilters": self._event_filters,
+ 58                    "deliveryMode": {"transportType": "WebSocket"},
+ 59                },
+ 60            ]
+ 61            await self._web_socket_client.send_message(requestBodyJson)
+ 62            self._web_socket_client.on(WebSocketEvents.receiveMessage, self.on_message)
+ 63
+ 64        except Exception as e:
+ 65            self.reset()
+ 66            print(e)
+ 67            raise
+ 68
+ 69    async def update(self, events=None):
+ 70        if events:
+ 71            self.set_events(events)
+ 72
+ 73        if not self._event_filters or len(self._event_filters) == 0:
+ 74            raise Exception("Events are undefined")
+ 75
+ 76        try:
+ 77            subscriptionId = self._subscription[1]["id"]
+ 78            messageId = str(uuid.uuid4())
+ 79            requestBodyJson = [
+ 80                {
+ 81                    "type": "ClientRequest",
+ 82                    "messageId": messageId,
+ 83                    "method": "PUT",
+ 84                    "path": f"/restapi/v1.0/subscription/{subscriptionId}",
+ 85                },
+ 86                {
+ 87                    "eventFilters": self._event_filters,
+ 88                    "deliveryMode": {"transportType": "WebSocket"},
+ 89                },
+ 90            ]
+ 91            await self._web_socket_client.send_message(requestBodyJson)
+ 92            self._web_socket_client.trigger(WebSocketEvents.subscriptionUpdated, self)
+ 93
+ 94        except Exception as e:
+ 95            self.reset()
+ 96            print(e)
+ 97            raise
+ 98
+ 99    async def remove(self):
+100        subscriptionId = self._subscription[1]["id"]
+101        if not subscriptionId:
+102            raise Exception("Missing subscriptionId")
+103
+104        try:
+105            messageId = str(uuid.uuid4())
+106            requestBodyJson = [
+107                {
+108                    "type": "ClientRequest",
+109                    "messageId": messageId,
+110                    "method": "DELETE",
+111                    "path": f"/restapi/v1.0/subscription/{subscriptionId}",
+112                }
+113            ]
+114
+115            await self._web_socket_client.send_message(requestBodyJson)
+116            self._web_socket_client.off(WebSocketEvents.receiveMessage, self.on_message)
+117            self._web_socket_client.trigger(WebSocketEvents.subscriptionRemoved)
+118
+119            self.reset()
+120
+121        except Exception as e:
+122            self.reset()
+123            print(e)
+124            raise
+125
+126    def set_subscription(self, data):
+127        self._subscription = data
+128
+129    def get_subscription_info(self):
+130        return self._subscription
+131
+132    def reset(self):
+133        self._subscription = None
+134
+135    def destroy(self):
+136        self.reset()
+137        self.off()
+138
+139
+140if __name__ == "__main__":
+141    pass
+
+ + +
+
+ +
+ + class + WebSocketSubscription(observable.core.Observable): + + + +
+ +
 12class WebSocketSubscription(Observable):
+ 13    def __init__(self, web_socket_client):
+ 14        Observable.__init__(self)
+ 15        self._web_socket_client = web_socket_client
+ 16        self._event_filters = []
+ 17        self._subscription = None
+ 18
+ 19    def on_message(self, message):
+ 20        message_json = json.loads(message)
+ 21        if(message_json[0]['type'] == 'ClientRequest' and 'WSG-SubscriptionId' in message_json[0]['headers']):
+ 22            self.set_subscription(message_json)
+ 23            self._web_socket_client.trigger(WebSocketEvents.subscriptionCreated, self)
+ 24        else: 
+ 25            if(message_json[0]['type'] == 'ServerNotification'):
+ 26                self._web_socket_client.trigger(WebSocketEvents.receiveSubscriptionNotification, message_json)
+ 27
+ 28    async def register(self, events=None):
+ 29        if not self._subscription:
+ 30            await self.subscribe(events=events)
+ 31        else:
+ 32            await self.update(events=events)
+ 33
+ 34    def add_events(self, events):
+ 35        self._event_filters += events
+ 36        pass
+ 37
+ 38    def set_events(self, events):
+ 39        self._event_filters = events
+ 40
+ 41    async def subscribe(self, events=None):
+ 42        if events:
+ 43            self.set_events(events)
+ 44
+ 45        if not self._event_filters or len(self._event_filters) == 0:
+ 46            raise Exception("Events are undefined")
+ 47
+ 48        try:
+ 49            messageId = str(uuid.uuid4())
+ 50            requestBodyJson = [
+ 51                {
+ 52                    "type": "ClientRequest",
+ 53                    "messageId": messageId,
+ 54                    "method": "POST",
+ 55                    "path": "/restapi/v1.0/subscription/",
+ 56                },
+ 57                {
+ 58                    "eventFilters": self._event_filters,
+ 59                    "deliveryMode": {"transportType": "WebSocket"},
+ 60                },
+ 61            ]
+ 62            await self._web_socket_client.send_message(requestBodyJson)
+ 63            self._web_socket_client.on(WebSocketEvents.receiveMessage, self.on_message)
+ 64
+ 65        except Exception as e:
+ 66            self.reset()
+ 67            print(e)
+ 68            raise
+ 69
+ 70    async def update(self, events=None):
+ 71        if events:
+ 72            self.set_events(events)
+ 73
+ 74        if not self._event_filters or len(self._event_filters) == 0:
+ 75            raise Exception("Events are undefined")
+ 76
+ 77        try:
+ 78            subscriptionId = self._subscription[1]["id"]
+ 79            messageId = str(uuid.uuid4())
+ 80            requestBodyJson = [
+ 81                {
+ 82                    "type": "ClientRequest",
+ 83                    "messageId": messageId,
+ 84                    "method": "PUT",
+ 85                    "path": f"/restapi/v1.0/subscription/{subscriptionId}",
+ 86                },
+ 87                {
+ 88                    "eventFilters": self._event_filters,
+ 89                    "deliveryMode": {"transportType": "WebSocket"},
+ 90                },
+ 91            ]
+ 92            await self._web_socket_client.send_message(requestBodyJson)
+ 93            self._web_socket_client.trigger(WebSocketEvents.subscriptionUpdated, self)
+ 94
+ 95        except Exception as e:
+ 96            self.reset()
+ 97            print(e)
+ 98            raise
+ 99
+100    async def remove(self):
+101        subscriptionId = self._subscription[1]["id"]
+102        if not subscriptionId:
+103            raise Exception("Missing subscriptionId")
+104
+105        try:
+106            messageId = str(uuid.uuid4())
+107            requestBodyJson = [
+108                {
+109                    "type": "ClientRequest",
+110                    "messageId": messageId,
+111                    "method": "DELETE",
+112                    "path": f"/restapi/v1.0/subscription/{subscriptionId}",
+113                }
+114            ]
+115
+116            await self._web_socket_client.send_message(requestBodyJson)
+117            self._web_socket_client.off(WebSocketEvents.receiveMessage, self.on_message)
+118            self._web_socket_client.trigger(WebSocketEvents.subscriptionRemoved)
+119
+120            self.reset()
+121
+122        except Exception as e:
+123            self.reset()
+124            print(e)
+125            raise
+126
+127    def set_subscription(self, data):
+128        self._subscription = data
+129
+130    def get_subscription_info(self):
+131        return self._subscription
+132
+133    def reset(self):
+134        self._subscription = None
+135
+136    def destroy(self):
+137        self.reset()
+138        self.off()
+
+ + +

Event system for python

+
+ + +
+ +
+ + WebSocketSubscription(web_socket_client) + + + +
+ +
13    def __init__(self, web_socket_client):
+14        Observable.__init__(self)
+15        self._web_socket_client = web_socket_client
+16        self._event_filters = []
+17        self._subscription = None
+
+ + + + +
+
+ +
+ + def + on_message(self, message): + + + +
+ +
19    def on_message(self, message):
+20        message_json = json.loads(message)
+21        if(message_json[0]['type'] == 'ClientRequest' and 'WSG-SubscriptionId' in message_json[0]['headers']):
+22            self.set_subscription(message_json)
+23            self._web_socket_client.trigger(WebSocketEvents.subscriptionCreated, self)
+24        else: 
+25            if(message_json[0]['type'] == 'ServerNotification'):
+26                self._web_socket_client.trigger(WebSocketEvents.receiveSubscriptionNotification, message_json)
+
+ + + + +
+
+ +
+ + async def + register(self, events=None): + + + +
+ +
28    async def register(self, events=None):
+29        if not self._subscription:
+30            await self.subscribe(events=events)
+31        else:
+32            await self.update(events=events)
+
+ + + + +
+
+ +
+ + def + add_events(self, events): + + + +
+ +
34    def add_events(self, events):
+35        self._event_filters += events
+36        pass
+
+ + + + +
+
+ +
+ + def + set_events(self, events): + + + +
+ +
38    def set_events(self, events):
+39        self._event_filters = events
+
+ + + + +
+
+ +
+ + async def + subscribe(self, events=None): + + + +
+ +
41    async def subscribe(self, events=None):
+42        if events:
+43            self.set_events(events)
+44
+45        if not self._event_filters or len(self._event_filters) == 0:
+46            raise Exception("Events are undefined")
+47
+48        try:
+49            messageId = str(uuid.uuid4())
+50            requestBodyJson = [
+51                {
+52                    "type": "ClientRequest",
+53                    "messageId": messageId,
+54                    "method": "POST",
+55                    "path": "/restapi/v1.0/subscription/",
+56                },
+57                {
+58                    "eventFilters": self._event_filters,
+59                    "deliveryMode": {"transportType": "WebSocket"},
+60                },
+61            ]
+62            await self._web_socket_client.send_message(requestBodyJson)
+63            self._web_socket_client.on(WebSocketEvents.receiveMessage, self.on_message)
+64
+65        except Exception as e:
+66            self.reset()
+67            print(e)
+68            raise
+
+ + + + +
+
+ +
+ + async def + update(self, events=None): + + + +
+ +
70    async def update(self, events=None):
+71        if events:
+72            self.set_events(events)
+73
+74        if not self._event_filters or len(self._event_filters) == 0:
+75            raise Exception("Events are undefined")
+76
+77        try:
+78            subscriptionId = self._subscription[1]["id"]
+79            messageId = str(uuid.uuid4())
+80            requestBodyJson = [
+81                {
+82                    "type": "ClientRequest",
+83                    "messageId": messageId,
+84                    "method": "PUT",
+85                    "path": f"/restapi/v1.0/subscription/{subscriptionId}",
+86                },
+87                {
+88                    "eventFilters": self._event_filters,
+89                    "deliveryMode": {"transportType": "WebSocket"},
+90                },
+91            ]
+92            await self._web_socket_client.send_message(requestBodyJson)
+93            self._web_socket_client.trigger(WebSocketEvents.subscriptionUpdated, self)
+94
+95        except Exception as e:
+96            self.reset()
+97            print(e)
+98            raise
+
+ + + + +
+
+ +
+ + async def + remove(self): + + + +
+ +
100    async def remove(self):
+101        subscriptionId = self._subscription[1]["id"]
+102        if not subscriptionId:
+103            raise Exception("Missing subscriptionId")
+104
+105        try:
+106            messageId = str(uuid.uuid4())
+107            requestBodyJson = [
+108                {
+109                    "type": "ClientRequest",
+110                    "messageId": messageId,
+111                    "method": "DELETE",
+112                    "path": f"/restapi/v1.0/subscription/{subscriptionId}",
+113                }
+114            ]
+115
+116            await self._web_socket_client.send_message(requestBodyJson)
+117            self._web_socket_client.off(WebSocketEvents.receiveMessage, self.on_message)
+118            self._web_socket_client.trigger(WebSocketEvents.subscriptionRemoved)
+119
+120            self.reset()
+121
+122        except Exception as e:
+123            self.reset()
+124            print(e)
+125            raise
+
+ + + + +
+
+ +
+ + def + set_subscription(self, data): + + + +
+ +
127    def set_subscription(self, data):
+128        self._subscription = data
+
+ + + + +
+
+ +
+ + def + get_subscription_info(self): + + + +
+ +
130    def get_subscription_info(self):
+131        return self._subscription
+
+ + + + +
+
+ +
+ + def + reset(self): + + + +
+ +
133    def reset(self):
+134        self._subscription = None
+
+ + + + +
+
+ +
+ + def + destroy(self): + + + +
+ +
136    def destroy(self):
+137        self.reset()
+138        self.off()
+
+ + + + +
+
+
Inherited Members
+
+
observable.core.Observable
+
events
+
on
+
off
+
once
+
trigger
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/ringcentral/websocket/web_socket_subscription.py b/ringcentral/websocket/web_socket_subscription.py deleted file mode 100644 index df9a0ad..0000000 --- a/ringcentral/websocket/web_socket_subscription.py +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 -import uuid -import json -from .events import WebSocketEvents -from observable import Observable - -# _subscription format example: https://git.ringcentral.com/platform/wsg/-/blob/master/RingCentral_WebSocket_API.md#step-4-subscribing-to-rc-events - - -class WebSocketSubscription(Observable): - def __init__(self, web_socket_client): - Observable.__init__(self) - self._web_socket_client = web_socket_client - self._event_filters = [] - self._subscription = None - - def on_message(self, message): - message_json = json.loads(message) - if(message_json[0]['type'] == 'ClientRequest' and 'WSG-SubscriptionId' in message_json[0]['headers']): - self.set_subscription(message_json) - self._web_socket_client.trigger(WebSocketEvents.subscriptionCreated, self) - else: - if(message_json[0]['type'] == 'ServerNotification'): - self._web_socket_client.trigger(WebSocketEvents.receiveSubscriptionNotification, message_json) - - async def register(self, events=None): - if not self._subscription: - await self.subscribe(events=events) - else: - await self.update(events=events) - - def add_events(self, events): - self._event_filters += events - pass - - def set_events(self, events): - self._event_filters = events - - async def subscribe(self, events=None): - if events: - self.set_events(events) - - if not self._event_filters or len(self._event_filters) == 0: - raise Exception("Events are undefined") - - try: - messageId = str(uuid.uuid4()) - requestBodyJson = [ - { - "type": "ClientRequest", - "messageId": messageId, - "method": "POST", - "path": "/restapi/v1.0/subscription/", - }, - { - "eventFilters": self._event_filters, - "deliveryMode": {"transportType": "WebSocket"}, - }, - ] - await self._web_socket_client.send_message(requestBodyJson) - self._web_socket_client.on(WebSocketEvents.receiveMessage, self.on_message) - - except Exception as e: - self.reset() - print(e) - raise - - async def update(self, events=None): - if events: - self.set_events(events) - - if not self._event_filters or len(self._event_filters) == 0: - raise Exception("Events are undefined") - - try: - subscriptionId = self._subscription[1]["id"] - messageId = str(uuid.uuid4()) - requestBodyJson = [ - { - "type": "ClientRequest", - "messageId": messageId, - "method": "PUT", - "path": f"/restapi/v1.0/subscription/{subscriptionId}", - }, - { - "eventFilters": self._event_filters, - "deliveryMode": {"transportType": "WebSocket"}, - }, - ] - await self._web_socket_client.send_message(requestBodyJson) - self._web_socket_client.trigger(WebSocketEvents.subscriptionUpdated, self) - - except Exception as e: - self.reset() - print(e) - raise - - async def remove(self): - subscriptionId = self._subscription[1]["id"] - if not subscriptionId: - raise Exception("Missing subscriptionId") - - try: - messageId = str(uuid.uuid4()) - requestBodyJson = [ - { - "type": "ClientRequest", - "messageId": messageId, - "method": "DELETE", - "path": f"/restapi/v1.0/subscription/{subscriptionId}", - } - ] - - await self._web_socket_client.send_message(requestBodyJson) - self._web_socket_client.off(WebSocketEvents.receiveMessage, self.on_message) - self._web_socket_client.trigger(WebSocketEvents.subscriptionRemoved) - - self.reset() - - except Exception as e: - self.reset() - print(e) - raise - - def set_subscription(self, data): - self._subscription = data - - def get_subscription_info(self): - return self._subscription - - def reset(self): - self._subscription = None - - def destroy(self): - self.reset() - self.off() - - -if __name__ == "__main__": - pass diff --git a/search.js b/search.js new file mode 100644 index 0000000..289c00e --- /dev/null +++ b/search.js @@ -0,0 +1,46 @@ +window.pdocSearch = (function(){ +/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o

\n"}, "ringcentral.core": {"fullname": "ringcentral.core", "modulename": "ringcentral.core", "kind": "module", "doc": "

\n"}, "ringcentral.core.is_third": {"fullname": "ringcentral.core.is_third", "modulename": "ringcentral.core", "qualname": "is_third", "kind": "function", "doc": "

\n", "signature": "():", "funcdef": "def"}, "ringcentral.core.urlencode": {"fullname": "ringcentral.core.urlencode", "modulename": "ringcentral.core", "qualname": "urlencode", "kind": "function", "doc": "

Encodes the given dictionary s into a URL-encoded string.

\n\n

Parameters:\n s (dict): A dictionary containing the key-value pairs to be encoded.

\n\n

Returns:\n str: A URL-encoded string representing the input dictionary.

\n\n

Raises:\n Exception: If neither urllib.urlencode nor urllib.parse.urlencode is available.

\n\n

Note:\n This function checks for the presence of urllib.urlencode and urllib.parse.urlencode\n to ensure compatibility across Python 2 and Python 3.

\n", "signature": "(s):", "funcdef": "def"}, "ringcentral.core.iterator": {"fullname": "ringcentral.core.iterator", "modulename": "ringcentral.core", "qualname": "iterator", "kind": "function", "doc": "

Returns an iterator over key-value pairs of thing.

\n\n

If thing has an iteritems method, it is used; otherwise, thing.items() is iterated over.

\n\n

Parameters:\n thing: An iterable object.

\n\n

Returns:\n iterator: An iterator over the key-value pairs of thing.

\n", "signature": "(thing):", "funcdef": "def"}, "ringcentral.core.base64encode": {"fullname": "ringcentral.core.base64encode", "modulename": "ringcentral.core", "qualname": "base64encode", "kind": "function", "doc": "

Encodes the input string s into base64 format.

\n\n

Parameters:\n s (str): The string to be encoded.

\n\n

Returns:\n str: The base64 encoded string.

\n", "signature": "(s):", "funcdef": "def"}, "ringcentral.core.tostr": {"fullname": "ringcentral.core.tostr", "modulename": "ringcentral.core", "qualname": "tostr", "kind": "function", "doc": "

\n", "signature": "(s):", "funcdef": "def"}, "ringcentral.core.clean_decrypted": {"fullname": "ringcentral.core.clean_decrypted", "modulename": "ringcentral.core", "qualname": "clean_decrypted", "kind": "function", "doc": "

Cleans the decrypted string s by removing specific control characters.

\n\n

Parameters:\n s (str): The decrypted string to be cleaned.

\n\n

Returns:\n str: The cleaned decrypted string.

\n", "signature": "(s):", "funcdef": "def"}, "ringcentral.http": {"fullname": "ringcentral.http", "modulename": "ringcentral.http", "kind": "module", "doc": "

\n"}, "ringcentral.http.api_exception": {"fullname": "ringcentral.http.api_exception", "modulename": "ringcentral.http.api_exception", "kind": "module", "doc": "

\n"}, "ringcentral.http.api_exception.ApiException": {"fullname": "ringcentral.http.api_exception.ApiException", "modulename": "ringcentral.http.api_exception", "qualname": "ApiException", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "builtins.Exception"}, "ringcentral.http.api_exception.ApiException.__init__": {"fullname": "ringcentral.http.api_exception.ApiException.__init__", "modulename": "ringcentral.http.api_exception", "qualname": "ApiException.__init__", "kind": "function", "doc": "

\n", "signature": "(api_response, previous=None)"}, "ringcentral.http.api_exception.ApiException.api_response": {"fullname": "ringcentral.http.api_exception.ApiException.api_response", "modulename": "ringcentral.http.api_exception", "qualname": "ApiException.api_response", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_exception_test": {"fullname": "ringcentral.http.api_exception_test", "modulename": "ringcentral.http.api_exception_test", "kind": "module", "doc": "

\n"}, "ringcentral.http.api_exception_test.json_headers": {"fullname": "ringcentral.http.api_exception_test.json_headers", "modulename": "ringcentral.http.api_exception_test", "qualname": "json_headers", "kind": "variable", "doc": "

\n", "default_value": "{'Content-Type': 'application/json'}"}, "ringcentral.http.api_exception_test.TestApiException": {"fullname": "ringcentral.http.api_exception_test.TestApiException", "modulename": "ringcentral.http.api_exception_test", "qualname": "TestApiException", "kind": "class", "doc": "

A class whose instances are single test cases.

\n\n

By default, the test code itself should be placed in a method named\n'runTest'.

\n\n

If the fixture may be used for many test cases, create as\nmany test methods as are needed. When instantiating such a TestCase\nsubclass, specify in the constructor arguments the name of the test method\nthat the instance is to execute.

\n\n

Test authors should subclass TestCase for their own tests. Construction\nand deconstruction of the test's environment ('fixture') can be\nimplemented by overriding the 'setUp' and 'tearDown' methods respectively.

\n\n

If it is necessary to override the __init__ method, the base class\n__init__ method must always be called. It is important that subclasses\nshould not change the signature of their __init__ method, since instances\nof the classes are instantiated automatically by parts of the framework\nin order to be run.

\n\n

When subclassing TestCase, you can set these attributes:

\n\n
    \n
  • failureException: determines which exception will be raised when\nthe instance's assertion methods fail; test methods raising this\nexception will be deemed to have 'failed' rather than 'errored'.
  • \n
  • longMessage: determines whether long messages (including repr of\nobjects used in assert methods) will be printed on failure in addition\nto any explicit message passed.
  • \n
  • maxDiff: sets the maximum length of a diff in failure messages\nby assert methods using difflib. It is looked up as an instance\nattribute so can be configured by individual tests if required.
  • \n
\n", "bases": "ringcentral.test.testcase.TestCase"}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"fullname": "ringcentral.http.api_exception_test.TestApiException.test_simple", "modulename": "ringcentral.http.api_exception_test", "qualname": "TestApiException.test_simple", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response": {"fullname": "ringcentral.http.api_response", "modulename": "ringcentral.http.api_response", "kind": "module", "doc": "

\n"}, "ringcentral.http.api_response.get_prepared_request_details": {"fullname": "ringcentral.http.api_response.get_prepared_request_details", "modulename": "ringcentral.http.api_response", "qualname": "get_prepared_request_details", "kind": "function", "doc": "

\n", "signature": "(request):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse": {"fullname": "ringcentral.http.api_response.ApiResponse", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse", "kind": "class", "doc": "

\n"}, "ringcentral.http.api_response.ApiResponse.__init__": {"fullname": "ringcentral.http.api_response.ApiResponse.__init__", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.__init__", "kind": "function", "doc": "

\n", "signature": "(request=None, response=None)"}, "ringcentral.http.api_response.ApiResponse.ok": {"fullname": "ringcentral.http.api_response.ApiResponse.ok", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.ok", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.raw": {"fullname": "ringcentral.http.api_response.ApiResponse.raw", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.raw", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.body": {"fullname": "ringcentral.http.api_response.ApiResponse.body", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.body", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.text": {"fullname": "ringcentral.http.api_response.ApiResponse.text", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.text", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.json_dict": {"fullname": "ringcentral.http.api_response.ApiResponse.json_dict", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.json_dict", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.json": {"fullname": "ringcentral.http.api_response.ApiResponse.json", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.json", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.multipart": {"fullname": "ringcentral.http.api_response.ApiResponse.multipart", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.multipart", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.error": {"fullname": "ringcentral.http.api_response.ApiResponse.error", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.error", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.request": {"fullname": "ringcentral.http.api_response.ApiResponse.request", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.request", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.ApiResponse.response": {"fullname": "ringcentral.http.api_response.ApiResponse.response", "modulename": "ringcentral.http.api_response", "qualname": "ApiResponse.response", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response.create_response": {"fullname": "ringcentral.http.api_response.create_response", "modulename": "ringcentral.http.api_response", "qualname": "create_response", "kind": "function", "doc": "

\n", "signature": "(payload, status):", "funcdef": "def"}, "ringcentral.http.api_response_test": {"fullname": "ringcentral.http.api_response_test", "modulename": "ringcentral.http.api_response_test", "kind": "module", "doc": "

\n"}, "ringcentral.http.api_response_test.multipart_headers": {"fullname": "ringcentral.http.api_response_test.multipart_headers", "modulename": "ringcentral.http.api_response_test", "qualname": "multipart_headers", "kind": "variable", "doc": "

\n", "default_value": "{'Content-Type': 'multipart/mixed; boundary=Boundary_1245_945802293_1394135045248'}"}, "ringcentral.http.api_response_test.TestApiResponse": {"fullname": "ringcentral.http.api_response_test.TestApiResponse", "modulename": "ringcentral.http.api_response_test", "qualname": "TestApiResponse", "kind": "class", "doc": "

A class whose instances are single test cases.

\n\n

By default, the test code itself should be placed in a method named\n'runTest'.

\n\n

If the fixture may be used for many test cases, create as\nmany test methods as are needed. When instantiating such a TestCase\nsubclass, specify in the constructor arguments the name of the test method\nthat the instance is to execute.

\n\n

Test authors should subclass TestCase for their own tests. Construction\nand deconstruction of the test's environment ('fixture') can be\nimplemented by overriding the 'setUp' and 'tearDown' methods respectively.

\n\n

If it is necessary to override the __init__ method, the base class\n__init__ method must always be called. It is important that subclasses\nshould not change the signature of their __init__ method, since instances\nof the classes are instantiated automatically by parts of the framework\nin order to be run.

\n\n

When subclassing TestCase, you can set these attributes:

\n\n
    \n
  • failureException: determines which exception will be raised when\nthe instance's assertion methods fail; test methods raising this\nexception will be deemed to have 'failed' rather than 'errored'.
  • \n
  • longMessage: determines whether long messages (including repr of\nobjects used in assert methods) will be printed on failure in addition\nto any explicit message passed.
  • \n
  • maxDiff: sets the maximum length of a diff in failure messages\nby assert methods using difflib. It is looked up as an instance\nattribute so can be configured by individual tests if required.
  • \n
\n", "bases": "ringcentral.test.testcase.TestCase"}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"fullname": "ringcentral.http.api_response_test.TestApiResponse.test_multipart", "modulename": "ringcentral.http.api_response_test", "qualname": "TestApiResponse.test_multipart", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"fullname": "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error", "modulename": "ringcentral.http.api_response_test", "qualname": "TestApiResponse.test_multipart_with_error", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"fullname": "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response", "modulename": "ringcentral.http.api_response_test", "qualname": "TestApiResponse.test_multipart_bad_response", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.api_response_test.create_response": {"fullname": "ringcentral.http.api_response_test.create_response", "modulename": "ringcentral.http.api_response_test", "qualname": "create_response", "kind": "function", "doc": "

\n", "signature": "(body, status, headers=None):", "funcdef": "def"}, "ringcentral.http.client": {"fullname": "ringcentral.http.client", "modulename": "ringcentral.http.client", "kind": "module", "doc": "

\n"}, "ringcentral.http.client.Client": {"fullname": "ringcentral.http.client.Client", "modulename": "ringcentral.http.client", "qualname": "Client", "kind": "class", "doc": "

\n"}, "ringcentral.http.client.Client.send": {"fullname": "ringcentral.http.client.Client.send", "modulename": "ringcentral.http.client", "qualname": "Client.send", "kind": "function", "doc": "

Send the HTTP request and handle the response.

\n\n

Args:\n request (obj): The HTTP request object.

\n\n

Returns:\n obj: The HTTP response object.

\n\n

Raises:\n ApiException: If an error occurs during the request or response handling.

\n", "signature": "(self, request):", "funcdef": "def"}, "ringcentral.http.client.Client.load_response": {"fullname": "ringcentral.http.client.Client.load_response", "modulename": "ringcentral.http.client", "qualname": "Client.load_response", "kind": "function", "doc": "

\n", "signature": "(self, request):", "funcdef": "def"}, "ringcentral.http.client.Client.create_request": {"fullname": "ringcentral.http.client.Client.create_request", "modulename": "ringcentral.http.client", "qualname": "Client.create_request", "kind": "function", "doc": "

Create an HTTP request object.

\n\n

Args:\n method (str): The HTTP method (e.g., GET, POST).\n url (str): The URL for the request.\n query_params (dict, optional): Dictionary containing query parameters.\n body (dict, optional): Request body data.\n headers (dict, optional): Request headers.

\n\n

Returns:\n requests.Request: The HTTP request object.

\n", "signature": "(self, method='', url='', query_params=None, body=None, headers=None):", "funcdef": "def"}, "ringcentral.http.client_test": {"fullname": "ringcentral.http.client_test", "modulename": "ringcentral.http.client_test", "kind": "module", "doc": "

\n"}, "ringcentral.http.client_test.body": {"fullname": "ringcentral.http.client_test.body", "modulename": "ringcentral.http.client_test", "qualname": "body", "kind": "variable", "doc": "

\n", "default_value": "{'foo': 'bar', 'baz': 'qux'}"}, "ringcentral.http.client_test.TestClient": {"fullname": "ringcentral.http.client_test.TestClient", "modulename": "ringcentral.http.client_test", "qualname": "TestClient", "kind": "class", "doc": "

A class whose instances are single test cases.

\n\n

By default, the test code itself should be placed in a method named\n'runTest'.

\n\n

If the fixture may be used for many test cases, create as\nmany test methods as are needed. When instantiating such a TestCase\nsubclass, specify in the constructor arguments the name of the test method\nthat the instance is to execute.

\n\n

Test authors should subclass TestCase for their own tests. Construction\nand deconstruction of the test's environment ('fixture') can be\nimplemented by overriding the 'setUp' and 'tearDown' methods respectively.

\n\n

If it is necessary to override the __init__ method, the base class\n__init__ method must always be called. It is important that subclasses\nshould not change the signature of their __init__ method, since instances\nof the classes are instantiated automatically by parts of the framework\nin order to be run.

\n\n

When subclassing TestCase, you can set these attributes:

\n\n
    \n
  • failureException: determines which exception will be raised when\nthe instance's assertion methods fail; test methods raising this\nexception will be deemed to have 'failed' rather than 'errored'.
  • \n
  • longMessage: determines whether long messages (including repr of\nobjects used in assert methods) will be printed on failure in addition\nto any explicit message passed.
  • \n
  • maxDiff: sets the maximum length of a diff in failure messages\nby assert methods using difflib. It is looked up as an instance\nattribute so can be configured by individual tests if required.
  • \n
\n", "bases": "ringcentral.test.testcase.TestCase"}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"fullname": "ringcentral.http.client_test.TestClient.test_create_request_with_query_string", "modulename": "ringcentral.http.client_test", "qualname": "TestClient.test_create_request_with_query_string", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"fullname": "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url", "modulename": "ringcentral.http.client_test", "qualname": "TestClient.test_create_request_encode_body_url", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"fullname": "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json", "modulename": "ringcentral.http.client_test", "qualname": "TestClient.test_create_request_encode_body_json", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"fullname": "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default", "modulename": "ringcentral.http.client_test", "qualname": "TestClient.test_create_request_encode_body_json_default", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"fullname": "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative", "modulename": "ringcentral.http.client_test", "qualname": "TestClient.test_create_request_encode_body_alternative", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.json_object": {"fullname": "ringcentral.http.json_object", "modulename": "ringcentral.http.json_object", "kind": "module", "doc": "

\n"}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"fullname": "ringcentral.http.json_object.PYTHON_KEYWORDS", "modulename": "ringcentral.http.json_object", "qualname": "PYTHON_KEYWORDS", "kind": "variable", "doc": "

\n", "default_value": "('and', 'del', 'from', 'not', 'while', 'as', 'elif', 'global', 'or', 'with', 'assert', 'else', 'if', 'pass', 'yield', 'break', 'except', 'import', 'rint', 'class', 'exec', 'in', 'raise', 'continue', 'finally', 'is', 'return', 'def', 'for', 'lambda', 'try')"}, "ringcentral.http.json_object.JsonObject": {"fullname": "ringcentral.http.json_object.JsonObject", "modulename": "ringcentral.http.json_object", "qualname": "JsonObject", "kind": "class", "doc": "

\n"}, "ringcentral.http.json_object.safe_name": {"fullname": "ringcentral.http.json_object.safe_name", "modulename": "ringcentral.http.json_object", "qualname": "safe_name", "kind": "function", "doc": "

\n", "signature": "(n):", "funcdef": "def"}, "ringcentral.http.json_object.unfold": {"fullname": "ringcentral.http.json_object.unfold", "modulename": "ringcentral.http.json_object", "qualname": "unfold", "kind": "function", "doc": "

\n", "signature": "(d):", "funcdef": "def"}, "ringcentral.http.multipart_builder": {"fullname": "ringcentral.http.multipart_builder", "modulename": "ringcentral.http.multipart_builder", "kind": "module", "doc": "

\n"}, "ringcentral.http.multipart_builder.MultipartBuilder": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder", "kind": "class", "doc": "

\n"}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder.__init__", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder.__init__", "kind": "function", "doc": "

\n", "signature": "(platform)"}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder.set_multipart_mixed", "kind": "function", "doc": "

\n", "signature": "(self, multipart_mixed):", "funcdef": "def"}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder.set_body", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder.set_body", "kind": "function", "doc": "

\n", "signature": "(self, body):", "funcdef": "def"}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder.body", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder.body", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder.contents", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder.contents", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder.add", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder.add", "kind": "function", "doc": "

Possible attachment formats:

\n\n
    \n
  1. Downloaded: ('filename.ext', urllib.urlopen('https://...').read(), 'image/png')
  2. \n
  3. Local file: ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})
  4. \n
  5. Direct local file w/o meta: open('report.xls', 'rb')
  6. \n
  7. Plain text: ('report.csv', 'some,data,to,send')
  8. \n
\n\n
Parameters
\n\n
    \n
  • attachment:
  • \n
  • name='attachment':
  • \n
\n\n
Returns
\n", "signature": "(self, attachment, name='attachment'):", "funcdef": "def"}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"fullname": "ringcentral.http.multipart_builder.MultipartBuilder.request", "modulename": "ringcentral.http.multipart_builder", "qualname": "MultipartBuilder.request", "kind": "function", "doc": "

\n", "signature": "(self, url, method='POST'):", "funcdef": "def"}, "ringcentral.http.multipart_builder_test": {"fullname": "ringcentral.http.multipart_builder_test", "modulename": "ringcentral.http.multipart_builder_test", "kind": "module", "doc": "

\n"}, "ringcentral.http.multipart_builder_test.MockPlatform": {"fullname": "ringcentral.http.multipart_builder_test.MockPlatform", "modulename": "ringcentral.http.multipart_builder_test", "qualname": "MockPlatform", "kind": "class", "doc": "

\n"}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"fullname": "ringcentral.http.multipart_builder_test.MockPlatform.create_url", "modulename": "ringcentral.http.multipart_builder_test", "qualname": "MockPlatform.create_url", "kind": "function", "doc": "

\n", "signature": "(self, url, add_server):", "funcdef": "def"}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"fullname": "ringcentral.http.multipart_builder_test.TestMultipartBuilder", "modulename": "ringcentral.http.multipart_builder_test", "qualname": "TestMultipartBuilder", "kind": "class", "doc": "

A class whose instances are single test cases.

\n\n

By default, the test code itself should be placed in a method named\n'runTest'.

\n\n

If the fixture may be used for many test cases, create as\nmany test methods as are needed. When instantiating such a TestCase\nsubclass, specify in the constructor arguments the name of the test method\nthat the instance is to execute.

\n\n

Test authors should subclass TestCase for their own tests. Construction\nand deconstruction of the test's environment ('fixture') can be\nimplemented by overriding the 'setUp' and 'tearDown' methods respectively.

\n\n

If it is necessary to override the __init__ method, the base class\n__init__ method must always be called. It is important that subclasses\nshould not change the signature of their __init__ method, since instances\nof the classes are instantiated automatically by parts of the framework\nin order to be run.

\n\n

When subclassing TestCase, you can set these attributes:

\n\n
    \n
  • failureException: determines which exception will be raised when\nthe instance's assertion methods fail; test methods raising this\nexception will be deemed to have 'failed' rather than 'errored'.
  • \n
  • longMessage: determines whether long messages (including repr of\nobjects used in assert methods) will be printed on failure in addition\nto any explicit message passed.
  • \n
  • maxDiff: sets the maximum length of a diff in failure messages\nby assert methods using difflib. It is looked up as an instance\nattribute so can be configured by individual tests if required.
  • \n
\n", "bases": "ringcentral.test.testcase.TestCase"}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"fullname": "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add", "modulename": "ringcentral.http.multipart_builder_test", "qualname": "TestMultipartBuilder.test_add", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"fullname": "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed", "modulename": "ringcentral.http.multipart_builder_test", "qualname": "TestMultipartBuilder.test_multipart_mixed", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform": {"fullname": "ringcentral.platform", "modulename": "ringcentral.platform", "kind": "module", "doc": "

\n"}, "ringcentral.platform.auth": {"fullname": "ringcentral.platform.auth", "modulename": "ringcentral.platform.auth", "kind": "module", "doc": "

\n"}, "ringcentral.platform.auth.RELEASE_TIMEOUT": {"fullname": "ringcentral.platform.auth.RELEASE_TIMEOUT", "modulename": "ringcentral.platform.auth", "qualname": "RELEASE_TIMEOUT", "kind": "variable", "doc": "

\n", "default_value": "10"}, "ringcentral.platform.auth.Auth": {"fullname": "ringcentral.platform.auth.Auth", "modulename": "ringcentral.platform.auth", "qualname": "Auth", "kind": "class", "doc": "

\n"}, "ringcentral.platform.auth.Auth.set_data": {"fullname": "ringcentral.platform.auth.Auth.set_data", "modulename": "ringcentral.platform.auth", "qualname": "Auth.set_data", "kind": "function", "doc": "

\n", "signature": "(self, auth_data=None):", "funcdef": "def"}, "ringcentral.platform.auth.Auth.data": {"fullname": "ringcentral.platform.auth.Auth.data", "modulename": "ringcentral.platform.auth", "qualname": "Auth.data", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.auth.Auth.reset": {"fullname": "ringcentral.platform.auth.Auth.reset", "modulename": "ringcentral.platform.auth", "qualname": "Auth.reset", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.auth.Auth.access_token": {"fullname": "ringcentral.platform.auth.Auth.access_token", "modulename": "ringcentral.platform.auth", "qualname": "Auth.access_token", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.auth.Auth.refresh_token": {"fullname": "ringcentral.platform.auth.Auth.refresh_token", "modulename": "ringcentral.platform.auth", "qualname": "Auth.refresh_token", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.auth.Auth.token_type": {"fullname": "ringcentral.platform.auth.Auth.token_type", "modulename": "ringcentral.platform.auth", "qualname": "Auth.token_type", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.auth.Auth.access_token_valid": {"fullname": "ringcentral.platform.auth.Auth.access_token_valid", "modulename": "ringcentral.platform.auth", "qualname": "Auth.access_token_valid", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"fullname": "ringcentral.platform.auth.Auth.refresh_token_valid", "modulename": "ringcentral.platform.auth", "qualname": "Auth.refresh_token_valid", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.events": {"fullname": "ringcentral.platform.events", "modulename": "ringcentral.platform.events", "kind": "module", "doc": "

\n"}, "ringcentral.platform.events.Events": {"fullname": "ringcentral.platform.events.Events", "modulename": "ringcentral.platform.events", "qualname": "Events", "kind": "class", "doc": "

Events class representing various event types.

\n\n

Attributes:\n refreshSuccess (str): Represents a successful refresh event.\n refreshError (str): Represents an error during refresh.\n loginSuccess (str): Represents a successful login event.\n loginError (str): Represents an error during login.\n logoutSuccess (str): Represents a successful logout event.\n logoutError (str): Represents an error during logout.

\n"}, "ringcentral.platform.events.Events.refreshSuccess": {"fullname": "ringcentral.platform.events.Events.refreshSuccess", "modulename": "ringcentral.platform.events", "qualname": "Events.refreshSuccess", "kind": "variable", "doc": "

\n", "default_value": "'refreshSuccess'"}, "ringcentral.platform.events.Events.refreshError": {"fullname": "ringcentral.platform.events.Events.refreshError", "modulename": "ringcentral.platform.events", "qualname": "Events.refreshError", "kind": "variable", "doc": "

\n", "default_value": "'refreshError'"}, "ringcentral.platform.events.Events.loginSuccess": {"fullname": "ringcentral.platform.events.Events.loginSuccess", "modulename": "ringcentral.platform.events", "qualname": "Events.loginSuccess", "kind": "variable", "doc": "

\n", "default_value": "'loginSuccess'"}, "ringcentral.platform.events.Events.loginError": {"fullname": "ringcentral.platform.events.Events.loginError", "modulename": "ringcentral.platform.events", "qualname": "Events.loginError", "kind": "variable", "doc": "

\n", "default_value": "'loginError'"}, "ringcentral.platform.events.Events.logoutSuccess": {"fullname": "ringcentral.platform.events.Events.logoutSuccess", "modulename": "ringcentral.platform.events", "qualname": "Events.logoutSuccess", "kind": "variable", "doc": "

\n", "default_value": "'logoutSuccess'"}, "ringcentral.platform.events.Events.logoutError": {"fullname": "ringcentral.platform.events.Events.logoutError", "modulename": "ringcentral.platform.events", "qualname": "Events.logoutError", "kind": "variable", "doc": "

\n", "default_value": "'logoutError'"}, "ringcentral.platform.platform": {"fullname": "ringcentral.platform.platform", "modulename": "ringcentral.platform.platform", "kind": "module", "doc": "

\n"}, "ringcentral.platform.platform.ACCOUNT_ID": {"fullname": "ringcentral.platform.platform.ACCOUNT_ID", "modulename": "ringcentral.platform.platform", "qualname": "ACCOUNT_ID", "kind": "variable", "doc": "

\n", "default_value": "'~'"}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"fullname": "ringcentral.platform.platform.ACCOUNT_PREFIX", "modulename": "ringcentral.platform.platform", "qualname": "ACCOUNT_PREFIX", "kind": "variable", "doc": "

\n", "default_value": "'/account/'"}, "ringcentral.platform.platform.URL_PREFIX": {"fullname": "ringcentral.platform.platform.URL_PREFIX", "modulename": "ringcentral.platform.platform", "qualname": "URL_PREFIX", "kind": "variable", "doc": "

\n", "default_value": "'/restapi'"}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"fullname": "ringcentral.platform.platform.TOKEN_ENDPOINT", "modulename": "ringcentral.platform.platform", "qualname": "TOKEN_ENDPOINT", "kind": "variable", "doc": "

\n", "default_value": "'/restapi/oauth/token'"}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"fullname": "ringcentral.platform.platform.REVOKE_ENDPOINT", "modulename": "ringcentral.platform.platform", "qualname": "REVOKE_ENDPOINT", "kind": "variable", "doc": "

\n", "default_value": "'/restapi/oauth/revoke'"}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"fullname": "ringcentral.platform.platform.AUTHORIZE_ENDPOINT", "modulename": "ringcentral.platform.platform", "qualname": "AUTHORIZE_ENDPOINT", "kind": "variable", "doc": "

\n", "default_value": "'/restapi/oauth/authorize'"}, "ringcentral.platform.platform.API_VERSION": {"fullname": "ringcentral.platform.platform.API_VERSION", "modulename": "ringcentral.platform.platform", "qualname": "API_VERSION", "kind": "variable", "doc": "

\n", "default_value": "'v1.0'"}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"fullname": "ringcentral.platform.platform.ACCESS_TOKEN_TTL", "modulename": "ringcentral.platform.platform", "qualname": "ACCESS_TOKEN_TTL", "kind": "variable", "doc": "

\n", "default_value": "3600"}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"fullname": "ringcentral.platform.platform.REFRESH_TOKEN_TTL", "modulename": "ringcentral.platform.platform", "qualname": "REFRESH_TOKEN_TTL", "kind": "variable", "doc": "

\n", "default_value": "604800"}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"fullname": "ringcentral.platform.platform.KNOWN_PREFIXES", "modulename": "ringcentral.platform.platform", "qualname": "KNOWN_PREFIXES", "kind": "variable", "doc": "

\n", "default_value": "['/restapi', '/rcvideo', '/video', '/webinar', '/analytics', '/ai', '/team-messaging', '/scim', '/cx/']"}, "ringcentral.platform.platform.Platform": {"fullname": "ringcentral.platform.platform.Platform", "modulename": "ringcentral.platform.platform", "qualname": "Platform", "kind": "class", "doc": "

Event system for python

\n", "bases": "observable.core.Observable"}, "ringcentral.platform.platform.Platform.__init__": {"fullname": "ringcentral.platform.platform.Platform.__init__", "modulename": "ringcentral.platform.platform", "qualname": "Platform.__init__", "kind": "function", "doc": "

\n", "signature": "(\tclient,\tkey='',\tsecret='',\tserver='',\tname='',\tversion='',\tredirect_uri='',\tknown_prefixes=None)"}, "ringcentral.platform.platform.Platform.auth": {"fullname": "ringcentral.platform.platform.Platform.auth", "modulename": "ringcentral.platform.platform", "qualname": "Platform.auth", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.create_url": {"fullname": "ringcentral.platform.platform.Platform.create_url", "modulename": "ringcentral.platform.platform", "qualname": "Platform.create_url", "kind": "function", "doc": "

Creates a complete URL based on the provided URL and additional parameters.

\n\n

Args:\n url (str): The base URL.\n add_server (bool): Whether to prepend the server URL if the provided URL doesn't contain 'http://' or 'https://'.\n add_method (str, optional): The HTTP method to append as a query parameter.\n add_token (bool): Whether to append the access token as a query parameter.

\n\n

Returns:\n str: The complete URL.

\n\n

Note:\n - If add_server is True and the provided URL doesn't start with 'http://' or 'https://', the server URL will be prepended.\n - If the provided URL doesn't contain known prefixes or 'http://' or 'https://', the URL_PREFIX and API_VERSION will be appended.\n - If the provided URL contains ACCOUNT_PREFIX followed by ACCOUNT_ID, it will be replaced with ACCOUNT_PREFIX and the account ID associated with the SDK instance.\n - If add_method is provided, it will be appended as a query parameter '_method'.\n - If add_token is True, the access token associated with the SDK instance will be appended as a query parameter 'access_token'.

\n", "signature": "(self, url, add_server=False, add_method=None, add_token=False):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.logged_in": {"fullname": "ringcentral.platform.platform.Platform.logged_in", "modulename": "ringcentral.platform.platform", "qualname": "Platform.logged_in", "kind": "function", "doc": "

Checks if the user is currently logged in.

\n\n

Returns:\n bool: True if the user is logged in, False otherwise.

\n\n

Note:\n - This method checks if the access token is valid.\n - If the access token is not valid, it attempts to refresh it by calling the refresh method.\n - If any exceptions occur during the process, it returns False.

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.login_url": {"fullname": "ringcentral.platform.platform.Platform.login_url", "modulename": "ringcentral.platform.platform", "qualname": "Platform.login_url", "kind": "function", "doc": "

Generates the URL for initiating the login process.

\n\n

Args:\n redirect_uri (str): The URI to which the user will be redirected after authentication.\n state (str, optional): A value to maintain state between the request and the callback. Default is ''.\n challenge (str, optional): The code challenge for PKCE (Proof Key for Code Exchange). Default is ''.\n challenge_method (str, optional): The code challenge method for PKCE. Default is 'S256'.

\n\n

Returns:\n str: The login URL.

\n", "signature": "(self, redirect_uri, state='', challenge='', challenge_method='S256'):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.login": {"fullname": "ringcentral.platform.platform.Platform.login", "modulename": "ringcentral.platform.platform", "qualname": "Platform.login", "kind": "function", "doc": "

Logs in the user using various authentication methods.

\n\n

Args:\n username (str, optional): The username for authentication. Required if password is provided. Default is ''.\n extension (str, optional): The extension associated with the username. Default is ''.\n password (str, optional): The password for authentication. Required if username is provided. Default is ''.\n code (str, optional): The authorization code for authentication. Default is ''.\n redirect_uri (str, optional): The URI to redirect to after authentication. Default is ''.\n jwt (str, optional): The JWT (JSON Web Token) for authentication. Default is ''.\n verifier (str, optional): The code verifier for PKCE (Proof Key for Code Exchange). Default is ''.

\n\n

Returns:\n Response: The response object containing authentication data if successful.

\n\n

Raises:\n Exception: If the login attempt fails or invalid parameters are provided.

\n\n

Note:\n - This method supports multiple authentication flows including password-based, authorization code, and JWT.\n - It checks for the presence of required parameters and raises an exception if necessary.\n - Deprecation warning is issued for username-password login; recommend using JWT or OAuth instead.\n - Constructs the appropriate request body based on the provided parameters.\n - Uses create_url to build the token endpoint URL, adding the server URL if required.\n - Sends the authentication request using _request_token.\n - Triggers the loginSuccess or loginError event based on the outcome of the login attempt.

\n", "signature": "(\tself,\tusername='',\textension='',\tpassword='',\tcode='',\tredirect_uri='',\tjwt='',\tverifier=''):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.refresh": {"fullname": "ringcentral.platform.platform.Platform.refresh", "modulename": "ringcentral.platform.platform", "qualname": "Platform.refresh", "kind": "function", "doc": "

Refreshes the authentication tokens.

\n\n

Returns:\n Response: The response object containing refreshed authentication data if successful.

\n\n

Raises:\n Exception: If the refresh token has expired or if any error occurs during the refresh process.

\n\n

Note:\n - This method checks if the refresh token is still valid using _auth.refresh_token_valid().\n - Constructs the request body with the grant type as 'refresh_token' and includes the refresh token.\n - Sends the token refresh request using _request_token at this '/restapi/oauth/token end point.\n - Triggers the refreshSuccess or refreshError event based on the outcome of the refresh attempt.

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.logout": {"fullname": "ringcentral.platform.platform.Platform.logout", "modulename": "ringcentral.platform.platform", "qualname": "Platform.logout", "kind": "function", "doc": "

Logs out the user by revoking the access token.

\n\n

Returns:\n Response: The response object containing logout confirmation if successful.

\n\n

Raises:\n Exception: If any error occurs during the logout process.

\n\n

Note:\n - Constructs the request body with the access token to be revoked.\n - Sends the token revoke request using _request_token at this /restapi/oauth/revoke end point.\n - Resets the authentication data using _auth.reset() upon successful logout.\n - Triggers the logoutSuccess or logoutError event based on the outcome of the logout attempt.

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.inflate_request": {"fullname": "ringcentral.platform.platform.Platform.inflate_request", "modulename": "ringcentral.platform.platform", "qualname": "Platform.inflate_request", "kind": "function", "doc": "

Inflates the provided request object with necessary headers and URL modifications.

\n\n

Args:\n request (Request): The request object to be inflated.\n skip_auth_check (bool, optional): Whether to skip the authentication check and header addition. Default is False.

\n\n

Note:\n - If skip_auth_check is False (default), it ensures authentication by calling _ensure_authentication and adds the 'Authorization' header.\n - Sets the 'User-Agent' and 'X-User-Agent' headers to the value specified in _userAgent.\n - Modifies the request URL using create_url, adding the server URL if necessary.

\n", "signature": "(self, request, skip_auth_check=False):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.send_request": {"fullname": "ringcentral.platform.platform.Platform.send_request", "modulename": "ringcentral.platform.platform", "qualname": "Platform.send_request", "kind": "function", "doc": "

\n", "signature": "(self, request, skip_auth_check=False):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.get": {"fullname": "ringcentral.platform.platform.Platform.get", "modulename": "ringcentral.platform.platform", "qualname": "Platform.get", "kind": "function", "doc": "

\n", "signature": "(self, url, query_params=None, headers=None, skip_auth_check=False):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.post": {"fullname": "ringcentral.platform.platform.Platform.post", "modulename": "ringcentral.platform.platform", "qualname": "Platform.post", "kind": "function", "doc": "

\n", "signature": "(\tself,\turl,\tbody=None,\tquery_params=None,\theaders=None,\tskip_auth_check=False):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.put": {"fullname": "ringcentral.platform.platform.Platform.put", "modulename": "ringcentral.platform.platform", "qualname": "Platform.put", "kind": "function", "doc": "

\n", "signature": "(\tself,\turl,\tbody=None,\tquery_params=None,\theaders=None,\tskip_auth_check=False):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.patch": {"fullname": "ringcentral.platform.platform.Platform.patch", "modulename": "ringcentral.platform.platform", "qualname": "Platform.patch", "kind": "function", "doc": "

\n", "signature": "(\tself,\turl,\tbody=None,\tquery_params=None,\theaders=None,\tskip_auth_check=False):", "funcdef": "def"}, "ringcentral.platform.platform.Platform.delete": {"fullname": "ringcentral.platform.platform.Platform.delete", "modulename": "ringcentral.platform.platform", "qualname": "Platform.delete", "kind": "function", "doc": "

\n", "signature": "(\tself,\turl,\tbody=None,\tquery_params=None,\theaders=None,\tskip_auth_check=False):", "funcdef": "def"}, "ringcentral.platform.platform_test": {"fullname": "ringcentral.platform.platform_test", "modulename": "ringcentral.platform.platform_test", "kind": "module", "doc": "

\n"}, "ringcentral.platform.platform_test.TestPlatform": {"fullname": "ringcentral.platform.platform_test.TestPlatform", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform", "kind": "class", "doc": "

A class whose instances are single test cases.

\n\n

By default, the test code itself should be placed in a method named\n'runTest'.

\n\n

If the fixture may be used for many test cases, create as\nmany test methods as are needed. When instantiating such a TestCase\nsubclass, specify in the constructor arguments the name of the test method\nthat the instance is to execute.

\n\n

Test authors should subclass TestCase for their own tests. Construction\nand deconstruction of the test's environment ('fixture') can be\nimplemented by overriding the 'setUp' and 'tearDown' methods respectively.

\n\n

If it is necessary to override the __init__ method, the base class\n__init__ method must always be called. It is important that subclasses\nshould not change the signature of their __init__ method, since instances\nof the classes are instantiated automatically by parts of the framework\nin order to be run.

\n\n

When subclassing TestCase, you can set these attributes:

\n\n
    \n
  • failureException: determines which exception will be raised when\nthe instance's assertion methods fail; test methods raising this\nexception will be deemed to have 'failed' rather than 'errored'.
  • \n
  • longMessage: determines whether long messages (including repr of\nobjects used in assert methods) will be printed on failure in addition\nto any explicit message passed.
  • \n
  • maxDiff: sets the maximum length of a diff in failure messages\nby assert methods using difflib. It is looked up as an instance\nattribute so can be configured by individual tests if required.
  • \n
\n", "bases": "ringcentral.test.testcase.TestCase"}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_key", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_key", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_login", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_login", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_login_code", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_login_code", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_login_fail", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_login_fail", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_login_code_redirect", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_refresh_with_outdated_token", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_logged_in", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_logged_in", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_manual_refresh", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"fullname": "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.skip_test_automatic_refresh", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_logout", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_logout", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_api_url", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_api_url", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_api_url_custom_prefixes", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_delete_with_body", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"fullname": "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body", "modulename": "ringcentral.platform.platform_test", "qualname": "TestPlatform.test_delete_without_body", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.sdk": {"fullname": "ringcentral.sdk", "modulename": "ringcentral.sdk", "kind": "module", "doc": "

\n"}, "ringcentral.sdk.SDK": {"fullname": "ringcentral.sdk.SDK", "modulename": "ringcentral.sdk", "qualname": "SDK", "kind": "class", "doc": "

\n"}, "ringcentral.sdk.SDK.__init__": {"fullname": "ringcentral.sdk.SDK.__init__", "modulename": "ringcentral.sdk", "qualname": "SDK.__init__", "kind": "function", "doc": "

\n", "signature": "(\tkey,\tsecret,\tserver,\tname='',\tversion='',\tredirect_uri=None,\tknown_prefixes=None)"}, "ringcentral.sdk.SDK.platform": {"fullname": "ringcentral.sdk.SDK.platform", "modulename": "ringcentral.sdk", "qualname": "SDK.platform", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.sdk.SDK.create_web_socket_client": {"fullname": "ringcentral.sdk.SDK.create_web_socket_client", "modulename": "ringcentral.sdk", "qualname": "SDK.create_web_socket_client", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.sdk.SDK.create_multipart_builder": {"fullname": "ringcentral.sdk.SDK.create_multipart_builder", "modulename": "ringcentral.sdk", "qualname": "SDK.create_multipart_builder", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.sdk_test": {"fullname": "ringcentral.sdk_test", "modulename": "ringcentral.sdk_test", "kind": "module", "doc": "

\n"}, "ringcentral.sdk_test.TestSDK": {"fullname": "ringcentral.sdk_test.TestSDK", "modulename": "ringcentral.sdk_test", "qualname": "TestSDK", "kind": "class", "doc": "

A class whose instances are single test cases.

\n\n

By default, the test code itself should be placed in a method named\n'runTest'.

\n\n

If the fixture may be used for many test cases, create as\nmany test methods as are needed. When instantiating such a TestCase\nsubclass, specify in the constructor arguments the name of the test method\nthat the instance is to execute.

\n\n

Test authors should subclass TestCase for their own tests. Construction\nand deconstruction of the test's environment ('fixture') can be\nimplemented by overriding the 'setUp' and 'tearDown' methods respectively.

\n\n

If it is necessary to override the __init__ method, the base class\n__init__ method must always be called. It is important that subclasses\nshould not change the signature of their __init__ method, since instances\nof the classes are instantiated automatically by parts of the framework\nin order to be run.

\n\n

When subclassing TestCase, you can set these attributes:

\n\n
    \n
  • failureException: determines which exception will be raised when\nthe instance's assertion methods fail; test methods raising this\nexception will be deemed to have 'failed' rather than 'errored'.
  • \n
  • longMessage: determines whether long messages (including repr of\nobjects used in assert methods) will be printed on failure in addition\nto any explicit message passed.
  • \n
  • maxDiff: sets the maximum length of a diff in failure messages\nby assert methods using difflib. It is looked up as an instance\nattribute so can be configured by individual tests if required.
  • \n
\n", "bases": "ringcentral.test.testcase.TestCase"}, "ringcentral.sdk_test.TestSDK.test_instance": {"fullname": "ringcentral.sdk_test.TestSDK.test_instance", "modulename": "ringcentral.sdk_test", "qualname": "TestSDK.test_instance", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.test": {"fullname": "ringcentral.test", "modulename": "ringcentral.test", "kind": "module", "doc": "

\n"}, "ringcentral.test.spy": {"fullname": "ringcentral.test.spy", "modulename": "ringcentral.test.spy", "kind": "module", "doc": "

\n"}, "ringcentral.test.spy.Spy": {"fullname": "ringcentral.test.spy.Spy", "modulename": "ringcentral.test.spy", "qualname": "Spy", "kind": "class", "doc": "

\n"}, "ringcentral.test.spy.Spy.args": {"fullname": "ringcentral.test.spy.Spy.args", "modulename": "ringcentral.test.spy", "qualname": "Spy.args", "kind": "variable", "doc": "

\n"}, "ringcentral.test.testcase": {"fullname": "ringcentral.test.testcase", "modulename": "ringcentral.test.testcase", "kind": "module", "doc": "

\n"}, "ringcentral.test.testcase.TestCase": {"fullname": "ringcentral.test.testcase.TestCase", "modulename": "ringcentral.test.testcase", "qualname": "TestCase", "kind": "class", "doc": "

A class whose instances are single test cases.

\n\n

By default, the test code itself should be placed in a method named\n'runTest'.

\n\n

If the fixture may be used for many test cases, create as\nmany test methods as are needed. When instantiating such a TestCase\nsubclass, specify in the constructor arguments the name of the test method\nthat the instance is to execute.

\n\n

Test authors should subclass TestCase for their own tests. Construction\nand deconstruction of the test's environment ('fixture') can be\nimplemented by overriding the 'setUp' and 'tearDown' methods respectively.

\n\n

If it is necessary to override the __init__ method, the base class\n__init__ method must always be called. It is important that subclasses\nshould not change the signature of their __init__ method, since instances\nof the classes are instantiated automatically by parts of the framework\nin order to be run.

\n\n

When subclassing TestCase, you can set these attributes:

\n\n
    \n
  • failureException: determines which exception will be raised when\nthe instance's assertion methods fail; test methods raising this\nexception will be deemed to have 'failed' rather than 'errored'.
  • \n
  • longMessage: determines whether long messages (including repr of\nobjects used in assert methods) will be printed on failure in addition\nto any explicit message passed.
  • \n
  • maxDiff: sets the maximum length of a diff in failure messages\nby assert methods using difflib. It is looked up as an instance\nattribute so can be configured by individual tests if required.
  • \n
\n", "bases": "unittest.case.TestCase"}, "ringcentral.test.testcase.TestCase.__init__": {"fullname": "ringcentral.test.testcase.TestCase.__init__", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.__init__", "kind": "function", "doc": "

Create an instance of the class that will use the named test\nmethod when executed. Raises a ValueError if the instance does\nnot have a method with the specified name.

\n", "signature": "(method_name=None)"}, "ringcentral.test.testcase.TestCase.get_sdk": {"fullname": "ringcentral.test.testcase.TestCase.get_sdk", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.get_sdk", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.add": {"fullname": "ringcentral.test.testcase.TestCase.add", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.add", "kind": "function", "doc": "

\n", "signature": "(self, mock, method, url, body, status=200):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.authentication_mock": {"fullname": "ringcentral.test.testcase.TestCase.authentication_mock", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.authentication_mock", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.logout_mock": {"fullname": "ringcentral.test.testcase.TestCase.logout_mock", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.logout_mock", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"fullname": "ringcentral.test.testcase.TestCase.presence_subscription_mock", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.presence_subscription_mock", "kind": "function", "doc": "

\n", "signature": "(self, mock, id='1', detailed=True):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.refresh_mock": {"fullname": "ringcentral.test.testcase.TestCase.refresh_mock", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.refresh_mock", "kind": "function", "doc": "

\n", "signature": "(self, mock, failure=False, expires_in=3600):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.subscription_mock": {"fullname": "ringcentral.test.testcase.TestCase.subscription_mock", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.subscription_mock", "kind": "function", "doc": "

\n", "signature": "(self, mock, expires_in=54000, filters=None, id=None):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"fullname": "ringcentral.test.testcase.TestCase.delete_mock_with_body", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.delete_mock_with_body", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"fullname": "ringcentral.test.testcase.TestCase.delete_mock_without_body", "modulename": "ringcentral.test.testcase", "qualname": "TestCase.delete_mock_without_body", "kind": "function", "doc": "

\n", "signature": "(self, mock):", "funcdef": "def"}, "ringcentral.websocket": {"fullname": "ringcentral.websocket", "modulename": "ringcentral.websocket", "kind": "module", "doc": "

\n"}, "ringcentral.websocket.events": {"fullname": "ringcentral.websocket.events", "modulename": "ringcentral.websocket.events", "kind": "module", "doc": "

\n"}, "ringcentral.websocket.events.WebSocketEvents": {"fullname": "ringcentral.websocket.events.WebSocketEvents", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents", "kind": "class", "doc": "

WebSocketEvents class representing various events related to WebSocket communication.

\n\n

Attributes:\n getTokenError (str): Event triggered when an error occurs while retrieving the WebSocket token.\n createConnectionError (str): Event triggered when an error occurs while creating a WebSocket connection.\n connectionCreated (str): Event triggered when a WebSocket connection is successfully created.\n closeConnectionError (str): Event triggered when an error occurs while closing a WebSocket connection.\n recoverConnectionError (str): Event triggered when an error occurs while recovering a WebSocket connection.\n receiveMessage (str): Event triggered when a message is received over the WebSocket connection.\n sendMessageError (str): Event triggered when an error occurs while sending a message over the WebSocket connection.\n connectionNotReady (str): Event triggered when attempting to perform an action while the WebSocket connection is not ready.\n createSubscriptionError (str): Event triggered when an error occurs while creating a subscription.\n updateSubscriptionError (str): Event triggered when an error occurs while updating a subscription.\n removeSubscriptionError (str): Event triggered when an error occurs while removing a subscription.\n subscriptionCreated (str): Event triggered when a subscription is successfully created.\n subscriptionUpdated (str): Event triggered when a subscription is successfully updated.\n subscriptionRemoved (str): Event triggered when a subscription is successfully removed.\n receiveSubscriptionNotification (str): Event triggered when a subscription notification is received.

\n"}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.getTokenError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.getTokenError", "kind": "variable", "doc": "

\n", "default_value": "'getTokenError'"}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.createConnectionError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.createConnectionError", "kind": "variable", "doc": "

\n", "default_value": "'createConnectionError'"}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"fullname": "ringcentral.websocket.events.WebSocketEvents.connectionCreated", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.connectionCreated", "kind": "variable", "doc": "

\n", "default_value": "'connectionCreated'"}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.closeConnectionError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.closeConnectionError", "kind": "variable", "doc": "

\n", "default_value": "'closeConnectionError'"}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.recoverConnectionError", "kind": "variable", "doc": "

\n", "default_value": "'recoverConnectionError'"}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"fullname": "ringcentral.websocket.events.WebSocketEvents.receiveMessage", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.receiveMessage", "kind": "variable", "doc": "

\n", "default_value": "'receiveMessage'"}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.sendMessageError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.sendMessageError", "kind": "variable", "doc": "

\n", "default_value": "'sendMessageError'"}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"fullname": "ringcentral.websocket.events.WebSocketEvents.connectionNotReady", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.connectionNotReady", "kind": "variable", "doc": "

\n", "default_value": "'connectionNotReady'"}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.createSubscriptionError", "kind": "variable", "doc": "

\n", "default_value": "'createSubscriptionError'"}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.updateSubscriptionError", "kind": "variable", "doc": "

\n", "default_value": "'updateSubscriptionError'"}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"fullname": "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.removeSubscriptionError", "kind": "variable", "doc": "

\n", "default_value": "'removeSubscriptionError'"}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"fullname": "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.subscriptionCreated", "kind": "variable", "doc": "

\n", "default_value": "'subscriptionCreated'"}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"fullname": "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.subscriptionUpdated", "kind": "variable", "doc": "

\n", "default_value": "'subscriptionUpdated'"}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"fullname": "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.subscriptionRemoved", "kind": "variable", "doc": "

\n", "default_value": "'subscriptionRemoved'"}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"fullname": "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification", "modulename": "ringcentral.websocket.events", "qualname": "WebSocketEvents.receiveSubscriptionNotification", "kind": "variable", "doc": "

\n", "default_value": "'receiveSubscriptionNotification'"}, "ringcentral.websocket.web_socket_client": {"fullname": "ringcentral.websocket.web_socket_client", "modulename": "ringcentral.websocket.web_socket_client", "kind": "module", "doc": "

\n"}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient", "kind": "class", "doc": "

Event system for python

\n", "bases": "observable.core.Observable"}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.__init__", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.__init__", "kind": "function", "doc": "

\n", "signature": "(platform)"}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.create_new_connection", "kind": "function", "doc": "

Creates a new WebSocket connection.

\n\n

Returns:\n Any: Response object containing the result of the connection creation.

\n\n

Raises:\n Exception: If any error occurs during the process.

\n\n

Note:\n - Retrieves the WebSocket token using get_web_socket_token.\n - Attempts to open a WebSocket connection using the retrieved token's URI and access token.\n - Triggers the createConnectionError event if an error occurs and raises the exception.

\n", "signature": "(self):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.get_web_socket_token", "kind": "function", "doc": "

Retrieves a WebSocket token.

\n\n

Returns:\n dict: WebSocket token containing URI and access token.

\n\n

Raises:\n Exception: If any error occurs during the process.

\n\n

Note:\n - Sends a POST request to the '/restapi/oauth/wstoken' endpoint to obtain the WebSocket token.\n - Returns the WebSocket token as a dictionary containing the URI and access token.\n - Triggers the getTokenError event if an error occurs and raises the exception.

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.open_connection", "kind": "function", "doc": "

Opens a WebSocket connection.

\n\n

Args:\n ws_uri (str): The WebSocket URI.\n ws_access_token (str): The access token for WebSocket authentication.

\n\n

Raises:\n Exception: If any error occurs during the process.

\n\n

Note:\n - Attempts to establish a WebSocket connection to the provided URI with the given access token.\n - Upon successful connection, sets up a heartbeat mechanism to maintain the connection.\n - Triggers the connectionCreated event upon successful connection establishment.\n - Listens for incoming messages and triggers the receiveMessage event for each received message.\n - Triggers the createConnectionError event if an error occurs during the connection process and raises the exception.

\n", "signature": "(self, ws_uri, ws_access_token):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.get_connection_info", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.get_connection", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.close_connection", "kind": "function", "doc": "

Closes the WebSocket connection.

\n\n

Raises:\n Exception: If any error occurs during the process.

\n\n

Note:\n - Sets the _done flag to True to signal the termination of the heartbeat mechanism.\n - Sets the _is_ready flag to False to indicate that the connection is no longer ready.\n - Retrieves the WebSocket connection using get_connection.\n - Closes the WebSocket connection.\n - Triggers the closeConnectionError event if an error occurs during the closing process and raises the exception.

\n", "signature": "(self):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.recover_connection", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.send_message", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.send_message", "kind": "function", "doc": "

Sends a message over the WebSocket connection.

\n\n

Args:\n message (Any): The message to be sent.

\n\n

Raises:\n Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.

\n\n

Note:\n - Checks if the WebSocket connection is ready (_is_ready flag).\n - If the connection is ready, resets the send attempt counter and sends the message.\n - If the connection is not ready, retries after a delay and increments the send attempt counter.\n - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.

\n", "signature": "(self, message):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.create_subscription", "kind": "function", "doc": "

Creates a subscription to WebSocket events.

\n\n

Args:\n events (list, optional): A list of events to subscribe to. Default is None.

\n\n

Raises:\n Exception: If any error occurs during the process or if the connection is not ready after multiple attempts.

\n\n

Note:\n - If the WebSocket connection is ready (_is_ready flag), resets the send attempt counter and creates a WebSocketSubscription instance.\n - Registers the subscription with the specified events.\n - If the connection is not ready, retries after a delay and increments the send attempt counter.\n - If the send attempt counter exceeds a threshold, triggers the connectionNotReady event and raises an exception.

\n", "signature": "(self, events=None):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.update_subscription", "kind": "function", "doc": "

Updates an existing WebSocket subscription with new events.

\n\n

Args:\n subscription : The WebSocket subscription to update.\n events (list, optional): A list of events to update the subscription with. Default is None.

\n\n

Returns:\n WebSocketSubscription: The updated WebSocket subscription.

\n\n

Raises:\n Exception: If any error occurs during the process.

\n\n

Note:\n - Updates the specified WebSocket subscription with the new events provided.\n - If the update is successful, returns the updated WebSocket subscription.\n - If an error occurs during the update process, triggers the updateSubscriptionError event and raises an exception.

\n", "signature": "(self, subscription, events=None):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"fullname": "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription", "modulename": "ringcentral.websocket.web_socket_client", "qualname": "WebSocketClient.remove_subscription", "kind": "function", "doc": "

Removes an existing WebSocket subscription.

\n\n

Args:\n subscription : The WebSocket subscription to remove.

\n\n

Raises:\n Exception: If any error occurs during the removal process.

\n\n

Note:\n - Removes the specified WebSocket subscription.\n - If the removal is successful, the subscription is effectively unsubscribed from the events it was subscribed to.\n - If an error occurs during the removal process, triggers the removeSubscriptionError event and raises an exception.

\n", "signature": "(self, subscription):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_subscription": {"fullname": "ringcentral.websocket.web_socket_subscription", "modulename": "ringcentral.websocket.web_socket_subscription", "kind": "module", "doc": "

\n"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription", "kind": "class", "doc": "

Event system for python

\n", "bases": "observable.core.Observable"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.__init__", "kind": "function", "doc": "

\n", "signature": "(web_socket_client)"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.on_message", "kind": "function", "doc": "

\n", "signature": "(self, message):", "funcdef": "def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.register", "kind": "function", "doc": "

\n", "signature": "(self, events=None):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.add_events", "kind": "function", "doc": "

\n", "signature": "(self, events):", "funcdef": "def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.set_events", "kind": "function", "doc": "

\n", "signature": "(self, events):", "funcdef": "def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.subscribe", "kind": "function", "doc": "

\n", "signature": "(self, events=None):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.update", "kind": "function", "doc": "

\n", "signature": "(self, events=None):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.remove", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "async def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.set_subscription", "kind": "function", "doc": "

\n", "signature": "(self, data):", "funcdef": "def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.get_subscription_info", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.reset", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"fullname": "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy", "modulename": "ringcentral.websocket.web_socket_subscription", "qualname": "WebSocketSubscription.destroy", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}}, "docInfo": {"ringcentral": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.core": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.core.is_third": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "ringcentral.core.urlencode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 94}, "ringcentral.core.iterator": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 63}, "ringcentral.core.base64encode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 34}, "ringcentral.core.tostr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.core.clean_decrypted": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 37}, "ringcentral.http": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_exception": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_exception.ApiException": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 11}, "ringcentral.http.api_exception.ApiException.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "ringcentral.http.api_exception.ApiException.api_response": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_exception_test": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_exception_test.json_headers": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 10, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_exception_test.TestApiException": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 268}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_response.get_prepared_request_details": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.ok": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.raw": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.body": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.text": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.json_dict": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.json": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.multipart": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.error": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.request": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.ApiResponse.response": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response.create_response": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.http.api_response_test": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_response_test.multipart_headers": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 15, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.api_response_test.TestApiResponse": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 268}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"qualname": 5, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"qualname": 5, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.api_response_test.create_response": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 3}, "ringcentral.http.client": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.client.Client": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.client.Client.send": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 46}, "ringcentral.http.client.Client.load_response": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.http.client.Client.create_request": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 68, "bases": 0, "doc": 62}, "ringcentral.http.client_test": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.client_test.body": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 16, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.client_test.TestClient": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 268}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"qualname": 7, "fullname": 11, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"qualname": 7, "fullname": 11, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"qualname": 7, "fullname": 11, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"qualname": 8, "fullname": 12, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"qualname": 7, "fullname": 11, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.json_object": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 95, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.json_object.JsonObject": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.json_object.safe_name": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.json_object.unfold": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder.MultipartBuilder": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 86}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder_test": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder_test.MockPlatform": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 268}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"qualname": 4, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.auth": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.auth.RELEASE_TIMEOUT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.set_data": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.data": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.reset": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.access_token": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.refresh_token": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.token_type": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.access_token_valid": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.events": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.events.Events": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 61}, "ringcentral.platform.events.Events.refreshSuccess": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.events.Events.refreshError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.events.Events.loginSuccess": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.events.Events.loginError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.events.Events.logoutSuccess": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.events.Events.logoutError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.ACCOUNT_ID": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.URL_PREFIX": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.API_VERSION": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 30, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 6}, "ringcentral.platform.platform.Platform.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 107, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform.auth": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform.create_url": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 49, "bases": 0, "doc": 198}, "ringcentral.platform.platform.Platform.logged_in": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 67}, "ringcentral.platform.platform.Platform.login_url": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 85}, "ringcentral.platform.platform.Platform.login": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 111, "bases": 0, "doc": 235}, "ringcentral.platform.platform.Platform.refresh": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 110}, "ringcentral.platform.platform.Platform.logout": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 97}, "ringcentral.platform.platform.Platform.inflate_request": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 106}, "ringcentral.platform.platform.Platform.send_request": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform.get": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 49, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform.post": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform.put": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform.patch": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "ringcentral.platform.platform.Platform.delete": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 268}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.sdk": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.sdk.SDK": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.sdk.SDK.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 3}, "ringcentral.sdk.SDK.platform": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.sdk.SDK.create_web_socket_client": {"qualname": 5, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.sdk.SDK.create_multipart_builder": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.sdk_test": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.sdk_test.TestSDK": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 268}, "ringcentral.sdk_test.TestSDK.test_instance": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.test": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.test.spy": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.test.spy.Spy": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.test.spy.Spy.args": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.test.testcase": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 268}, "ringcentral.test.testcase.TestCase.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 15, "bases": 0, "doc": 33}, "ringcentral.test.testcase.TestCase.get_sdk": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.add": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.authentication_mock": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.logout_mock": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.refresh_mock": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.subscription_mock": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.websocket": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 216}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_client": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 6}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"qualname": 4, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 76}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"qualname": 5, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 73}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 109}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"qualname": 4, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 88}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 107}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 114}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 99}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 74}, "ringcentral.websocket.web_socket_subscription": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 6}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"qualname": 4, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}}, "length": 206, "save": true}, "index": {"qualname": {"root": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}}, "df": 8, "i": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.is_third": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.iterator": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}}, "df": 8}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {"ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.is_third": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.tostr": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 10}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}}, "df": 26, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}}, "df": 2}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}}, "df": 4}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}}, "df": 6}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 11}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}}, "df": 15}}}}}}}}, "s": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}}, "df": 2}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.ApiResponse.text": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.auth.Auth.token_type": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.json_object.unfold": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"6": {"4": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.base64encode": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "d": {"docs": {"ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.client_test.body": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 12}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client.Client": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.load_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}}, "df": 5}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_response.create_response": {"tf": 1}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 14, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}}, "df": 6, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 5}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.auth.Auth.data": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}, "ringcentral.platform.platform.API_VERSION": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}}, "df": 3}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_response.ApiResponse": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1}}, "df": 12}}}}}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}}, "df": 4}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.auth.Auth": {"tf": 1}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.auth.Auth.data": {"tf": 1}, "ringcentral.platform.auth.Auth.reset": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.platform.Platform.auth": {"tf": 1}}, "df": 10, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}}, "df": 3}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.test.spy.Spy.args": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1}, "ringcentral.http.api_response.create_response": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client.Client.load_response": {"tf": 1}}, "df": 6}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.auth.Auth.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}}, "df": 2}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}}, "df": 11}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}}, "df": 8, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.refreshSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.refreshError": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "w": {"docs": {"ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}}, "df": 1}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}}, "df": 5, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object.JsonObject": {"tf": 1}}, "df": 1}}}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}}, "df": 5}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.safe_name": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.sdk.SDK": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.sdk.SDK.platform": {"tf": 1}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}}, "df": 6}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.test.spy.Spy": {"tf": 1}, "ringcentral.test.spy.Spy.args": {"tf": 1}}, "df": 2}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}}, "df": 7, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}}, "df": 1}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform.Platform": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.auth": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.sdk.SDK.platform": {"tf": 1}}, "df": 17}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.post": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.put": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.platform.Platform.patch": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}}, "df": 1}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}}, "df": 8, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}}, "df": 8}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 7, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}}, "df": 2}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}}, "df": 4}}}}, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1}}, "df": 3}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.events.Events.refreshSuccess": {"tf": 1}, "ringcentral.platform.events.Events.refreshError": {"tf": 1}, "ringcentral.platform.events.Events.loginSuccess": {"tf": 1}, "ringcentral.platform.events.Events.loginError": {"tf": 1}, "ringcentral.platform.events.Events.logoutSuccess": {"tf": 1}, "ringcentral.platform.events.Events.logoutError": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}}, "df": 9}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}}, "df": 5, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {"ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}}, "df": 16}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 13}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 13}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.client.Client.load_response": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}}, "df": 6, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.loginSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.loginError": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.logoutSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.logoutError": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.safe_name": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.API_VERSION": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}}, "df": 1}}}}}}, "fullname": {"root": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}}, "df": 8, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral": {"tf": 1}, "ringcentral.core": {"tf": 1}, "ringcentral.core.is_third": {"tf": 1}, "ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}, "ringcentral.core.tostr": {"tf": 1}, "ringcentral.core.clean_decrypted": {"tf": 1}, "ringcentral.http": {"tf": 1}, "ringcentral.http.api_exception": {"tf": 1}, "ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}, "ringcentral.http.api_exception_test": {"tf": 1}, "ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}, "ringcentral.http.api_response": {"tf": 1}, "ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.http.api_response.ApiResponse": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1}, "ringcentral.http.api_response.create_response": {"tf": 1}, "ringcentral.http.api_response_test": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client": {"tf": 1}, "ringcentral.http.client.Client": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.load_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test": {"tf": 1}, "ringcentral.http.client_test.body": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.json_object": {"tf": 1}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}, "ringcentral.http.json_object.JsonObject": {"tf": 1}, "ringcentral.http.json_object.safe_name": {"tf": 1}, "ringcentral.http.json_object.unfold": {"tf": 1}, "ringcentral.http.multipart_builder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.http.multipart_builder_test": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}, "ringcentral.platform": {"tf": 1}, "ringcentral.platform.auth": {"tf": 1}, "ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}, "ringcentral.platform.auth.Auth": {"tf": 1}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.auth.Auth.data": {"tf": 1}, "ringcentral.platform.auth.Auth.reset": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.events": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.events.Events.refreshSuccess": {"tf": 1}, "ringcentral.platform.events.Events.refreshError": {"tf": 1}, "ringcentral.platform.events.Events.loginSuccess": {"tf": 1}, "ringcentral.platform.events.Events.loginError": {"tf": 1}, "ringcentral.platform.events.Events.logoutSuccess": {"tf": 1}, "ringcentral.platform.events.Events.logoutError": {"tf": 1}, "ringcentral.platform.platform": {"tf": 1}, "ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.API_VERSION": {"tf": 1}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}, "ringcentral.platform.platform.Platform": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.auth": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.platform.platform_test": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.sdk": {"tf": 1}, "ringcentral.sdk.SDK": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.sdk.SDK.platform": {"tf": 1}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}, "ringcentral.sdk_test": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}, "ringcentral.test": {"tf": 1}, "ringcentral.test.spy": {"tf": 1}, "ringcentral.test.spy.Spy": {"tf": 1}, "ringcentral.test.spy.Spy.args": {"tf": 1}, "ringcentral.test.testcase": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}, "ringcentral.websocket": {"tf": 1}, "ringcentral.websocket.events": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}, "ringcentral.websocket.web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 206}}}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}, "ringcentral.http.api_response": {"tf": 1}, "ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.http.api_response.ApiResponse": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1.4142135623730951}, "ringcentral.http.api_response.create_response": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.create_response": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.load_response": {"tf": 1}}, "df": 24}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.auth.Auth.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}}, "df": 2}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}}, "df": 11}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}}, "df": 8, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.refreshSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.refreshError": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "w": {"docs": {"ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core": {"tf": 1}, "ringcentral.core.is_third": {"tf": 1}, "ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}, "ringcentral.core.tostr": {"tf": 1}, "ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 7}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}}, "df": 6, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client": {"tf": 1}, "ringcentral.http.client.Client": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.send": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.load_response": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.http.client_test": {"tf": 1}, "ringcentral.http.client_test.body": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 28}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_response.create_response": {"tf": 1}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 14, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.is_third": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.iterator": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}}, "df": 8}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {"ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.is_third": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.tostr": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 10}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test": {"tf": 1}, "ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client_test": {"tf": 1}, "ringcentral.http.client_test.body": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1.4142135623730951}, "ringcentral.sdk_test": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1.4142135623730951}, "ringcentral.test": {"tf": 1}, "ringcentral.test.spy": {"tf": 1}, "ringcentral.test.spy.Spy": {"tf": 1}, "ringcentral.test.spy.Spy.args": {"tf": 1}, "ringcentral.test.testcase": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 60, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}}, "df": 2}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}}, "df": 4}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}}, "df": 6}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.add": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1.4142135623730951}}, "df": 12}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}}, "df": 15}}}}}}}}, "s": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}}, "df": 2}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.ApiResponse.text": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.auth.Auth.token_type": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.json_object.unfold": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"6": {"4": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.base64encode": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "d": {"docs": {"ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.client_test.body": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 12}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.multipart_builder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.http.multipart_builder_test": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}}, "df": 16}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 5}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.auth.Auth.data": {"tf": 1}}, "df": 2}}}}, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ringcentral.http": {"tf": 1}, "ringcentral.http.api_exception": {"tf": 1}, "ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}, "ringcentral.http.api_exception_test": {"tf": 1}, "ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}, "ringcentral.http.api_response": {"tf": 1}, "ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.http.api_response.ApiResponse": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1}, "ringcentral.http.api_response.create_response": {"tf": 1}, "ringcentral.http.api_response_test": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client": {"tf": 1}, "ringcentral.http.client.Client": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.load_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test": {"tf": 1}, "ringcentral.http.client_test.body": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.json_object": {"tf": 1}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}, "ringcentral.http.json_object.JsonObject": {"tf": 1}, "ringcentral.http.json_object.safe_name": {"tf": 1}, "ringcentral.http.json_object.unfold": {"tf": 1}, "ringcentral.http.multipart_builder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.http.multipart_builder_test": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}}, "df": 64}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"ringcentral.http.api_exception": {"tf": 1}, "ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 1.4142135623730951}, "ringcentral.http.api_exception_test": {"tf": 1}, "ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}, "ringcentral.http.api_response": {"tf": 1}, "ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.http.api_response.ApiResponse": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1}, "ringcentral.http.api_response.create_response": {"tf": 1}, "ringcentral.http.api_response_test": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.platform.platform.API_VERSION": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 33, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}}, "df": 3}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_response.ApiResponse": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1}}, "df": 12}}}}}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}}, "df": 4}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.auth": {"tf": 1}, "ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}, "ringcentral.platform.auth.Auth": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.data": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.reset": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.access_token": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1.4142135623730951}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.auth": {"tf": 1}}, "df": 12, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}}, "df": 3}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.test.spy.Spy.args": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception": {"tf": 1}, "ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}, "ringcentral.http.api_exception_test": {"tf": 1}, "ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}}, "df": 8}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}}, "df": 4}}}}, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1}}, "df": 3}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.refreshSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.refreshError": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.loginSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.loginError": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.logoutSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.logoutError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}}, "df": 27}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.json_object": {"tf": 1}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}, "ringcentral.http.json_object.JsonObject": {"tf": 1}, "ringcentral.http.json_object.safe_name": {"tf": 1}, "ringcentral.http.json_object.unfold": {"tf": 1}}, "df": 10, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object.JsonObject": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}}, "df": 5}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.safe_name": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.sdk": {"tf": 1}, "ringcentral.sdk.SDK": {"tf": 1.4142135623730951}, "ringcentral.sdk.SDK.__init__": {"tf": 1.4142135623730951}, "ringcentral.sdk.SDK.platform": {"tf": 1.4142135623730951}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1.4142135623730951}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1.4142135623730951}, "ringcentral.sdk_test": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}}, "df": 10}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 29}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.test.spy": {"tf": 1}, "ringcentral.test.spy.Spy": {"tf": 1.4142135623730951}, "ringcentral.test.spy.Spy.args": {"tf": 1.4142135623730951}}, "df": 3}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 19, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}}, "df": 1}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform": {"tf": 1}, "ringcentral.platform.auth": {"tf": 1}, "ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}, "ringcentral.platform.auth.Auth": {"tf": 1}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.auth.Auth.data": {"tf": 1}, "ringcentral.platform.auth.Auth.reset": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.events": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.events.Events.refreshSuccess": {"tf": 1}, "ringcentral.platform.events.Events.refreshError": {"tf": 1}, "ringcentral.platform.events.Events.loginSuccess": {"tf": 1}, "ringcentral.platform.events.Events.loginError": {"tf": 1}, "ringcentral.platform.events.Events.logoutSuccess": {"tf": 1}, "ringcentral.platform.events.Events.logoutError": {"tf": 1}, "ringcentral.platform.platform": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.API_VERSION": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.auth": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logout": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.get": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.post": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.put": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.patch": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.delete": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1.4142135623730951}, "ringcentral.sdk.SDK.platform": {"tf": 1}}, "df": 64}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.post": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.put": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.platform.Platform.patch": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}}, "df": 1}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object": {"tf": 1}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}, "ringcentral.http.json_object.JsonObject": {"tf": 1}, "ringcentral.http.json_object.safe_name": {"tf": 1}, "ringcentral.http.json_object.unfold": {"tf": 1}}, "df": 5}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.multipart_builder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.http.multipart_builder_test": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1.4142135623730951}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}}, "df": 21, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}}, "df": 8}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 7, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}}, "df": 2}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}}, "df": 2}}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}}, "df": 5, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {"ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 29, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket": {"tf": 1}, "ringcentral.websocket.events": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}, "ringcentral.websocket.web_socket_client": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 46, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}}, "df": 16}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 13}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 13}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.client.Client.load_response": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}}, "df": 6, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.loginSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.loginError": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.logoutSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.logoutError": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.safe_name": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.API_VERSION": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}}, "df": 1}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"0": {"docs": {"ringcentral.platform.platform.API_VERSION": {"tf": 1}}, "df": 1}, "1": {"0": {"docs": {"ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1}}, "df": 1}, "2": {"4": {"5": {"docs": {"ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"9": {"4": {"1": {"3": {"5": {"0": {"4": {"5": {"2": {"4": {"8": {"docs": {"ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"6": {"0": {"0": {"docs": {"ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"0": {"4": {"8": {"0": {"0": {"docs": {"ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"4": {"5": {"8": {"0": {"2": {"2": {"9": {"3": {"docs": {"ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.body": {"tf": 2}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.refreshSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.refreshError": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.loginSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.loginError": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.logoutSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.logoutError": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.API_VERSION": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1.4142135623730951}}, "df": 33, "x": {"2": {"7": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 2}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 2}, "ringcentral.http.client_test.body": {"tf": 2.8284271247461903}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 7.874007874011811}, "ringcentral.platform.events.Events.refreshSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.refreshError": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.loginSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.loginError": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.logoutSuccess": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events.logoutError": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.API_VERSION": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 4.242640687119285}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1.4142135623730951}}, "df": 33}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "x": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.json_headers": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_response_test.multipart_headers": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_response_test.multipart_headers": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.client_test.body": {"tf": 1}}, "df": 1}, "z": {"docs": {"ringcentral.http.client_test.body": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {"ringcentral.http.client_test.body": {"tf": 1}}, "df": 1}, "r": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "x": {"docs": {"ringcentral.http.client_test.body": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}, "f": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}, "s": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.refreshSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.refreshError": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"ringcentral.platform.platform.URL_PREFIX": {"tf": 1}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.loginSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.loginError": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events.logoutSuccess": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events.logoutError": {"tf": 1}}, "df": 1}}}}}}}}}}}, "v": {"1": {"docs": {"ringcentral.platform.platform.API_VERSION": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "signature": {"root": {"1": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}}, "df": 1}, "2": {"0": {"0": {"docs": {"ringcentral.test.testcase.TestCase.add": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"6": {"0": {"0": {"docs": {"ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 2}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.__init__": {"tf": 3.4641016151377544}, "ringcentral.platform.platform.Platform.login_url": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.login": {"tf": 3.7416573867739413}, "ringcentral.sdk.SDK.__init__": {"tf": 2}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1.4142135623730951}}, "df": 8}, "docs": {}, "df": 0}, "5": {"4": {"0": {"0": {"0": {"docs": {"ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"ringcentral.core.is_third": {"tf": 2.6457513110645907}, "ringcentral.core.urlencode": {"tf": 3.1622776601683795}, "ringcentral.core.iterator": {"tf": 3.1622776601683795}, "ringcentral.core.base64encode": {"tf": 3.1622776601683795}, "ringcentral.core.tostr": {"tf": 3.1622776601683795}, "ringcentral.core.clean_decrypted": {"tf": 3.1622776601683795}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 4}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 3.1622776601683795}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.get_prepared_request_details": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 4.47213595499958}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 3.1622776601683795}, "ringcentral.http.api_response.create_response": {"tf": 3.7416573867739413}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 3.1622776601683795}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 3.1622776601683795}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 3.1622776601683795}, "ringcentral.http.api_response_test.create_response": {"tf": 4.69041575982343}, "ringcentral.http.client.Client.send": {"tf": 3.7416573867739413}, "ringcentral.http.client.Client.load_response": {"tf": 3.7416573867739413}, "ringcentral.http.client.Client.create_request": {"tf": 7.3484692283495345}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 3.1622776601683795}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 3.1622776601683795}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 3.1622776601683795}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 3.1622776601683795}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 3.1622776601683795}, "ringcentral.http.json_object.safe_name": {"tf": 3.1622776601683795}, "ringcentral.http.json_object.unfold": {"tf": 3.1622776601683795}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 2.8284271247461903}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 3.7416573867739413}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 3.7416573867739413}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 3.1622776601683795}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 3.1622776601683795}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 4.898979485566356}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 4.898979485566356}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 4.242640687119285}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 3.1622776601683795}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 3.1622776601683795}, "ringcentral.platform.auth.Auth.set_data": {"tf": 4.242640687119285}, "ringcentral.platform.auth.Auth.data": {"tf": 3.1622776601683795}, "ringcentral.platform.auth.Auth.reset": {"tf": 3.1622776601683795}, "ringcentral.platform.auth.Auth.access_token": {"tf": 3.1622776601683795}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 3.1622776601683795}, "ringcentral.platform.auth.Auth.token_type": {"tf": 3.1622776601683795}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 3.1622776601683795}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 3.1622776601683795}, "ringcentral.platform.platform.Platform.__init__": {"tf": 9.16515138991168}, "ringcentral.platform.platform.Platform.auth": {"tf": 3.1622776601683795}, "ringcentral.platform.platform.Platform.create_url": {"tf": 6.164414002968976}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 3.1622776601683795}, "ringcentral.platform.platform.Platform.login_url": {"tf": 6.6332495807108}, "ringcentral.platform.platform.Platform.login": {"tf": 9.38083151964686}, "ringcentral.platform.platform.Platform.refresh": {"tf": 3.1622776601683795}, "ringcentral.platform.platform.Platform.logout": {"tf": 3.1622776601683795}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 4.69041575982343}, "ringcentral.platform.platform.Platform.send_request": {"tf": 4.69041575982343}, "ringcentral.platform.platform.Platform.get": {"tf": 6.164414002968976}, "ringcentral.platform.platform.Platform.post": {"tf": 7.211102550927978}, "ringcentral.platform.platform.Platform.put": {"tf": 7.211102550927978}, "ringcentral.platform.platform.Platform.patch": {"tf": 7.211102550927978}, "ringcentral.platform.platform.Platform.delete": {"tf": 7.211102550927978}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 3.7416573867739413}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 3.7416573867739413}, "ringcentral.sdk.SDK.__init__": {"tf": 7.681145747868608}, "ringcentral.sdk.SDK.platform": {"tf": 3.1622776601683795}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 3.1622776601683795}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 3.1622776601683795}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 3.1622776601683795}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 3.4641016151377544}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 3.7416573867739413}, "ringcentral.test.testcase.TestCase.add": {"tf": 5.830951894845301}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 3.7416573867739413}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 3.7416573867739413}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 5.656854249492381}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 5.477225575051661}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 6.164414002968976}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 3.7416573867739413}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 2.8284271247461903}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 4.242640687119285}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 4.242640687119285}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 4.69041575982343}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 2.8284271247461903}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 4.242640687119285}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 4.242640687119285}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 4.242640687119285}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 3.1622776601683795}}, "df": 122, "s": {"2": {"5": {"6": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}, "ringcentral.core.tostr": {"tf": 1}, "ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.http.api_exception.ApiException.api_response": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.load_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.auth.Auth.data": {"tf": 1}, "ringcentral.platform.auth.Auth.reset": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1}, "ringcentral.platform.platform.Platform.auth": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.sdk.SDK.platform": {"tf": 1}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1}}, "df": 103}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}}, "df": 4}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_response.create_response": {"tf": 1}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}}, "df": 3}}, "e": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}}, "df": 7}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 2}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.core.iterator": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}}, "df": 2}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}}, "df": 8}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_response.get_prepared_request_details": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.load_response": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}}, "df": 6}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}}, "df": 4}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_response.create_response": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}}, "df": 6}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {"ringcentral.http.json_object.safe_name": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception.ApiException.__init__": {"tf": 1}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.post": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.put": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.patch": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.delete": {"tf": 1.7320508075688772}, "ringcentral.sdk.SDK.__init__": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}}, "df": 20}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 4}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}}, "df": 8}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_response_test.create_response": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}}, "df": 7}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}}, "df": 6}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1}}, "df": 23}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.test.testcase.TestCase.add": {"tf": 1}}, "df": 10}, "i": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 5}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}}, "df": 6}}}}}, "d": {"docs": {"ringcentral.http.json_object.unfold": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ringcentral.platform.auth.Auth.set_data": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}}, "df": 2}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}}, "df": 7}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}}, "df": 2}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.__init__": {"tf": 1}, "ringcentral.sdk.SDK.__init__": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1}, "ringcentral.platform.platform.Platform.get": {"tf": 1}, "ringcentral.platform.platform.Platform.post": {"tf": 1}, "ringcentral.platform.platform.Platform.put": {"tf": 1}, "ringcentral.platform.platform.Platform.patch": {"tf": 1}, "ringcentral.platform.platform.Platform.delete": {"tf": 1}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}}, "df": 9}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}}, "df": 2}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1}}, "df": 7}}}}}}, "j": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}}, "df": 2}, "n": {"docs": {"ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1}}, "df": 2}}, "w": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "b": {"docs": {"ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1}}, "df": 1}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}}, "df": 6}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}}, "df": 6, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 1}}}}}}}}}}, "doc": {"root": {"0": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}, "2": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}, "3": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}, "docs": {"ringcentral": {"tf": 1.7320508075688772}, "ringcentral.core": {"tf": 1.7320508075688772}, "ringcentral.core.is_third": {"tf": 1.7320508075688772}, "ringcentral.core.urlencode": {"tf": 5.0990195135927845}, "ringcentral.core.iterator": {"tf": 4.795831523312719}, "ringcentral.core.base64encode": {"tf": 3.4641016151377544}, "ringcentral.core.tostr": {"tf": 1.7320508075688772}, "ringcentral.core.clean_decrypted": {"tf": 3.4641016151377544}, "ringcentral.http": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception.ApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception.ApiException.__init__": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception.ApiException.api_response": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception_test": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception_test.json_headers": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 5.656854249492381}, "ringcentral.http.api_exception_test.TestApiException.test_simple": {"tf": 1.7320508075688772}, "ringcentral.http.api_response": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.get_prepared_request_details": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.__init__": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.ok": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.raw": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.body": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.text": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.json_dict": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.json": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.multipart": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.error": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.request": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.ApiResponse.response": {"tf": 1.7320508075688772}, "ringcentral.http.api_response.create_response": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.multipart_headers": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 5.656854249492381}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_with_error": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse.test_multipart_bad_response": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.create_response": {"tf": 1.7320508075688772}, "ringcentral.http.client": {"tf": 1.7320508075688772}, "ringcentral.http.client.Client": {"tf": 1.7320508075688772}, "ringcentral.http.client.Client.send": {"tf": 3.605551275463989}, "ringcentral.http.client.Client.load_response": {"tf": 1.7320508075688772}, "ringcentral.http.client.Client.create_request": {"tf": 3.7416573867739413}, "ringcentral.http.client_test": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.body": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 5.656854249492381}, "ringcentral.http.client_test.TestClient.test_create_request_with_query_string": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_url": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_json_default": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient.test_create_request_encode_body_alternative": {"tf": 1.7320508075688772}, "ringcentral.http.json_object": {"tf": 1.7320508075688772}, "ringcentral.http.json_object.PYTHON_KEYWORDS": {"tf": 1.7320508075688772}, "ringcentral.http.json_object.JsonObject": {"tf": 1.7320508075688772}, "ringcentral.http.json_object.safe_name": {"tf": 1.7320508075688772}, "ringcentral.http.json_object.unfold": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder.MultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder.MultipartBuilder.__init__": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder.MultipartBuilder.set_multipart_mixed": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder.MultipartBuilder.set_body": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder.MultipartBuilder.body": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder.MultipartBuilder.contents": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 6.324555320336759}, "ringcentral.http.multipart_builder.MultipartBuilder.request": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.MockPlatform": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.MockPlatform.create_url": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 5.656854249492381}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_add": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder.test_multipart_mixed": {"tf": 1.7320508075688772}, "ringcentral.platform": {"tf": 1.7320508075688772}, "ringcentral.platform.auth": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.RELEASE_TIMEOUT": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.set_data": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.data": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.reset": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.access_token": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.refresh_token": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.token_type": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.access_token_valid": {"tf": 1.7320508075688772}, "ringcentral.platform.auth.Auth.refresh_token_valid": {"tf": 1.7320508075688772}, "ringcentral.platform.events": {"tf": 1.7320508075688772}, "ringcentral.platform.events.Events": {"tf": 3.4641016151377544}, "ringcentral.platform.events.Events.refreshSuccess": {"tf": 1.7320508075688772}, "ringcentral.platform.events.Events.refreshError": {"tf": 1.7320508075688772}, "ringcentral.platform.events.Events.loginSuccess": {"tf": 1.7320508075688772}, "ringcentral.platform.events.Events.loginError": {"tf": 1.7320508075688772}, "ringcentral.platform.events.Events.logoutSuccess": {"tf": 1.7320508075688772}, "ringcentral.platform.events.Events.logoutError": {"tf": 1.7320508075688772}, "ringcentral.platform.platform": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.ACCOUNT_ID": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.ACCOUNT_PREFIX": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.URL_PREFIX": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.TOKEN_ENDPOINT": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.REVOKE_ENDPOINT": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.AUTHORIZE_ENDPOINT": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.API_VERSION": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.ACCESS_TOKEN_TTL": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.REFRESH_TOKEN_TTL": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.KNOWN_PREFIXES": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.__init__": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.auth": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 4.69041575982343}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 3.3166247903554}, "ringcentral.platform.platform.Platform.login_url": {"tf": 3.605551275463989}, "ringcentral.platform.platform.Platform.login": {"tf": 5.196152422706632}, "ringcentral.platform.platform.Platform.refresh": {"tf": 4.358898943540674}, "ringcentral.platform.platform.Platform.logout": {"tf": 4.358898943540674}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 4.58257569495584}, "ringcentral.platform.platform.Platform.send_request": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.get": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.post": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.put": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.patch": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.delete": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 5.656854249492381}, "ringcentral.platform.platform_test.TestPlatform.test_key": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_login_code": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_login_fail": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_login_code_redirect": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_refresh_with_outdated_token": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_logged_in": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_manual_refresh": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.skip_test_automatic_refresh": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_logout": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_api_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_api_url_custom_prefixes": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_delete_with_body": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform.test_delete_without_body": {"tf": 1.7320508075688772}, "ringcentral.sdk": {"tf": 1.7320508075688772}, "ringcentral.sdk.SDK": {"tf": 1.7320508075688772}, "ringcentral.sdk.SDK.__init__": {"tf": 1.7320508075688772}, "ringcentral.sdk.SDK.platform": {"tf": 1.7320508075688772}, "ringcentral.sdk.SDK.create_web_socket_client": {"tf": 1.7320508075688772}, "ringcentral.sdk.SDK.create_multipart_builder": {"tf": 1.7320508075688772}, "ringcentral.sdk_test": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 5.656854249492381}, "ringcentral.sdk_test.TestSDK.test_instance": {"tf": 1.7320508075688772}, "ringcentral.test": {"tf": 1.7320508075688772}, "ringcentral.test.spy": {"tf": 1.7320508075688772}, "ringcentral.test.spy.Spy": {"tf": 1.7320508075688772}, "ringcentral.test.spy.Spy.args": {"tf": 1.7320508075688772}, "ringcentral.test.testcase": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 5.656854249492381}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.get_sdk": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.add": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.authentication_mock": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.logout_mock": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.presence_subscription_mock": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.refresh_mock": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.subscription_mock": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.delete_mock_with_body": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.delete_mock_without_body": {"tf": 1.7320508075688772}, "ringcentral.websocket": {"tf": 1.7320508075688772}, "ringcentral.websocket.events": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 4.58257569495584}, "ringcentral.websocket.events.WebSocketEvents.getTokenError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.createConnectionError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.connectionCreated": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.closeConnectionError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.recoverConnectionError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.receiveMessage": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.sendMessageError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.connectionNotReady": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.createSubscriptionError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.updateSubscriptionError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.removeSubscriptionError": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.subscriptionCreated": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.subscriptionUpdated": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.subscriptionRemoved": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents.receiveSubscriptionNotification": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.__init__": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 3.4641016151377544}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 3.7416573867739413}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection_info": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 4.123105625617661}, "ringcentral.websocket.web_socket_client.WebSocketClient.recover_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 4}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 4}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 4.123105625617661}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 3.605551275463989}, "ringcentral.websocket.web_socket_subscription": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.__init__": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.on_message": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.register": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.add_events": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_events": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.subscribe": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.update": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.remove": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.set_subscription": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.get_subscription_info": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.reset": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription.destroy": {"tf": 1.7320508075688772}}, "df": 206, "e": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}}, "df": 2}, "d": {"docs": {"ringcentral.core.urlencode": {"tf": 1.7320508075688772}, "ringcentral.core.base64encode": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 2, "s": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}}, "d": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 2}}}}}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 19, "s": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 2}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "d": {"docs": {"ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}, "d": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 2.8284271247461903}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 13, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.events.Events": {"tf": 2}, "ringcentral.platform.platform.Platform": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 3.872983346207417}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}}, "df": 16, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 2}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 2}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 5}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}}, "df": 1, "h": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 2}, "ringcentral.core.iterator": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1.7320508075688772}, "ringcentral.core.clean_decrypted": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 3.872983346207417}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 3.872983346207417}, "ringcentral.http.client.Client.send": {"tf": 2.23606797749979}, "ringcentral.http.client.Client.create_request": {"tf": 2}, "ringcentral.http.client_test.TestClient": {"tf": 3.872983346207417}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 3.872983346207417}, "ringcentral.platform.platform.Platform.create_url": {"tf": 4}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.login_url": {"tf": 3}, "ringcentral.platform.platform.Platform.login": {"tf": 4.47213595499958}, "ringcentral.platform.platform.Platform.refresh": {"tf": 3.4641016151377544}, "ringcentral.platform.platform.Platform.logout": {"tf": 3.3166247903554}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 2.8284271247461903}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 3.872983346207417}, "ringcentral.sdk_test.TestSDK": {"tf": 3.872983346207417}, "ringcentral.test.testcase.TestCase": {"tf": 3.872983346207417}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 2}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 2}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 2.6457513110645907}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 2.6457513110645907}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 3.3166247903554}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 3.4641016151377544}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 3.4641016151377544}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 3.1622776601683795}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 2.8284271247461903}}, "df": 30, "i": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 12}, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.core.iterator": {"tf": 2.23606797749979}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 9}, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 2}}}}}}}}, "o": {"docs": {"ringcentral.core.urlencode": {"tf": 1.4142135623730951}, "ringcentral.core.base64encode": {"tf": 1}, "ringcentral.core.clean_decrypted": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 2.23606797749979}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2.23606797749979}, "ringcentral.http.client_test.TestClient": {"tf": 2.23606797749979}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2.23606797749979}, "ringcentral.sdk_test.TestSDK": {"tf": 2.23606797749979}, "ringcentral.test.testcase.TestCase": {"tf": 2.23606797749979}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 2}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 26, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.refresh": {"tf": 2.6457513110645907}, "ringcentral.platform.platform.Platform.logout": {"tf": 2}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 2}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 2.449489742783178}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}}, "df": 9, "s": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 2.8284271247461903}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2.8284271247461903}, "ringcentral.http.client_test.TestClient": {"tf": 2.8284271247461903}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2.8284271247461903}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2.8284271247461903}, "ringcentral.sdk_test.TestSDK": {"tf": 2.8284271247461903}, "ringcentral.test.testcase.TestCase": {"tf": 2.8284271247461903}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 8, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}}, "df": 7}}}}, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1}}}}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 11}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 3.872983346207417}}, "df": 1}}}}}}}}}, "g": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 2}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.core.urlencode": {"tf": 1.7320508075688772}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 3}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 2.6457513110645907}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 12}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 13}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 5}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 1, "n": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1}}}}, "s": {"2": {"5": {"6": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"ringcentral.core.urlencode": {"tf": 1.4142135623730951}, "ringcentral.core.base64encode": {"tf": 1.4142135623730951}, "ringcentral.core.clean_decrypted": {"tf": 1.4142135623730951}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 11, "t": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1.4142135623730951}, "ringcentral.core.clean_decrypted": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login_url": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.login": {"tf": 2.6457513110645907}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 3.872983346207417}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}}, "df": 10, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.core.urlencode": {"tf": 1.4142135623730951}, "ringcentral.core.base64encode": {"tf": 1.7320508075688772}, "ringcentral.core.clean_decrypted": {"tf": 1.7320508075688772}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 5}}}, "y": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}, "l": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}}, "df": 7}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.events.Events": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 7, "l": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 2}}, "df": 1}}}}}}}}}}, "b": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 2.6457513110645907}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 2.6457513110645907}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 2.23606797749979}}, "df": 4, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 1, "d": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "u": {"docs": {}, "df": 0, "p": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}}, "df": 10}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.7320508075688772}}, "df": 4, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.4142135623730951}}, "df": 5}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 2}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 3}}}}}, "o": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.platform.platform.Platform": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}}, "df": 3}}}}}, "d": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}}, "df": 1}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.7320508075688772}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 2.449489742783178}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2.449489742783178}, "ringcentral.http.client_test.TestClient": {"tf": 2.449489742783178}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2.449489742783178}, "ringcentral.sdk_test.TestSDK": {"tf": 2.449489742783178}, "ringcentral.test.testcase.TestCase": {"tf": 2.449489742783178}}, "df": 10, "t": {"docs": {}, "df": 0, "o": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 10, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}}, "df": 7, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 8}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}, "d": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.login": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.refresh": {"tf": 2}, "ringcentral.platform.platform.Platform.logout": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 2.449489742783178}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.7320508075688772}}, "df": 25}, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1.4142135623730951}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 2}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2}, "ringcentral.http.client_test.TestClient": {"tf": 2}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 2}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 3.1622776601683795}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2}, "ringcentral.sdk_test.TestSDK": {"tf": 2}, "ringcentral.test.testcase.TestCase": {"tf": 2}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 2.6457513110645907}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 21, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"ringcentral.core.iterator": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 13, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.iterator": {"tf": 1.7320508075688772}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.iterator": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.iterator": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.iterator": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.iterator": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}}, "df": 1}}, "a": {"docs": {"ringcentral.core.urlencode": {"tf": 1.7320508075688772}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 2}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2}, "ringcentral.http.client_test.TestClient": {"tf": 2}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2}, "ringcentral.platform.events.Events": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2}, "ringcentral.sdk_test.TestSDK": {"tf": 2}, "ringcentral.test.testcase.TestCase": {"tf": 2}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1.4142135623730951}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 3.605551275463989}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 19, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {"ringcentral.core.iterator": {"tf": 2}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.7320508075688772}}, "df": 22, "d": {"docs": {"ringcentral.core.urlencode": {"tf": 1.4142135623730951}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 2}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 22}, "y": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 18}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logout": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}}, "df": 6}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 2}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}}, "df": 1}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}}, "df": 8}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}, "s": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 11}}}, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 10, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}}, "df": 3, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 3}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 6}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}}}}}, "t": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 9}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.7320508075688772}}, "df": 5, "s": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 5}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 2.449489742783178}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}}, "df": 1}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}}, "df": 4}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.core.urlencode": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.create_url": {"tf": 3.4641016151377544}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 2}}, "df": 6, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"ringcentral.core.urlencode": {"tf": 2}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 2}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}}, "df": 5}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 1, "d": {"docs": {"ringcentral.core.iterator": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 8}, "r": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}}, "df": 5, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 2.23606797749979}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logout": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 13}}}}, "p": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 8, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}}, "df": 2}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 2}}, "df": 1, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}}, "df": 1, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 2}}, "df": 1, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}, "ringcentral.core.clean_decrypted": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}}, "df": 8}}}}}, "s": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1.4142135623730951}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 2.23606797749979}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.login": {"tf": 2}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 12}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 2}}}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.core.urlencode": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}}, "df": 4}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 2}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 2}}}}, "k": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}}, "df": 7}}}, "s": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": null}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": null}, "ringcentral.http.client_test.TestClient": {"tf": null}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": null}, "ringcentral.platform.platform_test.TestPlatform": {"tf": null}, "ringcentral.sdk_test.TestSDK": {"tf": null}, "ringcentral.test.testcase.TestCase": {"tf": null}}, "df": 7}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 3}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 2.6457513110645907}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 2.449489742783178}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.7320508075688772}}, "df": 6, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 2.23606797749979}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 9}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.7320508075688772}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 2}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 11, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7}}}, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}}, "df": 7}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 11, "s": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}}, "df": 3, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}}, "df": 1}}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 4}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.4142135623730951}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 3}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.base64encode": {"tf": 1}, "ringcentral.core.clean_decrypted": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 3}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 3}, "ringcentral.http.client_test.TestClient": {"tf": 3}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 3}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 3}, "ringcentral.sdk_test.TestSDK": {"tf": 3}, "ringcentral.test.testcase.TestCase": {"tf": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}}, "df": 15, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"6": {"4": {"docs": {"ringcentral.core.base64encode": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 9, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 4}}}}, "y": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 2.23606797749979}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2.23606797749979}, "ringcentral.http.client_test.TestClient": {"tf": 2.23606797749979}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2.23606797749979}, "ringcentral.sdk_test.TestSDK": {"tf": 2.23606797749979}, "ringcentral.test.testcase.TestCase": {"tf": 2.23606797749979}}, "df": 12}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 4}}, "o": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 3}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1.4142135623730951}, "ringcentral.core.base64encode": {"tf": 1}, "ringcentral.core.clean_decrypted": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}}, "df": 16}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 3}, "d": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 3}}}, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 2.449489742783178}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 2}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.core.clean_decrypted": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 1, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 1, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logout": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 5}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 1, "s": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 3}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 2}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 8}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.client.Client.send": {"tf": 2}, "ringcentral.http.client.Client.create_request": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.logout": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 8, "s": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1, "y": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 2}}, "df": 4}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.events.Events": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 2.8284271247461903}}, "df": 3, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}, "d": {"docs": {"ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 2}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 1, "d": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 14}, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}, "b": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 9}}}}}}}, "w": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}}, "df": 2}}, "o": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1, "r": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}}, "df": 12, "e": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 15}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {"ringcentral.http.api_exception.ApiException": {"tf": 1}}, "df": 1, "e": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 9, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 8}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.core.urlencode": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.http.api_exception.ApiException": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.create_request": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 2}, "ringcentral.platform.platform.Platform.login": {"tf": 2.8284271247461903}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_subscription.WebSocketSubscription": {"tf": 1}}, "df": 16, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.core.base64encode": {"tf": 1}}, "df": 1, "s": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.core.urlencode": {"tf": 1}, "ringcentral.core.iterator": {"tf": 1.4142135623730951}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 2.6457513110645907}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2.6457513110645907}, "ringcentral.http.client_test.TestClient": {"tf": 2.6457513110645907}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2.6457513110645907}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2.6457513110645907}, "ringcentral.sdk_test.TestSDK": {"tf": 2.6457513110645907}, "ringcentral.test.testcase.TestCase": {"tf": 2.6457513110645907}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 17}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.core.iterator": {"tf": 1.7320508075688772}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}}, "df": 3, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.core.iterator": {"tf": 1}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1}}, "df": 2}}}}}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.core.iterator": {"tf": 1}, "ringcentral.http.client.Client.send": {"tf": 1.4142135623730951}, "ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 8, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "r": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 7, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 11}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1}}, "df": 1, "s": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 2.8284271247461903}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.4142135623730951}}, "df": 12}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.login": {"tf": 2.6457513110645907}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 7}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 2, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 3}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.core.iterator": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}}, "df": 2}, "v": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 8}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ringcentral.http.client.Client.send": {"tf": 1.7320508075688772}, "ringcentral.http.client.Client.create_request": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2}}, "df": 3, "s": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.7320508075688772}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1.4142135623730951}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.core.iterator": {"tf": 1}, "ringcentral.http.api_exception_test.TestApiException": {"tf": 2.23606797749979}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2.23606797749979}, "ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 2.23606797749979}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2}, "ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2.23606797749979}, "ringcentral.sdk_test.TestSDK": {"tf": 2.23606797749979}, "ringcentral.test.testcase.TestCase": {"tf": 2.23606797749979}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1.4142135623730951}}, "df": 15, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 2.449489742783178}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 2.449489742783178}, "ringcentral.http.client_test.TestClient": {"tf": 2.449489742783178}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 2.449489742783178}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 2.449489742783178}, "ringcentral.sdk_test.TestSDK": {"tf": 2.449489742783178}, "ringcentral.test.testcase.TestCase": {"tf": 2.449489742783178}}, "df": 8}}}}, "a": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 2}}, "df": 10, "s": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 8}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}, "n": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.4142135623730951}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.4142135623730951}, "ringcentral.http.client_test.TestClient": {"tf": 1.4142135623730951}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.4142135623730951}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.4142135623730951}, "ringcentral.sdk_test.TestSDK": {"tf": 1.4142135623730951}, "ringcentral.test.testcase.TestCase": {"tf": 1.4142135623730951}}, "df": 7}}, "x": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}}, "df": 3}}}}}}}, "s": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.events.WebSocketEvents": {"tf": 3.872983346207417}}, "df": 9}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.create_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 9}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 8}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 3}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1.7320508075688772}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1.7320508075688772}, "ringcentral.http.client_test.TestClient": {"tf": 1.7320508075688772}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1.7320508075688772}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2.23606797749979}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1.7320508075688772}, "ringcentral.sdk_test.TestSDK": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase": {"tf": 1.7320508075688772}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}}, "df": 10}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.platform.platform.Platform.create_url": {"tf": 2}, "ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.refresh": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}, "ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}, "ringcentral.test.testcase.TestCase.__init__": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.7320508075688772}}, "df": 9}}}, "/": {"docs": {}, "df": 0, "o": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "b": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 3}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_new_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.get_web_socket_token": {"tf": 2}, "ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 2}, "ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1.7320508075688772}, "ringcentral.websocket.web_socket_client.WebSocketClient.send_message": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 2.23606797749979}, "ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1.7320508075688772}}, "df": 9, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.events.WebSocketEvents": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.remove_subscription": {"tf": 1}}, "df": 1}}, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1.4142135623730951}}, "df": 1}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.close_connection": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.4142135623730951}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.events.Events": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login_url": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.login": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.events.Events": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.logout": {"tf": 2}}, "df": 2, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ringcentral.platform.events.Events": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 2}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ringcentral.platform.platform.Platform.logged_in": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}, "ringcentral.platform.platform.Platform.logout": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ringcentral.http.api_exception_test.TestApiException": {"tf": 1}, "ringcentral.http.api_response_test.TestApiResponse": {"tf": 1}, "ringcentral.http.client_test.TestClient": {"tf": 1}, "ringcentral.http.multipart_builder_test.TestMultipartBuilder": {"tf": 1}, "ringcentral.platform.platform_test.TestPlatform": {"tf": 1}, "ringcentral.sdk_test.TestSDK": {"tf": 1}, "ringcentral.test.testcase.TestCase": {"tf": 1}}, "df": 7}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.create_subscription": {"tf": 1.4142135623730951}, "ringcentral.websocket.web_socket_client.WebSocketClient.update_subscription": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.websocket.web_socket_client.WebSocketClient.open_connection": {"tf": 1}}, "df": 1}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ringcentral.http.client.Client.create_request": {"tf": 1.4142135623730951}, "ringcentral.platform.platform.Platform.create_url": {"tf": 2}}, "df": 2}}}}}, "x": {"docs": {"ringcentral.platform.platform.Platform.inflate_request": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "s": {"docs": {"ringcentral.http.multipart_builder.MultipartBuilder.add": {"tf": 1.7320508075688772}}, "df": 1}}}, "j": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "t": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 2}}, "df": 1}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ringcentral.platform.platform.Platform.login": {"tf": 1}}, "df": 1}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + + // mirrored in build-search-index.js (part 1) + // Also split on html tags. this is a cheap heuristic, but good enough. + elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); + + let searchIndex; + if (docs._isPrebuiltIndex) { + console.info("using precompiled search index"); + searchIndex = elasticlunr.Index.load(docs); + } else { + console.time("building search index"); + // mirrored in build-search-index.js (part 2) + searchIndex = elasticlunr(function () { + this.pipeline.remove(elasticlunr.stemmer); + this.pipeline.remove(elasticlunr.stopWordFilter); + this.addField("qualname"); + this.addField("fullname"); + this.addField("annotation"); + this.addField("default_value"); + this.addField("signature"); + this.addField("bases"); + this.addField("doc"); + this.setRef("fullname"); + }); + for (let doc of docs) { + searchIndex.addDoc(doc); + } + console.timeEnd("building search index"); + } + + return (term) => searchIndex.search(term, { + fields: { + qualname: {boost: 4}, + fullname: {boost: 2}, + annotation: {boost: 2}, + default_value: {boost: 2}, + signature: {boost: 2}, + bases: {boost: 2}, + doc: {boost: 1}, + }, + expand: true + }); +})(); \ No newline at end of file diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 224a779..0000000 --- a/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[metadata] -description-file = README.md \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index afa1f31..0000000 --- a/setup.py +++ /dev/null @@ -1,16 +0,0 @@ -from setuptools import setup, find_packages - -VERSION = '0.9.2' - -setup( - name='ringcentral', - packages=find_packages(exclude=[]), - version=VERSION, - description='RingCentral Python SDK', - author='Kirill Konshin', - url='https://github.com/ringcentral/ringcentral-python', - download_url='https://github.com/ringcentral/ringcentral-python/tarball/%s' % VERSION, - keywords=['sdk', 'ringcentral', 'connect', 'platform', 'api', 'python'], - install_requires=[i.strip() for i in open('requirements.txt').readlines()], - classifiers=[] -)