Skip to main content

Python SDK for the Stateset API - Complete access to returns, warranties, orders, inventory, and work order management

Project description

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:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stateset_python-1.1.0.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stateset_python-1.1.0-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file stateset_python-1.1.0.tar.gz.

File metadata

  • Download URL: stateset_python-1.1.0.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for stateset_python-1.1.0.tar.gz
Algorithm Hash digest
SHA256 d5b6dbd160858205bb5e569fc9a5c5f609c82696c8886dfc8c41beff50111bfa
MD5 0c65a752c8d34ee38ea67cb998663917
BLAKE2b-256 14747a5cac7db38663dcfc1dbedd48c6634ac82f14f1451353937bab27570edf

See more details on using hashes here.

File details

Details for the file stateset_python-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for stateset_python-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 107713c912e3e54fb9c5c0964dbb654c0a19c287a4419265c057f00932f41d5c
MD5 b3703d03ba014f9b29a55227a876c651
BLAKE2b-256 a7488201b1ce81926440b0b51fb663138566bfef7eea25ee04d062b6bf56b992

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page