Skip to main content

API Sentinel 🛡️

PyPI version Python 3.10+ FastAPI License: MIT OpenAPI 3.x

API Sentinel (api-drift-detector) is an asynchronous FastAPI / ASGI middleware and developer telemetry dashboard that detects real-time contract drifts between runtime API payloads and your OpenAPI specification.


🚀 Key Features

  • ⚡ Zero-Latency Async Interception: Uses non-blocking background tasks (asyncio.create_task) and request buffering so your API responses stream immediately without waiting for validation.
  • 🔍 Comprehensive Drift Detection: Detects missing required fields, undocumented query/path parameters, type mismatches, undocumented HTTP status codes, and extra fields.
  • 📊 Real-Time Developer Dashboard: Built-in interactive dashboard with live polling, KPI metrics, pass/fail rate timeline charts, and severity breakdowns.
  • 💾 Database Persistence: Automatically records validation history and schema diffs to SQLite via SQLAlchemy (aiosqlite), persisting telemetry across server restarts.
  • 🪄 OpenAPI Specification Wizard: Visual form-based generator to design, preview, test, and save OpenAPI specs directly from the browser.
  • 💻 CLI Tooling: Built-in api-drift-detector (and api-sentinel) command-line interface to launch dashboards and validate specifications.

📦 Installation

pip install api-drift-detector

From GitHub (Latest source):

pip install git+https://github.com/T41h4X/API_sentinel.git

⚡ Quick Start

1. Launch the Sentinel Dashboard (Terminal 1)

Start the monitoring dashboard on port 8001:

api-drift-detector dashboard

(or use api-sentinel dashboard)

Open your browser at http://127.0.0.1:8001 to monitor incoming traffic, validation results, and contract drifts in real time.


2. Integrate Middleware in Your FastAPI App (Terminal 2)

Add APISentinelMiddleware to your FastAPI application:

from fastapi import FastAPI
from api_sentinel import APISentinelMiddleware

app = FastAPI(title="My API")

# Register Sentinel Middleware
app.add_middleware(
    APISentinelMiddleware,
    openapi_path="openapi.yaml",            # Path to your OpenAPI spec
    dashboard_url="http://127.0.0.1:8001",  # URL of the Sentinel dashboard
    enabled=True,
    print_clean=True,
)

@app.get("/api/v1/users/{user_id}")
async def get_user(user_id: int):
    # Any schema mismatch or extra undocumented fields will trigger live alerts!
    return {"id": user_id, "name": "Alice"}

Run your FastAPI server on port 8000:

uvicorn app:app --reload --port 8000

Any request sent to your FastAPI server (http://127.0.0.1:8000/api/v1/users/1) is intercepted, checked against openapi.yaml, and streamed directly into your dashboard!


💻 Command Line Interface (CLI)

The package provides the api-drift-detector (and api-sentinel) CLI:

# Start the monitoring dashboard (default: http://127.0.0.1:8001)
api-drift-detector dashboard

# Start on custom host or port
api-drift-detector dashboard --host 0.0.0.0 --port 8080

# Start dashboard in development mode with auto-reload
api-drift-detector dashboard --reload

# Validate an OpenAPI specification file in CI/CD pipelines
api-drift-detector validate --spec openapi.yaml

# Check installed version
api-drift-detector version

⚙️ Configuration

API Sentinel can be configured using environment variables (prefixed with SENTINEL_) or a .env file:

Variable Default Description
SENTINEL_DATABASE_URL sqlite+aiosqlite:///./sentinel.db SQLAlchemy database connection string
SENTINEL_RETENTION_DAYS 30 Number of days to retain validation records before cleanup
SENTINEL_MASKED_FIELDS ["password", "token", "credit_card", "authorization"] Sensitive payload fields automatically masked
SENTINEL_SELECTIVE_PERSISTENCE false When true, only saves WARNING and FAILED validation results
SENTINEL_OPENAPI_SPEC_PATH openapi.yaml Default OpenAPI specification file path

🧪 Running the Demo Locally

Clone the repository and test the full demo application with sample drifts:

git clone https://github.com/T41h4X/API_sentinel.git
cd API_sentinel

# Create and activate environment
python -m venv .venv
.\.venv\Scripts\activate      # Windows
source .venv/bin/activate    # Linux / macOS

# Install package
pip install -e .

# Launch all demo services (Windows)
start_all.cmd

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Release files for api-drift-detector 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for api-drift-detector 0.1.2
File Size Uploaded
api_drift_detector-0.1.2.tar.gz 112.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for api-drift-detector 0.1.2
File Interpreter ABI Platform
api_drift_detector-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 190.9 kB

Release files / api_drift_detector-0.1.2.tar.gz

Download URL api_drift_detector-0.1.2.tar.gz
Size 112.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5b76bc26a51318723e1f5d2d43979fb408b933d4099425cf3b7b65a9791b3495
BLAKE2b-256 checksum
How to use checksums
6591e2f47b2a09e5e97e437cf08164d3da1bf2609890803c83e23f762c4fbb0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release files / api_drift_detector-0.1.2-py3-none-any.whl

Download URL api_drift_detector-0.1.2-py3-none-any.whl
Size 78.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
40533115af37f363e19677428121457421d24a36c562bd93c31c176dc5c19805
BLAKE2b-256 checksum
How to use checksums
2a74668092edad54959625eb21d38a22125dcf2f7213a1c1e0fb93984eb14dc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page