Metadata-Version: 2.4
Name: joblogic-automation-sdk
Version: 0.1.0
Summary: Reusable SDK for Joblogic automation projects
License-Expression: MIT
Requires-Python: >=3.11
Requires-Dist: aiohttp>=3.9
Requires-Dist: pydantic>=2.0
Provides-Extra: all
Requires-Dist: aioodbc>=0.4; extra == 'all'
Requires-Dist: asyncpg>=0.29; extra == 'all'
Requires-Dist: azure-appconfiguration>=1.7; extra == 'all'
Requires-Dist: fastapi>=0.100; extra == 'all'
Requires-Dist: motor>=3.3; extra == 'all'
Requires-Dist: polars>=1.0; extra == 'all'
Provides-Extra: appconfig
Requires-Dist: azure-appconfiguration>=1.7; extra == 'appconfig'
Provides-Extra: audit
Requires-Dist: fastapi>=0.100; extra == 'audit'
Requires-Dist: motor>=3.3; extra == 'audit'
Provides-Extra: auth
Requires-Dist: fastapi>=0.100; extra == 'auth'
Provides-Extra: db
Requires-Dist: asyncpg>=0.29; extra == 'db'
Provides-Extra: dev
Requires-Dist: httpx>=0.24; extra == 'dev'
Requires-Dist: mongomock-motor>=0.0.20; extra == 'dev'
Requires-Dist: polars>=1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: joblogic-db
Requires-Dist: aioodbc>=0.4; extra == 'joblogic-db'
Requires-Dist: polars>=1.0; extra == 'joblogic-db'
Provides-Extra: notifications
Description-Content-Type: text/markdown

# joblogic-automation-sdk

Reusable SDK for Joblogic automation projects. Provides common infrastructure: Jicro client, audit logging (Cosmos DB), Slack/Teams notifications, PostgreSQL helpers, auth middleware, and shared enums/utilities.

## Installation

```bash
# Full install (all extras)
pip install "joblogic-automation-sdk[all] @ git+https://joblogicltd@dev.azure.com/joblogicltd/JobLogic%20Automations/_git/joblogic-automation-sdk@uat"

# Core only (JicroClient, ExecutionResult, config)
pip install "joblogic-automation-sdk @ git+https://joblogicltd@dev.azure.com/joblogicltd/JobLogic%20Automations/_git/joblogic-automation-sdk@uat"

# Selective extras
pip install "joblogic-automation-sdk[audit,db] @ git+https://joblogicltd@dev.azure.com/joblogicltd/JobLogic%20Automations/_git/joblogic-automation-sdk@uat"
```

## Quick Start

```python
from joblogic_sdk.jicro import JicroClient, JicroError
from joblogic_sdk.config import get_settings

async with JicroClient() as client:
    result = await client.execute(
        tenant_id=get_settings().tenant_id,
        service_name="core",
        message_signature="SearchJobMsg",
        payload={"searchText": "example", "pageSize": 10},
    )
```

## Modules

| Module | Import | Extra |
|--------|--------|-------|
| Config | `from joblogic_sdk.config import get_settings` | (core) |
| Jicro Client | `from joblogic_sdk.jicro import JicroClient, JicroError` | (core) |
| Execution Result | `from joblogic_sdk.models import ExecutionResult` | (core) |
| Database | `from joblogic_sdk.db import query, execute` | `db` |
| Notifications | `from joblogic_sdk.notifications import slack_notification, teams_notification` | (core) |
| Audit | `from joblogic_sdk.audit import AuditManager, AuditData, audit_router` | `audit` |
| Auth | `from joblogic_sdk.auth import get_tenant_id` | `auth` |
| Common | `from joblogic_sdk.common import EntityType, AuditAction, AuditStatus` | (core) |

## Environment Variables

| Variable | Module | Description |
|----------|--------|-------------|
| `JICRO_BASE_URL` | jicro | Jicro API base URL |
| `JICRO_AUTH_TOKEN` | jicro | Jicro auth token |
| `TENANT_ID` | config | Single-tenant automations |
| `DATABASE_URL` | db | PostgreSQL connection |
| `AUDIT_MONGODB_CONNECTION_STRING` | audit | Cosmos DB (MongoDB API) connection |
| `AUDIT_DB_NAME` | audit | MongoDB database name |
| `AUDIT_COLLECTION_NAME` | audit | MongoDB collection name |
| `SLACK_ENABLED` | notifications | Enable Slack (true/false) |
| `SLACK_SUCCESS_WEBHOOK` | notifications | Slack success webhook |
| `SLACK_FAILURE_WEBHOOK` | notifications | Slack failure webhook |
| `SLACK_PARTIAL_FAILURE_WEBHOOK` | notifications | Slack partial failure webhook |
| `TEAMS_ENABLED` | notifications | Enable Teams (1/0) |
| `TEAMS_WORKFLOW_URL` | notifications | Teams workflow webhook |
| `APPLICATION_ENVIRONMENT` | config | Environment name |
| `IDP_CLIENT_ID` | config | OAuth2 client ID |
| `IDP_AUTHORITY` | config | IDP authority URL |
| `SCHEDULER_CRON_HOUR` | config | Timer cron hour |
| `SCHEDULER_CRON_MINUTE` | config | Timer cron minute |

## Development

```bash
# Install with dev dependencies
pip install -e ".[all,dev]"

# Run tests
pytest tests/ -v
```
