diff --git a/openapi.yaml b/openapi.yaml index 6d6aceb..4ec98c3 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1832,6 +1832,710 @@ paths: '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: