Skip to main content

Exsited Python SDK

The Python SDK for the Exsited v4 REST API. Every endpoint is a function, client.<family>.<function>(...): you send a JSON request body (a dict or a JSON string) and get the JSON response body back. Authentication, token refresh, pagination helpers, retries and error handling are done for you.

Field names are the API's own. Nothing is renamed, case-converted or reshaped in either direction.

Requirements

  • Python 3.10 or later
  • An Exsited instance and an OAuth2 client (client id, client secret and redirect URI)

Install

The distribution and the import are both exsited:

pip install "exsited>=4,<5"

Configure credentials

Pass the credentials in yourself. The SDK does not read them from the environment, so load them from environment variables, a secret manager or a config file of your own and hand them to AuthConfig:

import os

from exsited import AuthConfig

auth = AuthConfig(
    client_name="default",
    base_url=os.environ.get("EXSITED_BASE_URL", "https://your-instance.example.com"),
    client_id=os.environ.get("EXSITED_CLIENT_ID", "your-client-id"),
    client_secret=os.environ.get("EXSITED_CLIENT_SECRET", "your-client-secret"),
    redirect_uri=os.environ.get("EXSITED_REDIRECT_URI", "https://your-redirect-uri"),
)

client_name is required and names the instance in logs and printed output. AuthConfig is validated at construction, and repr and str redact client_secret, so an instance is safe to log.

Behaviour such as timeouts, retries and logging is set on SdkConfig, passed as keywords. Every setting has a default:

from exsited import SdkConfig

config = SdkConfig(auth, max_retries=3, log_level="DEBUG")

First call

from exsited import ExsitedClient, SdkConfig

with ExsitedClient(SdkConfig(auth)) as client:
    response = client.accounts.get_accounts({"limit": 50})
    for account in response.data["data"]:
        print(account["id"], account["name"])

Use with, or call client.close_client() yourself. response.data and response.map are the decoded JSON, and response.json is the JSON text exactly as it arrived.

Errors

By default a failed call returns a response instead of raising, so you can read the error body. Pass raise_on_error=True to a call, or set it in SdkConfig, to raise SdkError instead:

response = client.accounts.get_account("NOPE")
print(response.error_code, response.request_id, response.get_error_messages())

client.accounts.get_account("NOPE", raise_on_error=True)  # raises SdkError

Pagination

Listings page by cursor or by offset. iter_records reads the shape from each page, so one call walks either kind:

from exsited import iter_records
from exsited.resources.accounts import accounts_urls

for account in iter_records(client, accounts_urls.ACCOUNTS, query_params={"limit": 100}):
    print(account["id"])

Documentation

Full documentation, with an example for every endpoint, is at https://exsited.mintlify.app

License

MIT. See LICENSE.

Metadata

Release files for exsited 4.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for exsited 4.0.3
File Size Uploaded Provenance Actions
exsited-4.0.3.tar.gz 261.6 kB Without provenance Details for exsited-4.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for exsited 4.0.3
File Interpreter ABI Platform Actions
exsited-4.0.3-py3-none-any.whl Python 3 none any Details for exsited-4.0.3-py3-none-any.whl

Total release size: 684.2 kB

Release files / exsited-4.0.3.tar.gz

Download URL exsited-4.0.3.tar.gz
Size 261.6 kB
Tags Source
SHA-256 checksum
How to use checksums
40847ed835c39a14608675135d5518f02771ff5a2a08163ec2956448164704a0
BLAKE2b-256 checksum
How to use checksums
d8f7f62d2a1513f87a53c4b13fdf03964a6282dd9e76a9c12e95e8826dae6a53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / exsited-4.0.3-py3-none-any.whl

Download URL exsited-4.0.3-py3-none-any.whl
Size 422.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
18d9e2f4007edca45919bd5715203aa7d74846091135fb3860bc85eac201ce97
BLAKE2b-256 checksum
How to use checksums
933b5fcb48d89b62f2f2601c9020c869e942410d1ea739fbe40ce51595ca3afc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Security for exsited 4.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

4.0.3 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page