Metadata-Version: 2.4
Name: workshop-connect
Version: 0.1.0
Summary: Python SDK for Workshop.ai connectors — execute actions and manage triggers
Author-email: Atlas Futures <hello@workshop.ai>
License: Apache-2.0
Project-URL: Homepage, https://workshop.ai
Project-URL: Repository, https://github.com/atlasfutures/workshop-connect
Project-URL: Issues, https://github.com/atlasfutures/workshop-connect/issues
Keywords: workshop,connector,api,sdk,composio,automation,integration
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.27.0
Requires-Dist: click>=8.1.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-asyncio>=1.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: ruff>=0.8; extra == "dev"
Dynamic: license-file

# workshop-connect

Python SDK for [Workshop.ai](https://workshop.ai) connectors — execute actions and manage triggers through the Workshop proxy.

## Installation

```bash
pip install workshop-connect
```

## Quick Start

### Python SDK

```python
from workshop_connect import ConnectorClient

# Auto-detect connector from environment variables
client = ConnectorClient.from_connector("gmail")
result = client.execute("GMAIL_GET_PROFILE", {"userId": "me"})
print(result)

# Or with an explicit prefix
client = ConnectorClient.from_env(prefix="MYGMAL")
```

### Async SDK (for FastAPI / async apps)

```python
from workshop_connect import AsyncConnectorClient

async with AsyncConnectorClient.from_connector("gmail") as client:
    result = await client.execute("GMAIL_GET_PROFILE", {"userId": "me"})
```

### FastAPI Integration

```python
from fastapi import FastAPI
from workshop_connect import AsyncConnectorClient

app = FastAPI()

@app.get("/api/emails")
async def list_emails():
    async with AsyncConnectorClient.from_connector("gmail") as client:
        return await client.execute("GMAIL_LIST_EMAILS", {"maxResults": 10})
```

## Environment Variables

Each connected account injects three environment variables:

```
<PREFIX>_COMPOSIO_PROXY_URL              # Workshop proxy URL
<PREFIX>_COMPOSIO_CONNECTED_ACCOUNT_ID   # Connected account ID
<PREFIX>_WORKSHOP_API_KEY                # Bearer token
<PREFIX>_COMPOSIO_APP_NAME               # Toolkit name (optional, for disambiguation)
```

## License

Apache-2.0
