Skip to main content

Stateset Python SDK

A comprehensive Python SDK for the Stateset API, providing easy access to all Stateset resources including returns, warranties, orders, inventory management, work orders, and more.

PyPI version Python Versions License: MIT

Installation

pip install stateset-python

Quick Start

import asyncio
from stateset import Stateset

async def main():
    async with Stateset(api_key="your_api_key") as client:
        # Retrieve orders
        orders = await client.orders.list(status="processing")
        print(orders)

        # Create a return
        new_return = await client.returns.create({
            "order_id": "order_123",
            "customer_id": "cust_456",
            "items": [{"order_item_id": "item_1", "quantity": 1}],
            "shipping_address": {
                "name": "Ada Lovelace",
                "address_line1": "123 Analytical Engine Way",
                "city": "London",
                "postal_code": "N1 9GU",
                "country": "GB"
            }
        })
        print(new_return)

# Run the async function
asyncio.run(main())

Note: The SDK is asynchronous-only. Use asyncio.run or anyio-compatible frameworks to drive client calls.

Available Resources

The high-level client exposes typed helpers for the most common workflows:

  • client.orders – CRUD helpers for order management plus mark_as_shipped and cancel.
  • client.returns – Create returns, list existing ones, and transition states (approve, cancel, mark_received).
  • client.inventory – Inspect inventory and issue simple adjustments.
  • client.workflows – Manage automations (list, get, create, update, delete).
  • client.warranties – Manage warranty lifecycle transitions.

Any attribute that is not explicitly implemented falls back to a GenericResource, giving you thin CRUD wrappers for the corresponding REST collection (for example, client.agents, client.channels, client.purchase_orders). If you need richer semantics, add a dedicated resource module under stateset/resources/ and wire it up in stateset/client.py.

Configuration

Custom Base URL

client = Stateset(
    api_key="your_api_key",
    base_url="https://your-custom-stateset-instance.com/api"
)

Custom Timeout or HTTPX Client

import httpx

async_client = httpx.AsyncClient(
    base_url="https://your-custom-stateset-instance.com/api",
    timeout=60.0,
)

client = Stateset(
    api_key="your_api_key",
    client=async_client,  # SDK will not close externally supplied clients
)

# Later, close the shared client when your app shuts down.
await async_client.aclose()

Error Handling

The SDK provides comprehensive error handling:

from stateset import StatesetError, StatesetAPIError, StatesetAuthenticationError

async with Stateset(api_key="your_api_key") as client:
    try:
        result = await client.returns.get("invalid_id")
    except StatesetAuthenticationError:
        print("Authentication failed")
    except StatesetAPIError as e:
        print(f"API error: {e}")
    except StatesetError as e:
        print(f"General error: {e}")

Advanced Usage

Custom Requests

For advanced use cases, you can make direct API requests:

async with Stateset(api_key="your_api_key") as client:
    # Custom GET request
    response = await client.request("GET", "custom/endpoint", params={"expand": "items"})
    
    # Custom POST request
    response = await client.request(
        "POST", 
        "custom/endpoint",
        data={"key": "value"}
    )

Development

Setting up for development

git clone https://github.com/stateset/stateset-python.git
cd stateset-python
pip install -e ".[dev]"

Running tests

pytest

Building the package

pip install build
python -m build

Publishing to PyPI

pip install twine
twine upload dist/*

Contributing

We welcome issues and pull requests that improve the SDK.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support and questions:

Metadata

Release files for stateset-python 1.2.0

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

Source distribution (sdist)

Source distribution for stateset-python 1.2.0
File Size Uploaded
stateset_python-1.2.0.tar.gz 21.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for stateset-python 1.2.0
File Interpreter ABI Platform
stateset_python-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 39.0 kB

Release files / stateset_python-1.2.0.tar.gz

Download URL stateset_python-1.2.0.tar.gz
Size 21.6 kB
Tags Source
SHA-256 checksum
How to use checksums
df7fe9bb8e7cc3da0e4137988cea1089b19402e4b0a3cdcb447b47322ea2ce11
BLAKE2b-256 checksum
How to use checksums
769f885b76369cf5ee868fc27296ab3515eae19c25a23ebc6a1ffb5c3b9e544f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.16

Release files / stateset_python-1.2.0-py3-none-any.whl

Download URL stateset_python-1.2.0-py3-none-any.whl
Size 17.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6dfc722a9e028e8223ad4c95798d7f692dfee4bcb34dedf43fc69d70a151fbfc
BLAKE2b-256 checksum
How to use checksums
e62801fa922e4ba93ff779fa4e7a6ee11a3fc6974ebd6e88e85584741e0028ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.16

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.0

2 release files

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