Skip to main content

Customer-facing SDK for executing actions on the Zamp platform

Project description

Zamp SDK

PyPI version Python License: MIT

The official Python SDK for executing actions on the Zamp platform.

Installation

pip install zamp-sdk

Or with Poetry:

poetry add zamp-sdk

Quick Start

import asyncio
from zamp_sdk import ActionExecutor

async def main():
    result = await ActionExecutor.execute(
        "send_invoice",
        {"invoice_id": "inv_123"},
        base_url="https://api.zamp.ai",
        auth_token="your-api-token",
    )
    print(result)

asyncio.run(main())

Using environment variables

Set ZAMP_BASE_URL and ZAMP_AUTH_TOKEN in your environment, then call without explicit config:

result = await ActionExecutor.execute("send_invoice", {"invoice_id": "inv_123"})

API Reference

ActionExecutor.execute()

@staticmethod
async def execute(
    action_name: str,
    params: Any,
    *,
    base_url: str | None = None,
    auth_token: str | None = None,
    summary: str | None = None,
    return_type: type | None = None,
    action_retry_policy: RetryPolicy | None = None,
    action_start_to_close_timeout: timedelta | None = None,
) -> Any
Parameter Type Required Description
action_name str Yes Name of the registered action to execute
params Any Yes Input parameters for the action
base_url str | None No Zamp API base URL. Falls back to ZAMP_BASE_URL env var
auth_token str | None No API authentication token. Falls back to ZAMP_AUTH_TOKEN env var
summary str | None No Human-readable description of the execution
return_type type | None No Pydantic model to validate the result against
action_retry_policy RetryPolicy | None No Retry configuration for the action
action_start_to_close_timeout timedelta | None No Maximum execution time for the action

RetryPolicy

from zamp_sdk import RetryPolicy

policy = RetryPolicy(
    initial_interval=timedelta(seconds=30),
    maximum_attempts=3,
    maximum_interval=timedelta(minutes=15),
    backoff_coefficient=1.5,
)

# Or use the default configuration:
policy = RetryPolicy.default()

When action_retry_policy is omitted from ActionExecutor.execute(), the SDK applies RetryPolicy.default() automatically — actions fail fast (2 retries + 1 initial attempt) so script failures surface quickly. Pass an explicit policy to opt into longer retries when needed.

Field Type Default (via .default())
initial_interval timedelta 30 seconds
maximum_attempts int 3
maximum_interval timedelta 15 minutes
backoff_coefficient float 1.5

Configuration

Environment Variable Description
ZAMP_BASE_URL Base URL of the Zamp API (e.g. https://api.zamp.ai)
ZAMP_AUTH_TOKEN API authentication token

Explicit parameters passed to ActionExecutor.execute() take precedence over environment variables.

Error Handling

Exception When
HttpClientError HTTP request fails (non-2xx status, network error, timeout)
RuntimeError Action reaches a terminal failure state (FAILED, CANCELED, TERMINATED, TIMED_OUT)
TimeoutError Polling for action result exceeds the timeout limit
KeyError Required environment variable is missing and no explicit value was provided
from zamp_sdk.action_executor.utils import HttpClientError

try:
    result = await ActionExecutor.execute("my_action", params)
except HttpClientError as e:
    print(f"HTTP error {e.status_code}: {e.message}")
except RuntimeError as e:
    print(f"Action failed: {e}")
except TimeoutError as e:
    print(f"Timed out: {e}")

Development

# Clone and install
git clone https://github.com/Zampfi/zamp-sdk.git
cd zamp-sdk
make install

# Run all checks (lint + type-check + tests)
make check

# Individual targets
make lint          # ruff check + format check
make lint-fix      # auto-fix lint issues
make format        # format code
make type-check    # mypy
make test          # pytest with coverage
make clean         # remove build artifacts

Contributing

  1. Create a feature branch from main
  2. Make your changes
  3. Run make check to verify lint, type-check, and tests pass
  4. Open a pull request

Pre-commit hooks are configured -- install them with:

poetry run pre-commit install

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

zamp_sdk-1.0.0.tar.gz (30.1 kB view details)

Uploaded Source

Built Distribution

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

zamp_sdk-1.0.0-py3-none-any.whl (46.6 kB view details)

Uploaded Python 3

File details

Details for the file zamp_sdk-1.0.0.tar.gz.

File metadata

  • Download URL: zamp_sdk-1.0.0.tar.gz
  • Upload date:
  • Size: 30.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zamp_sdk-1.0.0.tar.gz
Algorithm Hash digest
SHA256 78e414c14e2a6f15cf77e7de887ab5eb62d5dfad69c0c739b06af3179e427696
MD5 2c57d77a9e5afbfe78328ffd62e5742e
BLAKE2b-256 3d4e19b0dab153c7f735d635c94a415f5c20d35a160f9883c7e1c5d5bad5a462

See more details on using hashes here.

File details

Details for the file zamp_sdk-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: zamp_sdk-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 46.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zamp_sdk-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 12e031a1cf4881586789f572201939218cd488d7fe827ee8c8049880d5cad459
MD5 464e78af96f112720ba00e4dec31ba0b
BLAKE2b-256 68fff659dd2f94cc01bc283918bd1f43c63ff559b6fb5559ed53108bc041b2ba

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