Metadata-Version: 2.4
Name: compliancelayer
Version: 0.1.0
Summary: Python SDK for the ComplianceLayer security scanning API
Author-email: ComplianceLayer <dev@compliancelayer.net>
License: MIT
Project-URL: Homepage, https://compliancelayer.net
Project-URL: Documentation, https://compliancelayer.net/docs
Project-URL: Repository, https://github.com/Compliance-Layer/compliancelayer-python
Project-URL: Issues, https://github.com/Compliance-Layer/compliancelayer-python/issues
Keywords: security,compliance,scanning,msp,cyber-insurance
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: System :: Monitoring
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.25.0

# ComplianceLayer Python SDK

Scan any domain for security compliance in seconds. Built for MSPs, DevOps engineers, and anyone who needs to assess domain security posture.

## Install

```bash
pip install compliancelayer
```

## Quick Start

```python
from compliancelayer import ComplianceLayerClient

client = ComplianceLayerClient(api_key="cl_your_key_here")

# Full scan — runs all 16 security modules, waits for results
result = client.scan("example.com")
print(f"{result['domain']}: {result['grade']} ({result['score']}/100)")

for finding in result.get("findings", []):
    print(f"  [{finding['severity']}] {finding['finding']}")
```

## Free Scan (No API Key Required)

```python
client = ComplianceLayerClient()  # no key needed
result = client.free_scan("example.com")
print(f"Grade: {result['grade']} | Score: {result['score']}/100")
```

Rate limited to 5 scans/hour. Returns grade + top 3 issues only.

## Batch Scanning

Scan hundreds of domains at once:

```python
domains = ["client1.com", "client2.com", "client3.com"]
results = client.batch_scan(domains)

for r in results:
    print(f"{r['domain']}: {r['grade']}")
```

## Domain Monitoring

```python
# Add a domain for recurring scans
client.add_domain("important-client.com", monitor=True)

# List monitored domains
for domain in client.domains():
    print(f"{domain['domain']}: last scan {domain.get('last_scanned_at', 'never')}")
```

## Compliance Reports

Generate reports formatted for insurance broker submission:

```python
report = client.compliance_report("example.com")
print(f"Compliance status: {report['status']}")
```

## What Gets Scanned

ComplianceLayer runs 16 security modules in under 60 seconds:

| Module | What it checks |
|--------|---------------|
| SSL/TLS | Certificate validity, expiration, chain, protocols |
| DNS | SPF, DMARC, DKIM, DNSSEC, CAA records |
| Headers | HSTS, CSP, X-Frame-Options, CORS, permissions |
| Ports | ~100 common ports for exposure |
| Email Auth | SPF alignment, DMARC enforcement, DKIM signing |
| Blacklists | 35+ blocklist databases |
| Breaches | Known data breach exposure |
| Cookies | Secure/HttpOnly/SameSite flags |
| Subdomains | Subdomain enumeration and exposure |
| Tech Stack | Framework and server fingerprinting |
| WAF | Web Application Firewall detection |
| Reputation | Domain reputation scoring |
| JavaScript | External script audit |
| Trackers | Third-party tracker detection |
| WHOIS | Registration and ownership data |
| Compliance | Insurance-relevant compliance mapping |

## Pricing

| Plan | Price | Scans/month | Domains |
|------|-------|-------------|---------|
| Free | $0 | 10 | 1 |
| Pro | $99/mo | 1,000 | 50 |
| Enterprise | $499/mo | 5,000 | 200 |

Get your API key at [compliancelayer.net](https://compliancelayer.net)

## Error Handling

```python
from compliancelayer import ComplianceLayerClient, RateLimitError, AuthenticationError

client = ComplianceLayerClient(api_key="cl_your_key")

try:
    result = client.scan("example.com")
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
```

## License

MIT
