opensips-apis
opensips-apis is a lightweight service layer that exposes custom HTTP endpoints to support OpenSIPS with special routing-time operations. It centralizes business logic that would otherwise bloat opensips.cfg, keeping SIP routing fast while allowing data-backed decisions and utilities to evolve independently.
Overview
Architecture (High Level)
Runtime: FastAPI + Uvicorn (Python 3.12)
State: Stateless application; configuration via environment variables
Data: Optional PostgreSQL for lookups (indexes recommended on queried fields)
Packaging: Container-first (Dockerfile included)
Scalability: Horizontally scalable behind L4/L7 load balancers
Port: Configurable via PORT (default typically 3000)
Configuration (High Level)
Server: HOST, PORT
Database (optional): PG* variables for connectivity, plus table/column names for lookups
Network Controls (optional): Allow-list via comma-separated CIDRs/IPs
Supply via Docker/Compose/Swarm/Kubernetes secrets/config; no .env required.
Deployment (High Level)
Docker: Build and run the container; map PORT as needed
Compose/Swarm/K8s: Add health checks, resource limits/requests, and proximity to OpenSIPS/DB
Resiliency: Configure timeouts/retries/backoff in callers or your gateway
OpenSIPS Integration (Conceptual)
Load http_client and json modules.
From a routing block, POST a small JSON payload (e.g., number/context).
Parse JSON response and apply your routing policy (rewrite/route/deny).
Log decisions for observability.
Observability & Operations
Health: /health endpoint for liveness/readiness
Logging: Structured logs for inputs, decisions, timings
Metrics (roadmap): Prometheus/OpenTelemetry