Customer-facing SDK for executing actions on the Zamp platform
Project description
Zamp SDK
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=11,
maximum_interval=timedelta(minutes=15),
backoff_coefficient=1.5,
)
# Or use the default configuration:
policy = RetryPolicy.default()
| Field | Type | Default (via .default()) |
|---|---|---|
initial_interval |
timedelta |
30 seconds |
maximum_attempts |
int |
11 |
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
- Create a feature branch from
main - Make your changes
- Run
make checkto verify lint, type-check, and tests pass - Open a pull request
Pre-commit hooks are configured -- install them with:
poetry run pre-commit install
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zamp_sdk-0.0.5.tar.gz.
File metadata
- Download URL: zamp_sdk-0.0.5.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f91af84ec3c2fb7d5f832b610cb2d901bbb58246ab681e9e8664777676b9940e
|
|
| MD5 |
5e739ed6ea9a43ea140e15b714fe439e
|
|
| BLAKE2b-256 |
f1170ac4fee67a2948c83345be039f4fbbe1b0eb6a1f945fff7904554f422f98
|
File details
Details for the file zamp_sdk-0.0.5-py3-none-any.whl.
File metadata
- Download URL: zamp_sdk-0.0.5-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fc259c76a926c0d0a3be4aad6f056725ac232bec286a5bae5ff452c6f5926f4
|
|
| MD5 |
aebda79504e90c749774a93174e7bc6a
|
|
| BLAKE2b-256 |
8586ec9a36064c9cda4d159d65331c8eda2f14cbf0d0a4c4677c4881ed3a31e7
|