Metadata-Version: 2.4
Name: sentinel-watch-sdk
Version: 2.0.0
Summary: Official Python SDK for the Sentinel Watch Security Platform API
Project-URL: Homepage, https://docs.sentinel-watch.io/sdks/python
Project-URL: Repository, https://github.com/sentinel-watch/sdk-python
License: MIT
Keywords: api,sdk,security,sentinel,siem,soc
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
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 :: Security
Requires-Python: >=3.8
Requires-Dist: requests>=2.28.0
Description-Content-Type: text/markdown

# sentinel-watch-sdk (Python)

Official Python SDK for the **Sentinel Watch** Security Platform.

## Install

```bash
pip install sentinel-watch-sdk
```

## Quick Start

```python
from sentinel_watch import SentinelClient

client = SentinelClient("https://api.your-sentinel.io/api")
client.auth.login("analyst@company.com", "password")

print(client.current_user.role)            # security_analyst
print(client.current_user.dashboard_route) # /analyst

# List critical open alerts
result = client.alerts.list(severity="critical", status="open", page=1, limit=10)
print(f"Found {result.total} critical alerts")
for alert in result.data:
    print(f"  [{alert['alertId']}] {alert['title']}")

# Update alert status
client.alerts.update(result.data[0]["_id"], status="investigating")

# Analyst summary (dashboard secondary stats)
summary = client.analyst.summary()
print(summary["vulnerabilities"]["open"])    # e.g. 5
print(summary["threatHunts"]["active"])      # e.g. 2

# Threat hunts
hunts = client.threat_hunts.list(status="active")
new_hunt = client.threat_hunts.create(
    name="Lateral Movement Hunt",
    ttps="T1021",
    query="process.name='powershell.exe'"
)
client.threat_hunts.start(new_hunt["_id"])

# Compliance frameworks
compliance = client.compliance.stats()
for fw in compliance["frameworks"]:
    print(f"{fw['name']}: {fw['score']}% ({fw['status']})")
```

## All Modules

| Attribute            | Description                           |
|----------------------|---------------------------------------|
| `auth`               | Login, register, password management  |
| `alerts`             | Alert CRUD + stats                    |
| `incidents`          | Incident CRUD + stats                 |
| `organizations`      | Org management + approval flow        |
| `users`              | User CRUD + system assignment         |
| `threats`            | Threat intel CRUD                     |
| `systems`            | System inventory CRUD                 |
| `detection_rules`    | SIGMA/YARA rule CRUD                  |
| `playbooks`          | Playbook CRUD + run                   |
| `dashboard`          | Aggregated platform stats             |
| `billing`            | Plans, subscription, invoices         |
| `vulnerabilities`    | CVE tracking + patch management       |
| `phishing`           | Phishing report queue                 |
| `malware`            | Malware sample analysis               |
| `certificates`       | TLS/SSL cert expiry tracking          |
| `firewall_changes`   | Firewall change request workflow      |
| `threat_hunts`       | Threat hunting sessions               |
| `user_activity`      | UEBA / user behaviour events          |
| `compliance`         | Compliance framework scores           |
| `analyst`            | Analyst dashboard summary             |
