openapi: 3.0.3 info: title: XUI.ONE Admin API version: 1.5.13 servers: - url: '{protocol}://{server}:{port}/{accessCode}' description: XUI.ONE API Server (Customizable) variables: protocol: default: http description: Protocol (http or https) enum: - http - https server: default: your-server.com description: Your XUI.ONE server IP or domain (e.g., 192.168.1.100 or panel.yourdomain.com) port: default: '80' description: API port (80 for HTTP, 9000 for HTTPS, or custom port) accessCode: default: cSbuFLhp description: Your unique access code for API access security: - ApiKeyAuth: [] tags: - name: Authentication description: Authentication and authorization operations - name: GET INFO description: Query and retrieve information - name: Logs & Events description: Activity logs, connections, and monitoring - name: Line API description: Subscription line management - name: User API description: User account management - name: MAG API description: MAG device management - name: Enigma API description: Enigma2 STB management - name: Streams API description: Live stream management - name: Channel API description: Channel management - name: Station API description: Radio station management - name: Movie API description: VOD movie management - name: Series API description: Series management - name: Episode API description: Episode management - name: Servers API description: Server and load balancer management - name: Settings & System description: System settings and administrative functions paths: /: get: summary: API Base Endpoint description: | Base endpoint for all API requests. All actions are performed by adding the `action` parameter. **Usage Pattern:** ``` /?api_key=&action=ACTION_NAME¶m1=value1 ``` **Example:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=user_info" ``` operationId: apiBase tags: - Authentication parameters: - $ref: '#/components/parameters/ApiKey' - $ref: '#/components/parameters/Action' responses: '200': description: Successful response content: application/json: schema: oneOf: - $ref: '#/components/schemas/SuccessResponse' - $ref: '#/components/schemas/ErrorResponse' '401': $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/ServerError' /?action=user_info: get: summary: Get Current User Info description: | Retrieves information about the currently authenticated admin user. **Purpose:** Verify API authentication and check admin privileges. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=user_info" ``` **Example Response:** ```json { "status": "STATUS_SUCCESS", "data": { "id": "1", "username": "admin", "member_group_id": "1", "email": "admin@example.com", "date_registered": "1609459200", "last_login": "1734048000", "status": "1" } } ``` --- **Use Cases:** - ✅ Test API authentication - ✅ Verify admin access - ✅ Get current user details - ✅ Check account status operationId: getUserInfo tags: - Authentication parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true description: Action to perform schema: type: string enum: [user_info] example: user_info responses: '200': description: Current user information retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' - type: object properties: data: $ref: '#/components/schemas/UserInfo' example: status: "STATUS_SUCCESS" data: id: "1" username: "admin" member_group_id: "1" email: "admin@example.com" date_registered: "1609459200" last_login: "1734048000" status: "1" '401': $ref: '#/components/responses/Unauthorized' /?action=get_lines: get: summary: Get All Subscription Lines description: | Retrieves a list of all subscription lines in your XUI.ONE panel. **Purpose:** View and manage all active and inactive subscription lines. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_lines" ``` **Use Cases:** - ✅ List all subscriptions - ✅ Monitor active lines - ✅ Export subscription data - ✅ Check expiration dates - ✅ View connection limits operationId: getLines tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_lines] responses: '200': description: List of all subscription lines content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' - type: object properties: data: type: array items: $ref: '#/components/schemas/Line' '401': $ref: '#/components/responses/Unauthorized' /?action=get_users: get: summary: Get All Users description: | Retrieves a list of all user accounts in your XUI.ONE panel. **Purpose:** View all admin, reseller, and user accounts. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_users" ``` **Use Cases:** - ✅ List all users - ✅ View user roles and permissions - ✅ Audit user accounts - ✅ Export user data operationId: getUsers tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_users] responses: '200': description: List of all users content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_streams: get: summary: Get All Live Streams description: | Retrieves a list of all live TV streams configured in your panel. **Purpose:** View all live streaming channels and their configurations. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_streams" ``` **Use Cases:** - ✅ List all live streams - ✅ Check stream status - ✅ View stream sources - ✅ Monitor stream health - ✅ Export stream configurations operationId: getStreams tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_streams] responses: '200': description: List of all live streams content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_channels: get: summary: Get All Channels description: | Retrieves a list of all channels configured in your panel. **Purpose:** View all channel configurations and metadata. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_channels" ``` **Use Cases:** - ✅ List all channels - ✅ View channel categories - ✅ Check EPG data - ✅ Export channel list operationId: getChannels tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_channels] responses: '200': description: List of all channels content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_movies: get: summary: Get All Movies description: | Retrieves a list of all VOD movies in your panel. **Purpose:** View all movie content and metadata. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_movies" ``` **Use Cases:** - ✅ List all movies - ✅ View movie metadata (title, year, rating) - ✅ Check movie availability - ✅ Export movie catalog - ✅ Monitor storage usage operationId: getMovies tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_movies] responses: '200': description: List of all movies content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_series_list: get: summary: Get All Series description: | Retrieves a list of all TV series in your panel. **Purpose:** View all series content and metadata. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_series_list" ``` **Use Cases:** - ✅ List all TV series - ✅ View series metadata - ✅ Check episode counts - ✅ Export series catalog operationId: getSeriesList tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_series_list] responses: '200': description: List of all series content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_episodes: get: summary: Get All Episodes description: | Retrieves a list of all episodes across all series. **Purpose:** View all episode content and metadata. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_episodes" ``` **Note:** To get episodes for a specific series, use the series_id parameter. **Use Cases:** - ✅ List all episodes - ✅ View episode metadata - ✅ Check episode availability - ✅ Filter by series operationId: getEpisodes tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_episodes] - name: series_id in: query required: false description: Filter episodes by series ID schema: type: integer example: 123 responses: '200': description: List of episodes content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_mags: get: summary: Get All MAG Devices description: | Retrieves a list of all MAG devices configured in your panel. **Purpose:** View all MAG set-top box subscriptions. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_mags" ``` **Use Cases:** - ✅ List all MAG devices - ✅ View MAC addresses - ✅ Check device status - ✅ Monitor connections operationId: getMags tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_mags] responses: '200': description: List of all MAG devices content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_enigmas: get: summary: Get All Enigma2 Devices description: | Retrieves a list of all Enigma2 devices configured in your panel. **Purpose:** View all Enigma2 STB subscriptions. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_enigmas" ``` **Use Cases:** - ✅ List all Enigma2 devices - ✅ View device status - ✅ Check expiration dates - ✅ Monitor connections operationId: getEnigmas tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_enigmas] responses: '200': description: List of all Enigma2 devices content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_stations: get: summary: Get All Radio Stations description: | Retrieves a list of all radio stations configured in your panel. **Purpose:** View all radio streaming channels. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_stations" ``` **Use Cases:** - ✅ List all radio stations - ✅ View station metadata - ✅ Check stream sources - ✅ Export station list operationId: getStations tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_stations] responses: '200': description: List of all radio stations content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_packages: get: summary: Get All Packages description: | Retrieves a list of all subscription packages (bouquets) in your panel. **Purpose:** View all available subscription packages and their configurations. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_packages" ``` **Use Cases:** - ✅ List all packages - ✅ View package pricing - ✅ Check channel assignments - ✅ Export package configurations operationId: getPackages tags: - GET INFO parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_packages] responses: '200': description: List of all packages content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=get_line: get: summary: Get Specific Line Details description: | Retrieves detailed information about a specific subscription line by ID. **Purpose:** View detailed information for a single line. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=get_line&id=123" ``` **Use Cases:** - ✅ View specific line details - ✅ Check line status before editing - ✅ Verify line configuration - ✅ Audit line settings operationId: getLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [get_line] - name: id in: query required: true description: Line ID schema: type: integer example: 123 responses: '200': description: Line details retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' - type: object properties: data: $ref: '#/components/schemas/Line' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /?action=create_line: post: summary: Create New Subscription Line description: | Creates a new subscription line (M3U/Xtream Codes account). **Purpose:** Add new subscriptions to your panel. --- **Example Request:** ```bash curl -X POST "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=create_line" \ -d "username=newuser" \ -d "password=newpass123" \ -d "max_connections=1" \ -d "exp_date=2025-12-31" \ -d "bouquets_selected[]=1" \ -d "bouquets_selected[]=2" ``` **Response Example:** ```json { "status": "STATUS_SUCCESS", "data": { "line_id": "456", "username": "newuser", "password": "newpass123" } } ``` **Use Cases:** - ✅ Create new subscriptions - ✅ Add trial accounts - ✅ Set up reseller lines - ✅ Bulk create accounts operationId: createLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [create_line] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - username - password properties: username: type: string description: Username for the line example: "newuser" password: type: string description: Password for the line example: "newpass123" max_connections: type: integer description: Maximum concurrent connections default: 1 example: 1 exp_date: type: string description: Expiration date (YYYY-MM-DD, Unix timestamp, or relative like "1month", "1year") example: "2025-12-31" is_trial: type: integer description: Trial account (0 = No, 1 = Yes) enum: [0, 1] default: 0 example: 0 is_restreamer: type: integer description: Reseller status (0 = No, 1 = Yes) enum: [0, 1] default: 0 example: 0 bouquets_selected: type: array description: Array of bouquet/package IDs to assign items: type: integer example: [1, 2, 3] notes: type: string description: Admin notes example: "Premium customer" contact: type: string description: Contact information example: "customer@example.com" isp_lock: type: string description: Lock to specific IP address example: "192.168.1.100" responses: '200': description: Line created successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=edit_line: post: summary: Edit Existing Line description: | Modifies an existing subscription line. **Purpose:** Update line settings and configuration. --- **Example Request:** ```bash curl -X POST "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=edit_line" \ -d "id=123" \ -d "password=newpassword" \ -d "max_connections=2" ``` **Use Cases:** - ✅ Change passwords - ✅ Update connection limits - ✅ Modify expiration dates - ✅ Change assigned packages - ✅ Update notes operationId: editLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [edit_line] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - id properties: id: type: integer description: Line ID to edit example: 123 username: type: string description: New username example: "updateduser" password: type: string description: New password example: "newpass456" max_connections: type: integer description: Maximum concurrent connections example: 2 exp_date: type: string description: New expiration date example: "2026-12-31" is_trial: type: integer description: Trial status enum: [0, 1] example: 0 bouquets_selected: type: array description: Updated bouquet IDs items: type: integer example: [1, 2, 3, 4] notes: type: string description: Updated notes example: "Extended subscription" responses: '200': description: Line updated successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /?action=delete_line: post: summary: Delete Line description: | Permanently deletes a subscription line. **Purpose:** Remove lines from the panel. ⚠️ **Warning:** This action cannot be undone! --- **Example Request:** ```bash curl -X POST "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=delete_line" \ -d "id=123" ``` **Use Cases:** - ✅ Remove expired subscriptions - ✅ Delete test accounts - ✅ Clean up old lines operationId: deleteLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [delete_line] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - id properties: id: type: integer description: Line ID to delete example: 123 responses: '200': description: Line deleted successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /?action=enable_line: post: summary: Enable Line description: | Enables a disabled subscription line. **Purpose:** Reactivate suspended lines. --- **Example Request:** ```bash curl -X POST "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=enable_line" \ -d "id=123" ``` **Use Cases:** - ✅ Reactivate suspended accounts - ✅ Resume service after payment - ✅ Restore access operationId: enableLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [enable_line] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - id properties: id: type: integer description: Line ID to enable example: 123 responses: '200': description: Line enabled successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /?action=disable_line: post: summary: Disable Line description: | Disables an active subscription line without deleting it. **Purpose:** Temporarily suspend access. --- **Example Request:** ```bash curl -X POST "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=disable_line" \ -d "id=123" ``` **Use Cases:** - ✅ Suspend non-payment accounts - ✅ Temporarily block access - ✅ Pause service operationId: disableLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [disable_line] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - id properties: id: type: integer description: Line ID to disable example: 123 responses: '200': description: Line disabled successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /?action=ban_line: post: summary: Ban Line description: | Bans a subscription line, blocking access and preventing reactivation. **Purpose:** Permanently block abusive or fraudulent accounts. --- **Example Request:** ```bash curl -X POST "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=ban_line" \ -d "id=123" ``` **Use Cases:** - ✅ Block fraudulent accounts - ✅ Prevent abuse - ✅ Enforce terms of service operationId: banLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [ban_line] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - id properties: id: type: integer description: Line ID to ban example: 123 responses: '200': description: Line banned successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /?action=unban_line: post: summary: Unban Line description: | Removes ban from a previously banned line. **Purpose:** Restore access to banned accounts. --- **Example Request:** ```bash curl -X POST "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=unban_line" \ -d "id=123" ``` **Use Cases:** - ✅ Unban false positives - ✅ Restore access after appeal - ✅ Second chances operationId: unbanLine tags: - Line API parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [unban_line] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - id properties: id: type: integer description: Line ID to unban example: 123 responses: '200': description: Line unbanned successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /?action=activity_logs: get: summary: Get Activity Logs description: | Retrieves activity logs showing admin and user actions in the panel. **Purpose:** Monitor all administrative actions and changes. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=activity_logs" ``` **Use Cases:** - ✅ Audit admin actions - ✅ Track changes to configurations - ✅ Monitor user behavior - ✅ Security auditing - ✅ Troubleshooting issues operationId: activityLogs tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [activity_logs] - name: limit in: query description: Number of records to return schema: type: integer default: 100 example: 50 - name: offset in: query description: Offset for pagination schema: type: integer default: 0 example: 0 responses: '200': description: Activity logs retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=live_connections: get: summary: Get Live Connections description: | Retrieves list of currently active connections to your streams. **Purpose:** Monitor real-time viewer activity. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=live_connections" ``` **Use Cases:** - ✅ Monitor active viewers - ✅ Track concurrent connections - ✅ Detect connection sharing - ✅ View viewer locations - ✅ Check stream load operationId: liveConnections tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [live_connections] responses: '200': description: Live connections retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=credit_logs: get: summary: Get Credit Transaction Logs description: | Retrieves credit transaction history for resellers. **Purpose:** Track credit additions, deductions, and transfers. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=credit_logs" ``` **Use Cases:** - ✅ Audit credit transactions - ✅ Track reseller spending - ✅ Monitor credit transfers - ✅ Financial reporting operationId: creditLogs tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [credit_logs] - name: user_id in: query description: Filter by specific user ID schema: type: integer example: 123 responses: '200': description: Credit logs retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=client_logs: get: summary: Get Client Connection Logs description: | Retrieves client connection attempt logs. **Purpose:** Monitor client connection history and patterns. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=client_logs" ``` **Use Cases:** - ✅ Track connection attempts - ✅ Detect suspicious activity - ✅ Monitor client devices - ✅ View connection history operationId: clientLogs tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [client_logs] - name: line_id in: query description: Filter by specific line ID schema: type: integer example: 123 responses: '200': description: Client logs retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=user_logs: get: summary: Get User Activity Logs description: | Retrieves logs of user actions in the panel. **Purpose:** Monitor user activity and changes. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=user_logs" ``` **Use Cases:** - ✅ Track user actions - ✅ Audit panel changes - ✅ Monitor reseller activity - ✅ Security monitoring operationId: userLogs tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [user_logs] - name: user_id in: query description: Filter by specific user ID schema: type: integer example: 123 responses: '200': description: User logs retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=stream_errors: get: summary: Get Stream Error Logs description: | Retrieves stream error logs and failure information. **Purpose:** Monitor stream health and troubleshoot issues. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=stream_errors" ``` **Use Cases:** - ✅ Troubleshoot stream issues - ✅ Monitor stream reliability - ✅ Identify problematic sources - ✅ Track downtime operationId: streamErrors tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [stream_errors] - name: stream_id in: query description: Filter by specific stream ID schema: type: integer example: 456 responses: '200': description: Stream errors retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=watch_output: get: summary: Watch Stream Output description: | Monitor live stream output and encoding details. **Purpose:** Real-time stream monitoring and diagnostics. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=watch_output&stream_id=456" ``` **Use Cases:** - ✅ Monitor encoding quality - ✅ Check bitrate and resolution - ✅ Diagnose playback issues - ✅ Verify stream settings operationId: watchOutput tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [watch_output] - name: stream_id in: query required: true description: Stream ID to monitor schema: type: integer example: 456 responses: '200': description: Stream output data retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=system_logs: get: summary: Get System Logs description: | Retrieves system-level logs and events. **Purpose:** Monitor system health and errors. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=system_logs" ``` **Use Cases:** - ✅ Monitor system health - ✅ Troubleshoot errors - ✅ Track system events - ✅ Performance monitoring operationId: systemLogs tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [system_logs] - name: limit in: query description: Number of records to return schema: type: integer default: 100 example: 50 responses: '200': description: System logs retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=login_logs: get: summary: Get Login Attempt Logs description: | Retrieves logs of login attempts to the panel. **Purpose:** Security monitoring and access auditing. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=login_logs" ``` **Use Cases:** - ✅ Monitor login attempts - ✅ Detect brute force attacks - ✅ Track successful logins - ✅ Security auditing operationId: loginLogs tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [login_logs] - name: success in: query description: Filter by success status (1 = successful, 0 = failed) schema: type: integer enum: [0, 1] example: 0 responses: '200': description: Login logs retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=restream_logs: get: summary: Get Restream Activity Logs description: | Retrieves logs of restreaming activity. **Purpose:** Monitor reseller restreaming operations. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=restream_logs" ``` **Use Cases:** - ✅ Track restream usage - ✅ Monitor reseller activity - ✅ Audit stream distribution - ✅ Performance monitoring operationId: restreamLogs tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [restream_logs] responses: '200': description: Restream logs retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' /?action=mag_events: get: summary: Get MAG Device Events description: | Retrieves event logs for MAG devices. **Purpose:** Monitor MAG device activity and events. --- **Example Request:** ```bash curl "http://your-server.com/cSbuFLhp/?api_key=8D3135D30437F86EAE2FA4A2A8345000&action=mag_events" ``` **Use Cases:** - ✅ Track MAG device usage - ✅ Monitor device events - ✅ Troubleshoot MAG issues - ✅ View device activity operationId: magEvents tags: - Logs & Events parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: type: string enum: [mag_events] - name: mag_id in: query description: Filter by specific MAG device ID schema: type: integer example: 202 responses: '200': description: MAG events retrieved successfully content: application/json: schema: allOf: - $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/Unauthorized' # ================================================================================== # CATEGORY 5: USER API - User Account Management # ================================================================================== /?action=create_user: post: summary: Create New User Account description: Create admin, reseller, or user account tags: [User API] operationId: createUser parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query required: true schema: {type: string, enum: [create_user]} requestBody: required: true content: application/x-www-form-urlencoded: schema: required: [username, password] properties: username: {type: string, example: "newadmin"} password: {type: string, example: "secure123"} email: {type: string, example: "admin@example.com"} member_group_id: {type: integer, description: "1=Admin, 2=Reseller, 3=User", example: 2} responses: '200': {description: User created, content: {application/json: {schema: {$ref: '#/components/schemas/SuccessResponse'}}}} /?action=edit_user: post: summary: Edit User Account tags: [User API] operationId: editUser parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [edit_user]} requestBody: content: application/x-www-form-urlencoded: schema: required: [id] properties: id: {type: integer, example: 5} password: {type: string} email: {type: string} responses: '200': {description: User updated} /?action=delete_user: post: summary: Delete User Account tags: [User API] operationId: deleteUser parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [delete_user]} requestBody: content: application/x-www-form-urlencoded: schema: required: [id] properties: id: {type: integer, example: 5} responses: '200': {description: User deleted} /?action=enable_user: post: summary: Enable User Account tags: [User API] operationId: enableUser parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [enable_user]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 5} responses: '200': {description: User enabled} /?action=disable_user: post: summary: Disable User Account tags: [User API] operationId: disableUser parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [disable_user]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 5} responses: '200': {description: User disabled} /?action=add_credits: post: summary: Add Credits to Reseller tags: [User API] operationId: addCredits parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [add_credits]} requestBody: content: application/x-www-form-urlencoded: schema: properties: user_id: {type: integer, example: 5} amount: {type: number, example: 100.00} responses: '200': {description: Credits added} # ================================================================================== # CATEGORY 6: MAG API - MAG Device Management # ================================================================================== /?action=create_mag: post: summary: Create MAG Device tags: [MAG API] operationId: createMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [create_mag]} requestBody: content: application/x-www-form-urlencoded: schema: required: [mac] properties: mac: {type: string, example: "00:1A:79:XX:XX:XX"} exp_date: {type: string, example: "2025-12-31"} bouquets_selected: {type: array, items: {type: integer}} responses: '200': {description: MAG created} /?action=edit_mag: post: summary: Edit MAG Device tags: [MAG API] operationId: editMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [edit_mag]} requestBody: content: application/x-www-form-urlencoded: schema: required: [id] properties: id: {type: integer, example: 202} exp_date: {type: string} responses: '200': {description: MAG updated} /?action=delete_mag: post: summary: Delete MAG Device tags: [MAG API] operationId: deleteMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [delete_mag]} requestBody: content: application/x-www-form-urlencoded: schema: required: [id] properties: id: {type: integer, example: 202} responses: '200': {description: MAG deleted} /?action=enable_mag: post: summary: Enable MAG Device tags: [MAG API] operationId: enableMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [enable_mag]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 202} responses: '200': {description: MAG enabled} /?action=disable_mag: post: summary: Disable MAG Device tags: [MAG API] operationId: disableMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [disable_mag]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 202} responses: '200': {description: MAG disabled} /?action=ban_mag: post: summary: Ban MAG Device tags: [MAG API] operationId: banMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [ban_mag]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 202} responses: '200': {description: MAG banned} /?action=unban_mag: post: summary: Unban MAG Device tags: [MAG API] operationId: unbanMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [unban_mag]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 202} responses: '200': {description: MAG unbanned} /?action=convert_mag_to_line: post: summary: Convert MAG to Line description: Convert MAG device to M3U subscription line tags: [MAG API] operationId: convertMagToLine parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [convert_mag_to_line]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 202} responses: '200': {description: Converted to line} /?action=get_mag: get: summary: Get MAG Device Details tags: [MAG API] operationId: getMag parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [get_mag]} - name: id in: query required: true schema: {type: integer, example: 202} responses: '200': {description: MAG details} # ================================================================================== # CATEGORY 7: ENIGMA API - Enigma2 Device Management # ================================================================================== /?action=create_enigma: post: summary: Create Enigma2 Device tags: [Enigma API] operationId: createEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [create_enigma]} requestBody: content: application/x-www-form-urlencoded: schema: required: [mac] properties: mac: {type: string, example: "00:1A:79:YY:YY:YY"} exp_date: {type: string, example: "2025-12-31"} responses: '200': {description: Enigma created} /?action=edit_enigma: post: summary: Edit Enigma2 Device tags: [Enigma API] operationId: editEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [edit_enigma]} requestBody: content: application/x-www-form-urlencoded: schema: required: [id] properties: id: {type: integer, example: 303} responses: '200': {description: Enigma updated} /?action=delete_enigma: post: summary: Delete Enigma2 Device tags: [Enigma API] operationId: deleteEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [delete_enigma]} requestBody: content: application/x-www-form-urlencoded: schema: required: [id] properties: id: {type: integer, example: 303} responses: '200': {description: Enigma deleted} /?action=enable_enigma: post: summary: Enable Enigma2 Device tags: [Enigma API] operationId: enableEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [enable_enigma]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 303} responses: '200': {description: Enigma enabled} /?action=disable_enigma: post: summary: Disable Enigma2 Device tags: [Enigma API] operationId: disableEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [disable_enigma]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 303} responses: '200': {description: Enigma disabled} /?action=ban_enigma: post: summary: Ban Enigma2 Device tags: [Enigma API] operationId: banEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [ban_enigma]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 303} responses: '200': {description: Enigma banned} /?action=unban_enigma: post: summary: Unban Enigma2 Device tags: [Enigma API] operationId: unbanEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [unban_enigma]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 303} responses: '200': {description: Enigma unbanned} /?action=convert_enigma_to_line: post: summary: Convert Enigma to Line tags: [Enigma API] operationId: convertEnigmaToLine parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [convert_enigma_to_line]} requestBody: content: application/x-www-form-urlencoded: schema: properties: id: {type: integer, example: 303} responses: '200': {description: Converted to line} /?action=get_enigma: get: summary: Get Enigma2 Details tags: [Enigma API] operationId: getEnigma parameters: - $ref: '#/components/parameters/ApiKey' - name: action in: query schema: {type: string, enum: [get_enigma]} - name: id in: query required: true schema: {type: integer, example: 303} responses: '200': {description: Enigma details} # ================================================================================== # CATEGORY 8-15: CONTENT & SYSTEM MANAGEMENT (Compact format) # ================================================================================== # Streams API /?action=create_stream: post: summary: Create Live Stream tags: [Streams API] operationId: createStream parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_stream]}}] requestBody: {content: {application/x-www-form-urlencoded: {schema: {required: [stream_display_name, stream_source], properties: {stream_display_name: {type: string, example: "CNN HD"}, stream_source: {type: string, example: "http://source.com/stream.m3u8"}, category_id: {type: integer, example: 1}}}}}} responses: {'200': {description: Stream created}} /?action=edit_stream: post: summary: Edit Live Stream tags: [Streams API] operationId: editStream parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_stream]}}] requestBody: {content: {application/x-www-form-urlencoded: {schema: {required: [id], properties: {id: {type: integer, example: 456}}}}}} responses: {'200': {description: Stream updated}} /?action=delete_stream: post: summary: Delete Live Stream tags: [Streams API] operationId: deleteStream parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_stream]}}] requestBody: {content: {application/x-www-form-urlencoded: {schema: {required: [id], properties: {id: {type: integer, example: 456}}}}}} responses: {'200': {description: Stream deleted}} /?action=start_stream: post: summary: Start Stream tags: [Streams API] operationId: startStream parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [start_stream]}}] requestBody: {content: {application/x-www-form-urlencoded: {schema: {properties: {id: {type: integer, example: 456}}}}}} responses: {'200': {description: Stream started}} /?action=stop_stream: post: summary: Stop Stream tags: [Streams API] operationId: stopStream parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [stop_stream]}}] requestBody: {content: {application/x-www-form-urlencoded: {schema: {properties: {id: {type: integer, example: 456}}}}}} responses: {'200': {description: Stream stopped}} /?action=get_stream: get: summary: Get Stream Details tags: [Streams API] operationId: getStream parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_stream]}}, {name: id, in: query, required: true, schema: {type: integer, example: 456}}] responses: {'200': {description: Stream details}} # Channel API /?action=create_channel: post: {summary: Create Channel, tags: [Channel API], operationId: createChannel, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_channel]}}], responses: {'200': {description: Channel created}}} /?action=edit_channel: post: {summary: Edit Channel, tags: [Channel API], operationId: editChannel, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_channel]}}], responses: {'200': {description: Channel updated}}} /?action=delete_channel: post: {summary: Delete Channel, tags: [Channel API], operationId: deleteChannel, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_channel]}}], responses: {'200': {description: Channel deleted}}} /?action=enable_channel: post: {summary: Enable Channel, tags: [Channel API], operationId: enableChannel, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [enable_channel]}}], responses: {'200': {description: Channel enabled}}} /?action=disable_channel: post: {summary: Disable Channel, tags: [Channel API], operationId: disableChannel, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [disable_channel]}}], responses: {'200': {description: Channel disabled}}} /?action=get_channel: get: {summary: Get Channel Details, tags: [Channel API], operationId: getChannel, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_channel]}}], responses: {'200': {description: Channel details}}} # Station API /?action=create_station: post: {summary: Create Radio Station, tags: [Station API], operationId: createStation, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_station]}}], responses: {'200': {description: Station created}}} /?action=edit_station: post: {summary: Edit Radio Station, tags: [Station API], operationId: editStation, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_station]}}], responses: {'200': {description: Station updated}}} /?action=delete_station: post: {summary: Delete Radio Station, tags: [Station API], operationId: deleteStation, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_station]}}], responses: {'200': {description: Station deleted}}} /?action=enable_station: post: {summary: Enable Radio Station, tags: [Station API], operationId: enableStation, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [enable_station]}}], responses: {'200': {description: Station enabled}}} /?action=disable_station: post: {summary: Disable Radio Station, tags: [Station API], operationId: disableStation, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [disable_station]}}], responses: {'200': {description: Station disabled}}} /?action=get_station: get: {summary: Get Radio Station Details, tags: [Station API], operationId: getStation, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_station]}}], responses: {'200': {description: Station details}}} # Movie API /?action=create_movie: post: {summary: Create VOD Movie, tags: [Movie API], operationId: createMovie, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_movie]}}], responses: {'200': {description: Movie created}}} /?action=edit_movie: post: {summary: Edit VOD Movie, tags: [Movie API], operationId: editMovie, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_movie]}}], responses: {'200': {description: Movie updated}}} /?action=delete_movie: post: {summary: Delete VOD Movie, tags: [Movie API], operationId: deleteMovie, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_movie]}}], responses: {'200': {description: Movie deleted}}} /?action=enable_movie: post: {summary: Enable VOD Movie, tags: [Movie API], operationId: enableMovie, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [enable_movie]}}], responses: {'200': {description: Movie enabled}}} /?action=disable_movie: post: {summary: Disable VOD Movie, tags: [Movie API], operationId: disableMovie, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [disable_movie]}}], responses: {'200': {description: Movie disabled}}} /?action=get_movie: get: {summary: Get VOD Movie Details, tags: [Movie API], operationId: getMovie, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_movie]}}], responses: {'200': {description: Movie details}}} # Series API /?action=create_series: post: {summary: Create TV Series, tags: [Series API], operationId: createSeries, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_series]}}], responses: {'200': {description: Series created}}} /?action=edit_series: post: {summary: Edit TV Series, tags: [Series API], operationId: editSeries, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_series]}}], responses: {'200': {description: Series updated}}} /?action=delete_series: post: {summary: Delete TV Series, tags: [Series API], operationId: deleteSeries, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_series]}}], responses: {'200': {description: Series deleted}}} /?action=get_series: get: {summary: Get TV Series Details, tags: [Series API], operationId: getSeries, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_series]}}], responses: {'200': {description: Series details}}} # Episode API /?action=create_episode: post: {summary: Create Episode, tags: [Episode API], operationId: createEpisode, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_episode]}}], responses: {'200': {description: Episode created}}} /?action=edit_episode: post: {summary: Edit Episode, tags: [Episode API], operationId: editEpisode, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_episode]}}], responses: {'200': {description: Episode updated}}} /?action=delete_episode: post: {summary: Delete Episode, tags: [Episode API], operationId: deleteEpisode, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_episode]}}], responses: {'200': {description: Episode deleted}}} /?action=enable_episode: post: {summary: Enable Episode, tags: [Episode API], operationId: enableEpisode, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [enable_episode]}}], responses: {'200': {description: Episode enabled}}} /?action=disable_episode: post: {summary: Disable Episode, tags: [Episode API], operationId: disableEpisode, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [disable_episode]}}], responses: {'200': {description: Episode disabled}}} /?action=get_episode: get: {summary: Get Episode Details, tags: [Episode API], operationId: getEpisode, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_episode]}}], responses: {'200': {description: Episode details}}} # Server API /?action=install_server: post: {summary: Install New Server, tags: [Server API], operationId: installServer, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [install_server]}}], responses: {'200': {description: Server installed}}} /?action=edit_server: post: {summary: Edit Server Settings, tags: [Server API], operationId: editServer, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_server]}}], responses: {'200': {description: Server updated}}} /?action=delete_server: post: {summary: Remove Server, tags: [Server API], operationId: deleteServer, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_server]}}], responses: {'200': {description: Server removed}}} /?action=restart_server: post: {summary: Restart Server Services, tags: [Server API], operationId: restartServer, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [restart_server]}}], responses: {'200': {description: Server restarting}}} /?action=get_server_info: get: {summary: Get Server Information, tags: [Server API], operationId: getServerInfo, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_server_info]}}], responses: {'200': {description: Server info}}} /?action=get_server_stats: get: {summary: Get Server Statistics, tags: [Server API], operationId: getServerStats, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_server_stats]}}], responses: {'200': {description: Server stats}}} /?action=install_load_balancer: post: {summary: Install Load Balancer, tags: [Server API], operationId: installLoadBalancer, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [install_load_balancer]}}], responses: {'200': {description: Load balancer installed}}} /?action=edit_load_balancer: post: {summary: Edit Load Balancer, tags: [Server API], operationId: editLoadBalancer, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_load_balancer]}}], responses: {'200': {description: Load balancer updated}}} # Settings & System API /?action=get_settings: get: {summary: Get Panel Settings, tags: [Settings & System], operationId: getSettings, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_settings]}}], responses: {'200': {description: Panel settings}}} /?action=edit_settings: post: {summary: Update Panel Settings, tags: [Settings & System], operationId: editSettings, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_settings]}}], responses: {'200': {description: Settings updated}}} /?action=reload_nginx: post: {summary: Reload Nginx Configuration, tags: [Settings & System], operationId: reloadNginx, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [reload_nginx]}}], responses: {'200': {description: Nginx reloaded}}} /?action=clear_cache: post: {summary: Clear System Cache, tags: [Settings & System], operationId: clearCache, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [clear_cache]}}], responses: {'200': {description: Cache cleared}}} /?action=backup_database: post: {summary: Backup Database, tags: [Settings & System], operationId: backupDatabase, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [backup_database]}}], responses: {'200': {description: Backup created}}} /?action=restore_database: post: {summary: Restore Database, tags: [Settings & System], operationId: restoreDatabase, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [restore_database]}}], responses: {'200': {description: Database restored}}} /?action=get_categories: get: {summary: Get All Categories, tags: [Settings & System], operationId: getCategories, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_categories]}}], responses: {'200': {description: Categories list}}} /?action=create_category: post: {summary: Create Category, tags: [Settings & System], operationId: createCategory, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_category]}}], responses: {'200': {description: Category created}}} /?action=edit_category: post: {summary: Edit Category, tags: [Settings & System], operationId: editCategory, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_category]}}], responses: {'200': {description: Category updated}}} /?action=delete_category: post: {summary: Delete Category, tags: [Settings & System], operationId: deleteCategory, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_category]}}], responses: {'200': {description: Category deleted}}} /?action=get_bouquets: get: {summary: Get All Bouquets/Packages, tags: [Settings & System], operationId: getBouquets, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [get_bouquets]}}], responses: {'200': {description: Bouquets list}}} /?action=create_bouquet: post: {summary: Create Bouquet, tags: [Settings & System], operationId: createBouquet, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [create_bouquet]}}], responses: {'200': {description: Bouquet created}}} /?action=edit_bouquet: post: {summary: Edit Bouquet, tags: [Settings & System], operationId: editBouquet, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [edit_bouquet]}}], responses: {'200': {description: Bouquet updated}}} /?action=delete_bouquet: post: {summary: Delete Bouquet, tags: [Settings & System], operationId: deleteBouquet, parameters: [{$ref: '#/components/parameters/ApiKey'}, {name: action, in: query, schema: {type: string, enum: [delete_bouquet]}}], responses: {'200': {description: Bouquet deleted}}} components: securitySchemes: ApiKeyAuth: type: apiKey in: query name: api_key description: | API key for authentication. Generate from your admin profile. **Example:** `8D3135D30437F86EAE2FA4A2A8345000` parameters: ApiKey: name: api_key in: query required: true description: Your API key for authentication schema: type: string example: "8D3135D30437F86EAE2FA4A2A8345000" Action: name: action in: query required: true description: The API action to perform schema: type: string example: user_info schemas: SuccessResponse: type: object required: - status - data properties: status: type: string enum: [STATUS_SUCCESS] description: Response status indicator data: type: object description: Response data (structure varies by endpoint) example: status: "STATUS_SUCCESS" data: {} ErrorResponse: type: object required: - status - error properties: status: type: string enum: [STATUS_FAILURE] description: Error status indicator error: type: string description: Error message describing what went wrong example: status: "STATUS_FAILURE" error: "Invalid API key" UserInfo: type: object description: User information object properties: id: type: string description: User ID example: "1" username: type: string description: Username example: "admin" member_group_id: type: string description: Member group ID (1 = Administrator) example: "1" email: type: string format: email description: User email address example: "admin@example.com" date_registered: type: string description: Unix timestamp of registration date example: "1609459200" last_login: type: string description: Unix timestamp of last login example: "1734048000" status: type: string description: User status (1 = Active, 0 = Inactive) enum: ["0", "1"] example: "1" Line: type: object description: Subscription line object properties: id: type: string description: Line ID example: "123" username: type: string description: Line username example: "testuser" password: type: string description: Line password example: "testpass123" exp_date: type: string description: Expiration date (Unix timestamp) example: "1735689600" max_connections: type: string description: Maximum concurrent connections allowed example: "1" is_trial: type: string description: Trial status (0 = No, 1 = Yes) enum: ["0", "1"] example: "0" enabled: type: string description: Line status (0 = Disabled, 1 = Enabled) enum: ["0", "1"] example: "1" is_restreamer: type: string description: Reseller status (0 = No, 1 = Yes) enum: ["0", "1"] example: "0" bouquet: type: string description: Assigned bouquet/package IDs (JSON array) example: "[1,2,3]" notes: type: string description: Admin notes example: "Premium customer" created_at: type: string description: Creation date (Unix timestamp) example: "1609459200" responses: Unauthorized: description: Authentication failed - Invalid API key or access code content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: "STATUS_FAILURE" error: "Invalid API key" ServerError: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: "STATUS_FAILURE" error: "Internal server error" NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: "STATUS_FAILURE" error: "Resource not found"