Metadata-Version: 2.4
Name: orkera
Version: 0.4.0
Summary: Simple HTTP client for Orkera distributed task runner
Home-page: https://github.com/orkera/python-sdk
Author: Orkera Team
Author-email: contact@orkera.com
License: MIT
Project-URL: Bug Tracker, https://github.com/orkera/python-sdk/issues
Project-URL: Documentation, https://github.com/orkera/python-sdk
Project-URL: Source Code, https://github.com/orkera/python-sdk
Keywords: orkera,task,distributed,scheduler,async
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.25.0
Requires-Dist: pydantic>=2.0.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Orkera SDK

Simple Python SDK for the Orkera's task scheduler.

## 🚀 Quick Start

To use the SDK, you need an API key. You can get one by signing up at [https://orkera.com](https://orkera.com).

```python
from orkera import OrkeraClient
from datetime import datetime, timedelta

# Initialize client (API URL is automatically set to https://api.orkera.com)
client = OrkeraClient(
    api_key="your_api_key"
)

# Schedule a task
task_id = client.schedule_task(
    task_name="calculate_sum",
    task_kwargs={"a": 10, "b": 20},
    schedule_time=datetime.now() + timedelta(seconds=10),
    callback_url="https://your-callback-url.com/"
)

print(f"Task scheduled: {task_id}")

# List only scheduled tasks
scheduled_tasks = client.list_scheduled_tasks()
print(f"Scheduled tasks: {len(scheduled_tasks)}")

# Get specific task
task = client.get_task(task_id)
print(f"Task status: {task.status}")
```

## 📋 **API Methods**

- `schedule_task(task_name, callback_url, task_args=None, task_kwargs=None, schedule_time=None)` - Schedule a task
- `list_tasks()` - List all tasks for the user
- `list_scheduled_tasks()` - List only scheduled tasks
- `get_task(task_id)` - Get details of a specific task

## 🔄 **What's New in v0.4.0**

- **Breaking Change**: `callback_url` is now required when scheduling tasks
- **New Method**: Added `list_scheduled_tasks()` to list only scheduled tasks
- **Security**: Enhanced server-side validation for callback URLs to prevent SSRF attacks
- **Bug Fix**: Fixed import issues in the SDK
