khoros


Namekhoros JSON
Version 5.4.0 PyPI version JSON
download
home_pagehttps://github.com/jeffshurtliff/khoros
SummaryUseful tools and utilities to assist in managing a Khoros Communities (formerly Lithium) environment.
upload_time2023-11-01 22:23:26
maintainer
docs_urlNone
authorJeff Shurtliff
requires_python>=3.6
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Python SDK for Khoros Communities
The **khoros** library acts as a Python software development kit (SDK) to administer and manage 
[Khoros Communities](https://khoros.com/platform/communities) (formerly Lithium) online community platforms.

<table>
    <tr>
        <td>Latest Stable Release</td>
        <td>
            <a href='https://pypi.org/project/khoros/'>
                <img alt="PyPI" src="https://img.shields.io/pypi/v/khoros">
            </a>
        </td>
    </tr>
    <tr>
        <td>Latest Beta/RC Release</td>
        <td>
            <a href='https://pypi.org/project/khoros/#history'>
                <img alt="PyPI" src="https://img.shields.io/badge/pypi-5.4.0rc3-blue">
            </a>
        </td>
    </tr>
    <tr>
        <td>Build Status</td>
        <td>
            <a href="https://github.com/jeffshurtliff/khoros/blob/master/.github/workflows/pythonpackage.yml">
                <img alt="GitHub Workflow Status" 
                src="https://img.shields.io/github/actions/workflow/status/jeffshurtliff/khoros/pythonpackage.yml?branch=master">
            </a>
        </td>
    </tr>
    <tr>
        <td>Supported Versions</td>
        <td>
            <a href='https://pypi.org/project/khoros/'>
                <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/khoros">
            </a>
        </td>
    </tr>
    <tr>
        <td>Code Coverage</td>
        <td>
            <a href="https://codecov.io/gh/jeffshurtliff/khoros">
                <img src="https://codecov.io/gh/jeffshurtliff/khoros/branch/master/graph/badge.svg" />
            </a>
        </td>
    </tr>
    <tr>
        <td>CodeFactor Grade</td>
        <td>
            <a href="https://lgtm.com/projects/g/jeffshurtliff/khoros">
            <img alt="CodeFactor Grade" src="https://img.shields.io/codefactor/grade/github/jeffshurtliff/khoros">
            </a>
        </td>
    </tr>
    <tr>
        <td>Documentation</td>
        <td>
            <a href='https://khoros.readthedocs.io/en/latest/?badge=latest'>
                <img src='https://readthedocs.org/projects/khoros/badge/?version=latest' alt='Documentation Status' /><br />
                <img src="https://raw.githubusercontent.com/jeffshurtliff/khoros/master/docs/_static/interrogate_badge.svg">
            </a>
        </td>
    </tr>
    <tr>
        <td>Security Audits</td>
        <td>
            <a href="https://github.com/marketplace/actions/python-security-check-using-bandit">
                <img alt="Bandit" src="https://img.shields.io/badge/security-bandit-yellow.svg">
            </a><br />
            <a href="https://github.com/marketplace/actions/pycharm-python-security-scanner">
                <img alt="PyCharm Security Scanner" src="https://img.shields.io/badge/security-pycharm%20security%20scanner-green">
            </a>
        </td>
    </tr>
    <tr>
        <td>License</td>
        <td>
            <a href="https://github.com/jeffshurtliff/khoros/blob/master/LICENSE">
                <img alt="License (GitHub)" src="https://img.shields.io/github/license/jeffshurtliff/khoros">
            </a>
        </td>
    </tr>
    <tr>
        <td style="vertical-align: top;">Issues</td>
        <td>
            <a href="https://github.com/jeffshurtliff/khoros/issues">
                <img style="margin-bottom:5px;" alt="GitHub open issues" src="https://img.shields.io/github/issues-raw/jeffshurtliff/khoros"><br />
            </a>
            <a href="https://github.com/jeffshurtliff/khoros/issues">
                <img alt="GitHub closed issues" src="https://img.shields.io/github/issues-closed-raw/jeffshurtliff/khoros">
            </a>
        </td>
    </tr>
    <tr>
        <td style="vertical-align: top;">Pull Requests</td>
        <td>
            <a href="https://github.com/jeffshurtliff/khoros/pulls">
                <img style="margin-bottom:5px;" alt="GitHub pull open requests" src="https://img.shields.io/github/issues-pr-raw/jeffshurtliff/khoros"><br />
            </a>
            <a href="https://github.com/jeffshurtliff/khoros/pulls">
                <img alt="GitHub closed pull requests" src="https://img.shields.io/github/issues-pr-closed-raw/jeffshurtliff/khoros">
            </a>
        </td>
    </tr>
</table>

## Installation
The package can be installed via pip using the syntax below.

```sh
pip install khoros --upgrade
```

You may also clone the repository and install from source using below.

```sh
git clone git://github.com/jeffshurtliff/khoros.git
cd khoros/
python setup.py install
```

## Change Log
The change log can be found in the [documentation](https://khoros.readthedocs.io/en/latest/changelog.html).

## Usage
This section provides basic usage instructions for the package.

### Importing the package
Rather than importing the base package, it is recommended that you import the primary `Khoros` class using the syntax
below.

```python
from khoros import Khoros
```

This recommendation is because the best practice is to use the name `khoros` when naming your object instance.

### Initializing a Khoros object instance
The primary `Khoros` object serves many purposes, the most important being to establish a connection to the Khoros
Community environment with which you intend to interact. As such, when initializing an instance of the `Khoros` object,
you will need to pass it the community URL, the credentials it will use and related information so that the connection
can be established.

The `Khoros` object can be initiated in two different ways:
* Passing the information directly into the object
* Leveraging a "helper" configuration file

#### Passing the information directly into the object
The community and connection information can be passed directly into the `Khoros` object when initializing it, as
demonstrated in the example below.

```python
# Using Session Key authentication
khoros = Khoros(
    community_url='https://community.example.com', 
    session_auth={'username': USERNAME, 'password': PASSWD}
)

# Using LithiumSSO Token authentication
khoros = Khoros(
    community_url='https://community.example.com', 
    sso={'sso.authentication_token': LITHIUM_SSO_TOKEN}
)
```

Alternatively, configuration settings can be passed at once using the `options` argument in the `Khoros` class, as 
shown below.

```python
my_settings = {
    'community_url': 'https://community.example.com',
    'community_name': 'mycommunity',
    'auth_type': 'session_auth',
    'session_auth': {
        'username': USERNAME,
        'password': PASSWD
    }
}
```

#### Leveraging a "helper" configuration file
As an alternative to passing the connection information to the `Khoros` class in the ways demonstrated above, a
"helper" configuration file in `yaml` or `json` format can be leveraged instead and passed to the `Khoros` class
when initializing the object.

This is an example of how the configuration file would be written:

```yaml
# Helper configuration file for the khoros package

# Define how to obtain the connection information
connection:
    community_url: https://community.example.com/
    tenant_id: example12345

    # Define the default authentication type to use
    default_auth_type: session_auth

    # Define the OAuth 2.0 credentials
    oauth2:
        client_id: FLFeNYob7XXXXXXXXXXXXXXXXXXXXZcWQEQHR5T6bo=
        client_secret: 1n0AIXXXXXXXXXXXXXXXXXXXX1udOtNaYnfJCeOszYw=
        redirect_url: http://redirect.community.example.com/getAccessToken

    # Define the session key authorization information
    session_auth:
        username: serviceaccount
        password: Ch@ng3ME!

    # Bulk Data API connection information
    bulk_data:
        community_id: example.prod
        client_id: ay0CXXXXXXXXXX/XXXX+XXXXXXXXXXXXX/XXXXX4KhQ=
        token: 2f25XXXXXXXXXXXXXXXXXXXXXXXXXa10dec04068
        europe: no

# Define the preferred format for API responses
prefer_json: yes
```

The file can then be referenced using the `helper` argument when initializing the object instance, as shown below.

```python
HELPER_FILE = "/path/to/helper.yml"
khoros = Khoros(helper=HELPER_FILE)
```

#### Utilizing environment variables
This third method of initializing a Khoros object instance is definitely the easiest, as it allows you to call
upon the `Khoros` class without passing any arguments, as shown below.

```python
from khoros import Khoros
khoros = Khoros()
```

This is accomplished by defining environment variables within your Operating System, either through the
[graphical UI](https://www.techjunkie.com/environment-variables-windows-10/), the command-line or within the Python
IDE using the `os` module and
[adding entries](https://able.bio/rhett/how-to-set-and-get-environment-variables-in-python--274rgt5) to the
`os.environ` dictionary, as shown below.

```python
import os
os.environ['KHOROS_URL'] = 'https://community.example.com'
```

| Environment Variable      | Description                                                                                                                                                | Example                                                |
|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|
| KHOROS_URL                | The base URL of the environment                                                                                                                            | `https://community.example.com`                        |
| KHOROS_TENANT_ID          | The [Tenant ID](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) associated with your environment                       | `abcde12345`                                           |
| KHOROS_DEFAULT_AUTH       | The default authentication method you wish to use                                                                                                          | `session_auth`                                         |
| KHOROS_OAUTH_ID           | The Client ID utilized by the [OAuth 2.0](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) authorization grant flow     | `FXXXXXXb7owXXXXXXo+jFlPXXXXXXjZcWQXXXXXX6bo=`         |
| KHOROS_OAUTH_SECRET       | The Client Secret utilized by the [OAuth 2.0](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) authorization grant flow | `1XXXXXX+/kZXXXXXXZZ9u1B5+1uXXXXXXfJCeOszYw=`          |
| KHOROS_OAUTH_REDIRECT_URL | The Redirect URL utilized by the [OAuth 2.0](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) authorization grant flow  | `http://redirect.community.example.com/getAccessToken` |
| KHOROS_SESSION_USER       | The username to use with [Session Key](https://developer.khoros.com/khoroscommunitydevdocs/docs/session-key) authentication                                | `apiuser`                                              |
| KHOROS_SESSION_PW         | The password to use with [Session Key](https://developer.khoros.com/khoroscommunitydevdocs/docs/session-key) authentication                                | `Ch@ng3M3!`                                            |
| KHOROS_PREFER_JSON        | Boolean string indicating if JSON responses are preferred                                                                                                  | `True`                                                 |
| KHOROS_LIQL_PRETTY        | Boolean string indicating if reader-friendly formatting should be used                                                                                     | `False`                                                |
| KHOROS_LIQL_TRACK_LSI     | Boolean string indicating if queries should be captured in Community Analytics search reports                                                              | `False`                                                |
| KHOROS_LIQL_ALWAYS_OK     | Boolean string indicating if all responses should return a `200 OK` status code                                                                            | `False`                                                |
| KHOROS_TRANSLATE_ERRORS   | Boolean string indicating if errors in API responses should be made more relevant where possible                                                           | `True`                                                 |

If you are leveraging this library on a macOS or Linux operating system (e.g. Ubuntu Server) then you can simply
add the environment variables you wish to define to either the `/etc/environment` file if you wish to apply
them to all users, or to your user's `~/.bashrc` file for them to only apply to your user.

```shell script
# Define environment variables for Khoros
KHOROS_URL='https://community.example.com'
```

>**Note:**
>You will generally need to log out and log back in for the changes to take effect.

If you are leveraging this library on a Windows operating system (e.g. Windows 10) then you can add environment
variables for your user via the Command Prompt (i.e. `cmd.exe`) or  PowerShell.

>**Note:**
>Using either of these two methods, you can add the environment variables using an interactive terminal
>window or using a batch/script file.  (Files should use the `.bat` or `.cmd` extension for the
>Command Prompt and `.ps1` for PowerShell.)

**Command Prompt**

```batch
@echo off
echo Defining the KHOROS_URL environment variable...
setx KHOROS_URL https://community.example.com
echo.
```

**PowerShell**

```powershell
"Defining the KHOROS_URL environment variable..."
[Environment]::SetEnvironmentVariable("KHOROS_URL", "https://community.example.com/", "User")
```

### Interacting with the Community APIs
Once the `Khoros` object instance has been initialized, it can be leveraged to interact with a Khoros Community
environment in many ways, which is fully documented in the official
[documentation](https://khoros.readthedocs.io/en/latest/). The example below demonstrates how a search can be
performed using LiQL to return information from the environment in JSON format.

```python
response_json = khoros.search(
    select_fields=('id', 'view_href'),
    from_source='messages',
    where_filter=('style', 'tkb'),
    order_by='last_post_time',
    limit=5
)
```

## Documentation
The documentation is located here: [https://khoros.readthedocs.io/en/latest/](https://khoros.readthedocs.io/en/latest/)

## License
[MIT License](https://github.com/jeffshurtliff/khoros/blob/master/LICENSE)

## Reporting Issues
Issues can be reported within the [GitHub repository](https://github.com/jeffshurtliff/khoros/issues).

## Roadmap
Upcoming improvements to the library can be found in the following locations: 
 - [2020 Roadmap on GitHub](https://github.com/jeffshurtliff/khoros/projects/1)
 - [2021 Roadmap on GitHub](https://github.com/jeffshurtliff/khoros/projects/2)
 - [2022 Roadmap on GitHub](https://github.com/jeffshurtliff/khoros/projects/3)

## Additional Resources
Additional resources for leveraging the Community APIs can be found in the official
[Khoros Developer Documentation](https://developer.khoros.com/khoroscommunitydevdocs).

## Donations
If you would like to donate to this project then you can do so using [this PayPal link](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=XDZ8M6UV6EFK6&item_name=Khoros+Python+API&currency_code=USD).

## Disclaimer
This package is considered unofficial and is in no way endorsed or supported by [Khoros, LLC](https://www.khoros.com).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jeffshurtliff/khoros",
    "name": "khoros",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "",
    "author": "Jeff Shurtliff",
    "author_email": "jeff.shurtliff@rsa.com",
    "download_url": "https://files.pythonhosted.org/packages/1f/11/084493db81d4163982cdadc3d0da856fb9fd1d83c19e89a616281ef28d60/khoros-5.4.0.tar.gz",
    "platform": null,
    "description": "# Python SDK for Khoros Communities\nThe **khoros** library acts as a Python software development kit (SDK) to administer and manage \n[Khoros Communities](https://khoros.com/platform/communities) (formerly Lithium) online community platforms.\n\n<table>\n    <tr>\n        <td>Latest Stable Release</td>\n        <td>\n            <a href='https://pypi.org/project/khoros/'>\n                <img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/khoros\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>Latest Beta/RC Release</td>\n        <td>\n            <a href='https://pypi.org/project/khoros/#history'>\n                <img alt=\"PyPI\" src=\"https://img.shields.io/badge/pypi-5.4.0rc3-blue\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>Build Status</td>\n        <td>\n            <a href=\"https://github.com/jeffshurtliff/khoros/blob/master/.github/workflows/pythonpackage.yml\">\n                <img alt=\"GitHub Workflow Status\" \n                src=\"https://img.shields.io/github/actions/workflow/status/jeffshurtliff/khoros/pythonpackage.yml?branch=master\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>Supported Versions</td>\n        <td>\n            <a href='https://pypi.org/project/khoros/'>\n                <img alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/khoros\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>Code Coverage</td>\n        <td>\n            <a href=\"https://codecov.io/gh/jeffshurtliff/khoros\">\n                <img src=\"https://codecov.io/gh/jeffshurtliff/khoros/branch/master/graph/badge.svg\" />\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>CodeFactor Grade</td>\n        <td>\n            <a href=\"https://lgtm.com/projects/g/jeffshurtliff/khoros\">\n            <img alt=\"CodeFactor Grade\" src=\"https://img.shields.io/codefactor/grade/github/jeffshurtliff/khoros\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>Documentation</td>\n        <td>\n            <a href='https://khoros.readthedocs.io/en/latest/?badge=latest'>\n                <img src='https://readthedocs.org/projects/khoros/badge/?version=latest' alt='Documentation Status' /><br />\n                <img src=\"https://raw.githubusercontent.com/jeffshurtliff/khoros/master/docs/_static/interrogate_badge.svg\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>Security Audits</td>\n        <td>\n            <a href=\"https://github.com/marketplace/actions/python-security-check-using-bandit\">\n                <img alt=\"Bandit\" src=\"https://img.shields.io/badge/security-bandit-yellow.svg\">\n            </a><br />\n            <a href=\"https://github.com/marketplace/actions/pycharm-python-security-scanner\">\n                <img alt=\"PyCharm Security Scanner\" src=\"https://img.shields.io/badge/security-pycharm%20security%20scanner-green\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>License</td>\n        <td>\n            <a href=\"https://github.com/jeffshurtliff/khoros/blob/master/LICENSE\">\n                <img alt=\"License (GitHub)\" src=\"https://img.shields.io/github/license/jeffshurtliff/khoros\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td style=\"vertical-align: top;\">Issues</td>\n        <td>\n            <a href=\"https://github.com/jeffshurtliff/khoros/issues\">\n                <img style=\"margin-bottom:5px;\" alt=\"GitHub open issues\" src=\"https://img.shields.io/github/issues-raw/jeffshurtliff/khoros\"><br />\n            </a>\n            <a href=\"https://github.com/jeffshurtliff/khoros/issues\">\n                <img alt=\"GitHub closed issues\" src=\"https://img.shields.io/github/issues-closed-raw/jeffshurtliff/khoros\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td style=\"vertical-align: top;\">Pull Requests</td>\n        <td>\n            <a href=\"https://github.com/jeffshurtliff/khoros/pulls\">\n                <img style=\"margin-bottom:5px;\" alt=\"GitHub pull open requests\" src=\"https://img.shields.io/github/issues-pr-raw/jeffshurtliff/khoros\"><br />\n            </a>\n            <a href=\"https://github.com/jeffshurtliff/khoros/pulls\">\n                <img alt=\"GitHub closed pull requests\" src=\"https://img.shields.io/github/issues-pr-closed-raw/jeffshurtliff/khoros\">\n            </a>\n        </td>\n    </tr>\n</table>\n\n## Installation\nThe package can be installed via pip using the syntax below.\n\n```sh\npip install khoros --upgrade\n```\n\nYou may also clone the repository and install from source using below.\n\n```sh\ngit clone git://github.com/jeffshurtliff/khoros.git\ncd khoros/\npython setup.py install\n```\n\n## Change Log\nThe change log can be found in the [documentation](https://khoros.readthedocs.io/en/latest/changelog.html).\n\n## Usage\nThis section provides basic usage instructions for the package.\n\n### Importing the package\nRather than importing the base package, it is recommended that you import the primary `Khoros` class using the syntax\nbelow.\n\n```python\nfrom khoros import Khoros\n```\n\nThis recommendation is because the best practice is to use the name `khoros` when naming your object instance.\n\n### Initializing a Khoros object instance\nThe primary `Khoros` object serves many purposes, the most important being to establish a connection to the Khoros\nCommunity environment with which you intend to interact. As such, when initializing an instance of the `Khoros` object,\nyou will need to pass it the community URL, the credentials it will use and related information so that the connection\ncan be established.\n\nThe `Khoros` object can be initiated in two different ways:\n* Passing the information directly into the object\n* Leveraging a \"helper\" configuration file\n\n#### Passing the information directly into the object\nThe community and connection information can be passed directly into the `Khoros` object when initializing it, as\ndemonstrated in the example below.\n\n```python\n# Using Session Key authentication\nkhoros = Khoros(\n    community_url='https://community.example.com', \n    session_auth={'username': USERNAME, 'password': PASSWD}\n)\n\n# Using LithiumSSO Token authentication\nkhoros = Khoros(\n    community_url='https://community.example.com', \n    sso={'sso.authentication_token': LITHIUM_SSO_TOKEN}\n)\n```\n\nAlternatively, configuration settings can be passed at once using the `options` argument in the `Khoros` class, as \nshown below.\n\n```python\nmy_settings = {\n    'community_url': 'https://community.example.com',\n    'community_name': 'mycommunity',\n    'auth_type': 'session_auth',\n    'session_auth': {\n        'username': USERNAME,\n        'password': PASSWD\n    }\n}\n```\n\n#### Leveraging a \"helper\" configuration file\nAs an alternative to passing the connection information to the `Khoros` class in the ways demonstrated above, a\n\"helper\" configuration file in `yaml` or `json` format can be leveraged instead and passed to the `Khoros` class\nwhen initializing the object.\n\nThis is an example of how the configuration file would be written:\n\n```yaml\n# Helper configuration file for the khoros package\n\n# Define how to obtain the connection information\nconnection:\n    community_url: https://community.example.com/\n    tenant_id: example12345\n\n    # Define the default authentication type to use\n    default_auth_type: session_auth\n\n    # Define the OAuth 2.0 credentials\n    oauth2:\n        client_id: FLFeNYob7XXXXXXXXXXXXXXXXXXXXZcWQEQHR5T6bo=\n        client_secret: 1n0AIXXXXXXXXXXXXXXXXXXXX1udOtNaYnfJCeOszYw=\n        redirect_url: http://redirect.community.example.com/getAccessToken\n\n    # Define the session key authorization information\n    session_auth:\n        username: serviceaccount\n        password: Ch@ng3ME!\n\n    # Bulk Data API connection information\n    bulk_data:\n        community_id: example.prod\n        client_id: ay0CXXXXXXXXXX/XXXX+XXXXXXXXXXXXX/XXXXX4KhQ=\n        token: 2f25XXXXXXXXXXXXXXXXXXXXXXXXXa10dec04068\n        europe: no\n\n# Define the preferred format for API responses\nprefer_json: yes\n```\n\nThe file can then be referenced using the `helper` argument when initializing the object instance, as shown below.\n\n```python\nHELPER_FILE = \"/path/to/helper.yml\"\nkhoros = Khoros(helper=HELPER_FILE)\n```\n\n#### Utilizing environment variables\nThis third method of initializing a Khoros object instance is definitely the easiest, as it allows you to call\nupon the `Khoros` class without passing any arguments, as shown below.\n\n```python\nfrom khoros import Khoros\nkhoros = Khoros()\n```\n\nThis is accomplished by defining environment variables within your Operating System, either through the\n[graphical UI](https://www.techjunkie.com/environment-variables-windows-10/), the command-line or within the Python\nIDE using the `os` module and\n[adding entries](https://able.bio/rhett/how-to-set-and-get-environment-variables-in-python--274rgt5) to the\n`os.environ` dictionary, as shown below.\n\n```python\nimport os\nos.environ['KHOROS_URL'] = 'https://community.example.com'\n```\n\n| Environment Variable      | Description                                                                                                                                                | Example                                                |\n|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|\n| KHOROS_URL                | The base URL of the environment                                                                                                                            | `https://community.example.com`                        |\n| KHOROS_TENANT_ID          | The [Tenant ID](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) associated with your environment                       | `abcde12345`                                           |\n| KHOROS_DEFAULT_AUTH       | The default authentication method you wish to use                                                                                                          | `session_auth`                                         |\n| KHOROS_OAUTH_ID           | The Client ID utilized by the [OAuth 2.0](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) authorization grant flow     | `FXXXXXXb7owXXXXXXo+jFlPXXXXXXjZcWQXXXXXX6bo=`         |\n| KHOROS_OAUTH_SECRET       | The Client Secret utilized by the [OAuth 2.0](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) authorization grant flow | `1XXXXXX+/kZXXXXXXZZ9u1B5+1uXXXXXXfJCeOszYw=`          |\n| KHOROS_OAUTH_REDIRECT_URL | The Redirect URL utilized by the [OAuth 2.0](https://developer.khoros.com/khoroscommunitydevdocs/docs/oauth-authorization-grant) authorization grant flow  | `http://redirect.community.example.com/getAccessToken` |\n| KHOROS_SESSION_USER       | The username to use with [Session Key](https://developer.khoros.com/khoroscommunitydevdocs/docs/session-key) authentication                                | `apiuser`                                              |\n| KHOROS_SESSION_PW         | The password to use with [Session Key](https://developer.khoros.com/khoroscommunitydevdocs/docs/session-key) authentication                                | `Ch@ng3M3!`                                            |\n| KHOROS_PREFER_JSON        | Boolean string indicating if JSON responses are preferred                                                                                                  | `True`                                                 |\n| KHOROS_LIQL_PRETTY        | Boolean string indicating if reader-friendly formatting should be used                                                                                     | `False`                                                |\n| KHOROS_LIQL_TRACK_LSI     | Boolean string indicating if queries should be captured in Community Analytics search reports                                                              | `False`                                                |\n| KHOROS_LIQL_ALWAYS_OK     | Boolean string indicating if all responses should return a `200 OK` status code                                                                            | `False`                                                |\n| KHOROS_TRANSLATE_ERRORS   | Boolean string indicating if errors in API responses should be made more relevant where possible                                                           | `True`                                                 |\n\nIf you are leveraging this library on a macOS or Linux operating system (e.g. Ubuntu Server) then you can simply\nadd the environment variables you wish to define to either the `/etc/environment` file if you wish to apply\nthem to all users, or to your user's `~/.bashrc` file for them to only apply to your user.\n\n```shell script\n# Define environment variables for Khoros\nKHOROS_URL='https://community.example.com'\n```\n\n>**Note:**\n>You will generally need to log out and log back in for the changes to take effect.\n\nIf you are leveraging this library on a Windows operating system (e.g. Windows 10) then you can add environment\nvariables for your user via the Command Prompt (i.e. `cmd.exe`) or  PowerShell.\n\n>**Note:**\n>Using either of these two methods, you can add the environment variables using an interactive terminal\n>window or using a batch/script file.  (Files should use the `.bat` or `.cmd` extension for the\n>Command Prompt and `.ps1` for PowerShell.)\n\n**Command Prompt**\n\n```batch\n@echo off\necho Defining the KHOROS_URL environment variable...\nsetx KHOROS_URL https://community.example.com\necho.\n```\n\n**PowerShell**\n\n```powershell\n\"Defining the KHOROS_URL environment variable...\"\n[Environment]::SetEnvironmentVariable(\"KHOROS_URL\", \"https://community.example.com/\", \"User\")\n```\n\n### Interacting with the Community APIs\nOnce the `Khoros` object instance has been initialized, it can be leveraged to interact with a Khoros Community\nenvironment in many ways, which is fully documented in the official\n[documentation](https://khoros.readthedocs.io/en/latest/). The example below demonstrates how a search can be\nperformed using LiQL to return information from the environment in JSON format.\n\n```python\nresponse_json = khoros.search(\n    select_fields=('id', 'view_href'),\n    from_source='messages',\n    where_filter=('style', 'tkb'),\n    order_by='last_post_time',\n    limit=5\n)\n```\n\n## Documentation\nThe documentation is located here: [https://khoros.readthedocs.io/en/latest/](https://khoros.readthedocs.io/en/latest/)\n\n## License\n[MIT License](https://github.com/jeffshurtliff/khoros/blob/master/LICENSE)\n\n## Reporting Issues\nIssues can be reported within the [GitHub repository](https://github.com/jeffshurtliff/khoros/issues).\n\n## Roadmap\nUpcoming improvements to the library can be found in the following locations: \n - [2020 Roadmap on GitHub](https://github.com/jeffshurtliff/khoros/projects/1)\n - [2021 Roadmap on GitHub](https://github.com/jeffshurtliff/khoros/projects/2)\n - [2022 Roadmap on GitHub](https://github.com/jeffshurtliff/khoros/projects/3)\n\n## Additional Resources\nAdditional resources for leveraging the Community APIs can be found in the official\n[Khoros Developer Documentation](https://developer.khoros.com/khoroscommunitydevdocs).\n\n## Donations\nIf you would like to donate to this project then you can do so using [this PayPal link](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=XDZ8M6UV6EFK6&item_name=Khoros+Python+API&currency_code=USD).\n\n## Disclaimer\nThis package is considered unofficial and is in no way endorsed or supported by [Khoros, LLC](https://www.khoros.com).\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Useful tools and utilities to assist in managing a Khoros Communities (formerly Lithium) environment.",
    "version": "5.4.0",
    "project_urls": {
        "Changelog": "https://khoros.readthedocs.io/en/latest/changelog.html",
        "Documentation": "https://khoros.readthedocs.io/",
        "Homepage": "https://github.com/jeffshurtliff/khoros",
        "Issue Tracker": "https://github.com/jeffshurtliff/khoros/issues",
        "Khoros Dev Docs": "https://developer.khoros.com/khoroscommunitydevdocs"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1f11084493db81d4163982cdadc3d0da856fb9fd1d83c19e89a616281ef28d60",
                "md5": "fbeb978d778abaa126fd849f71b81589",
                "sha256": "4f5f9f7ac74f084aeb070428d381a11df36980bd7a9622db1feae2ffc3e55144"
            },
            "downloads": -1,
            "filename": "khoros-5.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "fbeb978d778abaa126fd849f71b81589",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 169432,
            "upload_time": "2023-11-01T22:23:26",
            "upload_time_iso_8601": "2023-11-01T22:23:26.165024Z",
            "url": "https://files.pythonhosted.org/packages/1f/11/084493db81d4163982cdadc3d0da856fb9fd1d83c19e89a616281ef28d60/khoros-5.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-01 22:23:26",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jeffshurtliff",
    "github_project": "khoros",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "khoros"
}
        
Elapsed time: 0.13508s