# OpenVPN Profiler API Reference This module (`APP_PROFILER`) is built with **FastAPI** and provides management capabilities. **Base URL**: `http://:8000/api` ## Authentication All endpoints (except initial setup) require a Bearer Token. **Header**: `Authorization: Bearer ` *Note: The token is shared with the Core Monitoring API.* --- ## 1. User Profiles Manage OpenVPN Client profiles (`.ovpn` configs and certificates). ### `GET /profiles` List all user profiles. - **Response**: Array of profile objects (id, username, status, expiration_date, etc.). ### `POST /profiles` Create a new user profile. - **Body**: `{"username": "jdoe"}` - **Action**: Generates keys, requests certificate, builds `.ovpn` file. ### `DELETE /profiles/{id}` Revoke a user profile. - **Action**: Revokes certificate in CRL and marks profile as revoked in DB. ### `GET /profiles/{id}/download` Download the `.ovpn` configuration file for a user. - **Response**: File stream (application/x-openvpn-profile). --- ## 2. System Configuration Manage global settings for the server and PKI. ### `GET /config` Get current configuration. - **Query Params**: `section` (optional: 'server' or 'pki') - **Response**: `{ "server": {...}, "pki": {...} }` ### `PUT /config/server` Update OpenVPN Server settings (e.g., protocol, port, DNS). - **Body**: JSON object matching `SystemSettings` schema. ### `PUT /config/pki` Update PKI settings (e.g., Key Size, Certificate Expiry). - **Body**: JSON object matching `PKISetting` schema. ### `POST /system/init` Initialize the PKI infrastructure (InitCA, GenDH, BuildServerCert). - **Note**: Only runs if PKI is empty. ### `DELETE /system/pki` **DANGER**: Completely wipes the PKI directory. --- ## 3. Server Management ### `POST /server/configure` Generate the `server.conf` file based on current database settings. - **Response**: `{"message": "Server configuration generated", "path": "/etc/openvpn/server.conf"}` ### `POST /server/process/{action}` Control the OpenVPN system service. - **Path Param**: `action` (start, stop, restart) - **Response**: Status of the command execution. ### `GET /server/process/stats` Get telemetry for the OpenVPN process. - **Response**: `{ "status": "running", "cpu_percent": 1.2, "memory_mb": 45.0 }`