Skip to main content

No project description provided

Project description

PyPI version Build Status Coverage Code style: Ruff Documentation MIT licence

rossum-api provides Python programmatic access to the Rossum API and other useful tooling enabling seamless integration of the Rossum platform into Python applications.

It is a replacement for Rossum package. In case of any missing functionality, please open an issue or a pull request.

For comprehensive API reference and detailed examples, visit our documentation.

Key Features

  • Minimal dependencies: Lightweight with minimal external dependencies

  • API-aligned naming: Method names map closely to the official API documentation

  • Dual API support: Choose between synchronous and asynchronous clients

  • Authentication: Built-in authentication handling

  • Retry mechanism: Built-in retry mechanism handling throttling API errors

  • Pagination handling: Automatically merges paginated results into one list

  • Rich methods: Includes methods for frequent API operations

  • Type-safe: Returns results as Python dataclasses with full type hints

Installation

The easiest way is to install the package from PyPI:

pip install rossum-api

or from the github repo:

pip install git+https://github.com/rossumai/rossum-sdk#egg=rossum-api

You can eventually download an installation file from GitHub releases and install it manually.

Usage

Python API

The rossum-api library can be used to communicate with Rossum API, instead of using requests library directly. The advantages of using rossum-api:

  • it contains a function that merges the paginated results into a single list so the user does not need to get results page by page and take care of their merging,

  • it comes with both synchronous and asynchronous API, so you can choose the approach you need,

  • it takes care of authenticating the user,

  • it includes many methods for common actions that you don’t need to write by yourself from scratch,

  • it returns the result as a Python first-class object (dataclass), so you don’t need to parse the JSON by yourself,

  • it maps method naming as close as possible to API docs,

  • in case the API version changes, the change will be implemented in the library by the Rossum team for all users.

  • it has minimal dependencies

Examples

You can choose between asynchronous and synchronous clients. Both are exactly the same in terms of features.

Async version

import asyncio
import os
from rossum_api import AsyncRossumAPIClient
from rossum_api.dtos import UserCredentials

WORKSPACE = {
    "name": "Rossum Client NG Test",
    "organization": "https://elis.rossum.ai/api/v1/organizations/116390",
}


async def main_with_async_client() -> None:
    client = AsyncRossumAPIClient(
        base_url="https://elis.rossum.ai/api/v1",
        credentials=UserCredentials(os.environ["ELIS_USERNAME"], os.environ["ELIS_PASSWORD"]),
    )
    ws = await client.create_new_workspace(data=WORKSPACE)
    workspace_id = ws.id
    ws = await client.retrieve_workspace(workspace_id)
    print("GET result:", ws)
    print("LIST results:")
    async for w in client.list_workspaces(ordering=["-id"], name=WORKSPACE["name"]):
        print(w)
    await client.delete_workspace(workspace_id)
    print(f"Workspace {workspace_id} deleted.")


asyncio.run(main_with_async_client())

Sync version

import os

from rossum_api import SyncRossumAPIClient
from rossum_api.dtos import UserCredentials

WORKSPACE = {
    "name": "Rossum Client NG Test",
    "organization": "https://elis.rossum.ai/api/v1/organizations/116390",
}


def main_with_sync_client() -> None:
    client = SyncRossumAPIClient(
        base_url="https://elis.rossum.ai/api/v1",
        credentials=UserCredentials(os.environ["ELIS_USERNAME"], os.environ["ELIS_PASSWORD"]),
    )
    ws = client.create_new_workspace(data=WORKSPACE)
    workspace_id = ws.id
    ws = client.retrieve_workspace(workspace_id)
    print("GET result:", ws)
    print("LIST results:")
    for w in client.list_workspaces(ordering=["-id"], name=WORKSPACE["name"]):
        print(w)
    client.delete_workspace(workspace_id)
    print(f"Workspace {workspace_id} deleted.")


main_with_sync_client()

Local development

Pull the repository, create a virtual environment, and install the package from the source with test dependencies:

# Create and activate virtual environment
python -m venv .env
source .env/bin/activate

# Install in editable mode with test dependencies
pip install -e .[tests]

We use ruff for linting and formatting. Run all pre-commit hooks with:

pre-commit run --all-files

Or run specific tools:

# Linting and formatting
pre-commit run ruff --all-files
pre-commit run ruff-format --all-files

# Type checking
pre-commit run mypy --all-files

# Run tests
pytest

License

MIT

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

rossum_api-3.5.2.tar.gz (144.0 kB view details)

Uploaded Source

Built Distribution

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

rossum_api-3.5.2-py3-none-any.whl (61.0 kB view details)

Uploaded Python 3

File details

Details for the file rossum_api-3.5.2.tar.gz.

File metadata

  • Download URL: rossum_api-3.5.2.tar.gz
  • Upload date:
  • Size: 144.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rossum_api-3.5.2.tar.gz
Algorithm Hash digest
SHA256 cbd97063853b1bb1fa5a4802e6eba81f7e18f32415cadfd36d4bd552019a26df
MD5 4c2e5a1eecdbee4b7025034f84c8406d
BLAKE2b-256 53d2b1141dae913f5e42b5891ec53d7680b9b15c5ee4e5f68003166e9004ed3a

See more details on using hashes here.

File details

Details for the file rossum_api-3.5.2-py3-none-any.whl.

File metadata

  • Download URL: rossum_api-3.5.2-py3-none-any.whl
  • Upload date:
  • Size: 61.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rossum_api-3.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 43a9d71901c1cdf3633b8c72bdfb52de80e23b5e4576745d4ae39f5962fc84e5
MD5 d7b6ce2f8c5d9c6cc724b5cafca7a701
BLAKE2b-256 0120464db44e2b35763aa8cdf64bf85134bf1027fc62617544d2bfcca4e0a0d5

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