definitions: controller.AssetPermissionBatchResult: properties: results: additionalProperties: $ref: '#/definitions/controller.AssetPermissionResult' type: object type: object controller.AssetPermissionMultiAccountResult: properties: results: additionalProperties: $ref: '#/definitions/controller.AssetPermissionBatchResult' description: accountId -> batch results type: object type: object controller.AssetPermissionResult: properties: allowed: type: boolean reason: type: string restrictions: additionalProperties: true type: object rule_id: type: integer rule_name: type: string type: object controller.CheckPermissionRequest: properties: account_id: minimum: 0 type: integer action: $ref: '#/definitions/model.AuthAction' asset_id: minimum: 0 type: integer node_id: minimum: 0 type: integer required: - action type: object controller.CheckTimeAccessRequest: properties: template_id: type: integer timezone: type: string required: - template_id type: object controller.CheckTimeAccessResponse: properties: allowed: type: boolean checked_at: type: string template_id: type: integer timezone: type: string type: object controller.HttpResponse: properties: code: type: integer data: {} message: type: string type: object controller.ListData: properties: count: type: integer list: items: {} type: array type: object model.AccessAuth: properties: allow: type: boolean cmd_ids: items: type: integer type: array end: type: string ranges: items: $ref: '#/definitions/model.Range' type: array start: type: string type: object model.AccessControl: properties: cmd_ids: description: Command control items: type: integer type: array custom_time_ranges: description: Direct definition items: $ref: '#/definitions/model.TimeRange' type: array ip_whitelist: items: type: string type: array max_sessions: type: integer session_timeout: type: integer template_ids: items: type: integer type: array time_template: allOf: - $ref: '#/definitions/model.TimeTemplateReference' description: Time control options timezone: type: string type: object model.AccessTimeControl: properties: comment: description: Description of the time restriction type: string enabled: type: boolean time_ranges: items: $ref: '#/definitions/model.TimeRange' type: array timezone: description: e.g., "Asia/Shanghai" type: string type: object model.Account: properties: account: type: string account_type: type: integer asset_count: type: integer created_at: type: string creator_id: type: integer id: type: integer name: type: string password: type: string permissions: items: type: string type: array phrase: type: string pk: type: string resource_id: type: integer updated_at: type: string updater_id: type: integer type: object model.AccountAuthorization: properties: permissions: allOf: - $ref: '#/definitions/model.AuthPermissions' description: V2 permissions (connect, file_upload, etc.) rids: description: Role IDs for ACL system items: type: integer type: array type: object model.Asset: properties: access_auth: allOf: - $ref: '#/definitions/model.AccessAuth' description: 'Deprecated: Use V2 fields below' access_time_control: allOf: - $ref: '#/definitions/model.AccessTimeControl' description: V2 Access Control (replaces AccessAuth) asset_command_control: $ref: '#/definitions/model.AssetCommandControl' authorization: $ref: '#/definitions/model.AuthorizationMap' comment: type: string connectable: type: boolean created_at: type: string creator_id: type: integer gateway_id: type: integer id: type: integer ip: type: string name: type: string node_chain: type: string parent_id: type: integer permissions: items: type: string type: array protocols: items: type: string type: array resource_id: type: integer updated_at: type: string updater_id: type: integer type: object model.AssetCommandControl: properties: cmd_ids: description: Command IDs to control items: type: integer type: array comment: description: Description of the command restriction type: string enabled: type: boolean template_ids: description: Command template IDs items: type: integer type: array type: object model.AuthAction: enum: - connect - file_upload - file_download - copy - paste - share type: string x-enum-varnames: - ActionConnect - ActionFileUpload - ActionFileDownload - ActionCopy - ActionPaste - ActionShare model.AuthPermissions: properties: connect: type: boolean copy: type: boolean file_download: type: boolean file_upload: type: boolean paste: type: boolean share: type: boolean type: object model.AuthResult: properties: allowed: type: boolean permissions: $ref: '#/definitions/model.AuthPermissions' reason: type: string restrictions: additionalProperties: true type: object rule_id: type: integer rule_name: type: string type: object model.Authorization: properties: account_id: type: integer asset_id: type: integer created_at: type: string creator_id: type: integer id: type: integer node_id: type: integer resource_id: type: integer rids: items: type: integer type: array updated_at: type: string updater_id: type: integer type: object model.AuthorizationMap: additionalProperties: $ref: '#/definitions/model.AccountAuthorization' type: object model.AuthorizationV2: properties: access_control: allOf: - $ref: '#/definitions/model.AccessControl' description: Access control with time template support account_selector: $ref: '#/definitions/model.TargetSelector' asset_selector: $ref: '#/definitions/model.TargetSelector' created_at: type: string creator_id: type: integer description: type: string enabled: type: boolean id: type: integer name: type: string node_selector: allOf: - $ref: '#/definitions/model.TargetSelector' description: Target selectors permissions: allOf: - $ref: '#/definitions/model.AuthPermissions' description: Permissions configuration resource_id: description: Standard fields type: integer rids: description: Role IDs for ACL integration items: type: integer type: array updated_at: type: string updater_id: type: integer valid_from: allOf: - $ref: '#/definitions/model.CustomTime' description: Rule validity period valid_to: $ref: '#/definitions/model.CustomTime' type: object model.Command: properties: category: allOf: - $ref: '#/definitions/model.CommandCategory' description: Enhanced fields for better management cmd: type: string created_at: type: string creator_id: type: integer description: type: string enable: type: boolean id: type: integer is_global: description: Global predefined command type: boolean is_re: type: boolean name: type: string permissions: items: type: string type: array resource_id: type: integer risk_level: $ref: '#/definitions/model.CommandRiskLevel' tags: items: type: string type: array updated_at: type: string updater_id: type: integer type: object model.CommandCategory: enum: - security - system - database - network - file - developer - custom type: string x-enum-comments: CategoryCustom: Custom commands CategoryDatabase: Database operations CategoryDeveloper: Development related CategoryFile: File operations CategoryNetwork: Network operations CategorySecurity: Security related CategorySystem: System operations x-enum-varnames: - CategorySecurity - CategorySystem - CategoryDatabase - CategoryNetwork - CategoryFile - CategoryDeveloper - CategoryCustom model.CommandRiskLevel: enum: - 0 - 1 - 2 - 3 type: integer x-enum-comments: RiskLevelCritical: Critical danger RiskLevelDanger: Dangerous commands RiskLevelSafe: Safe commands RiskLevelWarning: Warning level x-enum-varnames: - RiskLevelSafe - RiskLevelWarning - RiskLevelDanger - RiskLevelCritical model.CommandTemplate: properties: category: $ref: '#/definitions/model.CommandCategory' cmd_ids: items: type: integer type: array created_at: type: string creator_id: type: integer description: type: string id: type: integer is_builtin: description: Built-in template type: boolean name: type: string resource_id: type: integer updated_at: type: string updater_id: type: integer type: object model.Config: properties: created_at: type: string creator_id: type: integer default_permissions: allOf: - $ref: '#/definitions/model.DefaultPermissions' description: Default permissions for authorization creation id: type: integer timeout: type: integer updated_at: type: string updater_id: type: integer type: object model.CustomTime: properties: time.Time: type: string type: object model.DefaultPermissions: properties: connect: type: boolean copy: type: boolean file_download: type: boolean file_upload: type: boolean paste: type: boolean share: type: boolean type: object model.Gateway: properties: account: type: string account_type: type: integer asset_count: type: integer created_at: type: string creator_id: type: integer host: type: string id: type: integer name: type: string password: type: string permissions: items: type: string type: array phrase: type: string pk: type: string port: type: integer resource_id: type: integer updated_at: type: string updater_id: type: integer type: object model.History: properties: action_type: type: integer created_at: type: string creator_id: type: integer id: type: integer new: $ref: '#/definitions/model.Map-string-any' old: $ref: '#/definitions/model.Map-string-any' remote_ip: type: string target_id: type: integer type: type: string type: object model.JSON: additionalProperties: true type: object model.Map-int-model_Slice-int: additionalProperties: items: type: integer type: array type: object model.Map-string-any: additionalProperties: {} type: object model.Node: properties: access_auth: $ref: '#/definitions/model.AccessAuth' asset_count: type: integer authorization: $ref: '#/definitions/model.Map-int-model_Slice-int' children: items: $ref: '#/definitions/model.Node' type: array comment: type: string created_at: type: string creator_id: type: integer gateway_id: type: integer has_child: type: boolean id: type: integer name: type: string parent_id: type: integer permissions: items: type: string type: array protocols: items: type: string type: array resource_id: type: integer updated_at: type: string updater_id: type: integer type: object model.PublicKey: properties: created_at: type: string creator_id: description: ResourceId int `json:"resource_id"` type: integer id: type: integer name: type: string pk: type: string uid: type: integer updated_at: type: string updater_id: type: integer username: type: string type: object model.QuickCommand: properties: command: description: Actual command to execute type: string created_at: type: string creator_id: description: Creator ID type: integer description: description: Command description type: string id: type: integer is_global: description: Whether it's a global command type: boolean name: description: Command name type: string updated_at: type: string type: object model.Range: properties: times: items: type: string type: array week: type: integer type: object model.SelectorType: enum: - all - ids - regex - tags type: string x-enum-varnames: - SelectorTypeAll - SelectorTypeIds - SelectorTypeRegex - SelectorTypeTags model.Session: properties: account_id: type: integer account_info: type: string asset_id: type: integer asset_info: type: string client_ip: type: string closed_at: type: string cmd_count: type: integer created_at: type: string duration: type: integer gateway_id: type: integer gateway_info: type: string id: type: integer protocol: type: string session_id: type: string session_type: type: integer share_id: type: integer status: type: integer uid: type: integer updated_at: type: string user_name: type: string type: object model.SessionCmd: properties: cmd: type: string created_at: type: string id: type: integer level: type: integer result: type: string session_id: type: string type: object model.SessionOptionAsset: properties: id: type: integer name: type: string type: object model.Share: properties: account_id: type: integer asset_id: type: integer created_at: type: string creator_id: type: integer end: type: string id: type: integer no_limit: type: boolean protocol: type: string start: type: string times: type: integer updated_at: type: string updater_id: type: integer uuid: type: string type: object model.StatAccount: properties: count: type: integer name: type: string type: object model.StatAsset: properties: asset: type: integer connect: type: integer session: type: integer time: type: string user: type: integer type: object model.StatAssetType: properties: count: type: integer id: type: integer name: type: string type: object model.StatCount: properties: asset: type: integer connect: type: integer gateway: description: TotalUser int64 `json:"total_user"` type: integer session: type: integer total_asset: type: integer total_gateway: type: integer user: type: integer type: object model.StatCountOfUser: properties: asset: type: integer connect: type: integer session: type: integer total_asset: type: integer type: object model.StatRankOfUser: properties: count: type: integer last_time: type: string uid: type: integer type: object model.StorageConfig: properties: config: $ref: '#/definitions/model.StorageConfigMap' created_at: type: string creator_id: description: Standard fields type: integer description: type: string enabled: type: boolean id: type: integer is_primary: type: boolean name: type: string priority: type: integer type: $ref: '#/definitions/model.StorageType' updated_at: type: string updater_id: type: integer type: object model.StorageConfigMap: additionalProperties: type: string type: object model.StorageType: enum: - local - s3 - minio - oss - cos - azure - obs - oos type: string x-enum-varnames: - StorageTypeLocal - StorageTypeS3 - StorageTypeMinio - StorageTypeOSS - StorageTypeCOS - StorageTypeAzure - StorageTypeOBS - StorageTypeOOS model.TargetSelector: properties: exclude_ids: items: type: integer type: array type: $ref: '#/definitions/model.SelectorType' values: items: type: string type: array type: object model.TimeRange: properties: end_time: type: string start_time: type: string weekdays: items: type: integer type: array type: object model.TimeTemplate: properties: category: description: work, maintenance, emergency, etc. type: string created_at: type: string creator_id: type: integer description: type: string id: type: integer is_active: type: boolean is_builtin: description: Status and metadata type: boolean name: type: string resource_id: description: Standard fields type: integer time_ranges: description: Time configuration items: $ref: '#/definitions/model.TimeRange' type: array timezone: type: string updated_at: type: string updater_id: type: integer usage_count: description: Usage statistics type: integer type: object model.TimeTemplateReference: properties: custom_ranges: description: Additional custom time ranges items: $ref: '#/definitions/model.TimeRange' type: array template_id: type: integer template_name: description: For display type: string type: object model.UserPreference: properties: created_at: type: string cursor_style: description: Cursor style (block, bar, underline) type: string font_family: description: Font family type: string font_size: description: Font size type: integer id: type: integer letter_spacing: description: Letter spacing type: number line_height: description: Line height type: number settings: allOf: - $ref: '#/definitions/model.JSON' description: Additional settings in JSON format theme: description: Theme name type: string updated_at: type: string user_id: description: User ID with unique index type: integer type: object info: contact: {} paths: /account: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: name or account in: query name: search type: string - description: account id in: query name: id type: integer - description: account ids in: query name: ids type: string - description: account name in: query name: name type: string - description: is info mode in: query name: info type: boolean - description: account type in: query name: type type: integer responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Account' type: array type: object type: object tags: - account post: parameters: - description: account in: body name: account required: true schema: $ref: '#/definitions/model.Account' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - account /account/:id: delete: parameters: - description: account id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - account put: parameters: - description: account id in: path name: id required: true type: integer - description: account in: body name: account required: true schema: $ref: '#/definitions/model.Account' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - account /asset: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: name or ip in: query name: search type: string - description: asset id in: query name: id type: integer - description: asset ids in: query name: ids type: string - description: asset's parent id in: query name: parent_id type: integer - description: asset name in: query name: name type: string - description: asset ip in: query name: ip type: string - description: is info mode in: query name: info type: boolean responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Asset' type: array type: object type: object tags: - asset post: parameters: - description: asset in: body name: asset required: true schema: $ref: '#/definitions/model.Asset' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - asset /asset/:id: delete: parameters: - description: asset id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - asset put: parameters: - description: asset id in: path name: id required: true type: integer - description: asset in: body name: asset required: true schema: $ref: '#/definitions/model.Asset' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - asset /asset/:id/permissions: get: parameters: - description: asset id in: path name: id required: true type: integer - description: account ids (comma separated, e.g. 123,456,789) in: query name: account_ids type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/controller.AssetPermissionMultiAccountResult' type: object tags: - asset /authorization: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: node id in: query name: node_id type: integer - description: asset id in: query name: asset_id type: integer - description: account id in: query name: account_id type: integer responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Account' type: array type: object type: object tags: - authorization post: parameters: - description: authorization in: body name: authorization required: true schema: $ref: '#/definitions/model.Authorization' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - authorization /authorization/:id: delete: parameters: - description: authorization id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - authorization /authorization_v2: get: parameters: - description: page index in: query name: page_index type: integer - description: page size in: query name: page_size type: integer - description: filter by enabled status in: query name: enabled type: boolean - description: search by name or description in: query name: search type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.AuthorizationV2' type: array type: object type: object tags: - authorization_v2 post: parameters: - description: authorization rule in: body name: authorization required: true schema: $ref: '#/definitions/model.AuthorizationV2' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - authorization_v2 /authorization_v2/:id: delete: parameters: - description: authorization id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - authorization_v2 get: parameters: - description: authorization id in: path name: id required: true type: integer responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.AuthorizationV2' type: object tags: - authorization_v2 put: parameters: - description: authorization id in: path name: id required: true type: integer - description: authorization rule in: body name: authorization required: true schema: $ref: '#/definitions/model.AuthorizationV2' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - authorization_v2 /authorization_v2/:id/clone: post: parameters: - description: source authorization id in: path name: id required: true type: integer - description: clone request in: body name: body required: true schema: type: object responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.AuthorizationV2' type: object tags: - authorization_v2 /authorization_v2/check: post: parameters: - description: permission check request in: body name: request required: true schema: $ref: '#/definitions/controller.CheckPermissionRequest' responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.AuthResult' type: object tags: - authorization_v2 /command: get: parameters: - description: page index in: query name: page_index required: true type: integer - description: page size in: query name: page_size required: true type: integer - description: name or cmd in: query name: search type: string - description: command id in: query name: id type: integer - description: command ids in: query name: ids type: string - description: command name in: query name: name type: string - description: command enable in: query name: enable type: integer - description: command category in: query name: category type: string - description: command risk level in: query name: risk_level type: integer - description: is info mode in: query name: info type: boolean - description: name or cmd in: query name: search type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Command' type: array type: object type: object tags: - command post: parameters: - description: command in: body name: command required: true schema: $ref: '#/definitions/model.Command' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - command /command/:id: delete: parameters: - description: command id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - command put: parameters: - description: command id in: path name: id required: true type: integer - description: command in: body name: command required: true schema: $ref: '#/definitions/model.Command' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - command /command_template: get: parameters: - description: page index in: query name: page_index type: integer - description: page size in: query name: page_size type: integer - description: template category in: query name: category type: string - description: filter by builtin status in: query name: builtin type: boolean - description: info mode in: query name: info type: boolean responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: items: $ref: '#/definitions/model.CommandTemplate' type: array type: object tags: - command_template post: parameters: - description: command template in: body name: template required: true schema: $ref: '#/definitions/model.CommandTemplate' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - command_template /command_template/:id: delete: parameters: - description: template id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - command_template put: parameters: - description: template id in: path name: id required: true type: integer - description: command template in: body name: template required: true schema: $ref: '#/definitions/model.CommandTemplate' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - command_template /command_template/:id/commands: get: parameters: - description: template id in: path name: id required: true type: integer responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: items: $ref: '#/definitions/model.Command' type: array type: object tags: - command_template /command_template/builtin: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: items: $ref: '#/definitions/model.CommandTemplate' type: array type: object tags: - command_template /config: get: parameters: - description: is info mode in: query name: info type: boolean responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.Config' type: object tags: - config post: parameters: - description: config in: body name: command required: true schema: $ref: '#/definitions/model.Config' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - config /connect/:asset_id/:account_id/:protocol: get: parameters: - description: width in: query name: w type: integer - description: height in: query name: h type: integer - description: dpi in: query name: dpi type: integer - description: session_id in: query name: session_id type: string responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - connect /connect/close/:session_id: post: responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - connect /connect/monitor/:session_id: get: responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - connect /file/download/:asset_id/:account_id: get: parameters: - description: asset_id in: path name: asset_id required: true type: integer - description: account_id in: path name: account_id required: true type: integer - description: dir in: query name: dir required: true type: string - description: names (comma-separated for multiple files) in: query name: names required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /file/history: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: search in: query name: search type: string - description: saction in: query name: action type: integer - description: start, RFC3339 in: query name: start type: string - description: end, RFC3339 in: query name: end type: string - description: uid in: query name: uid type: integer - description: asset id in: query name: asset_id type: integer - description: account id in: query name: account_id type: integer - description: client_ip in: query name: client_ip type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Session' type: array type: object type: object tags: - file /file/ls/:asset_id/:account_id: get: parameters: - description: asset_id in: path name: asset_id required: true type: integer - description: account_id in: path name: account_id required: true type: integer - description: dir in: query name: dir required: true type: string - description: 'show hidden files (default: false)' in: query name: show_hidden type: boolean responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /file/mkdir/:asset_id/:account_id: post: parameters: - description: asset_id in: path name: asset_id required: true type: integer - description: account_id in: path name: account_id required: true type: integer - description: 'dir ' in: query name: dir required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /file/session/:session_id/download: get: parameters: - description: session_id in: path name: session_id required: true type: string - description: dir in: query name: dir required: true type: string - description: names (comma-separated for multiple files) in: query name: names required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /file/session/:session_id/ls: get: parameters: - description: session_id in: path name: session_id required: true type: string - description: dir in: query name: dir required: true type: string - description: 'show hidden files (default: false)' in: query name: show_hidden type: boolean responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /file/session/:session_id/mkdir: post: parameters: - description: session_id in: path name: session_id required: true type: string - description: dir in: query name: dir required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /file/session/:session_id/upload: post: consumes: - multipart/form-data parameters: - description: session_id in: path name: session_id required: true type: string - description: 'target directory path (default: /tmp)' in: query name: dir type: string - description: Custom transfer ID for progress tracking (frontend generated) in: query name: transfer_id type: string - description: file to upload in: formData name: file required: true type: file responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /file/transfer/progress/id/:transfer_id: get: responses: {} tags: - file /file/upload/:asset_id/:account_id: post: consumes: - multipart/form-data parameters: - description: asset_id in: path name: asset_id required: true type: integer - description: account_id in: path name: account_id required: true type: integer - description: 'target directory path (default: /tmp)' in: query name: dir type: string - description: Custom transfer ID for progress tracking (frontend generated) in: query name: transfer_id type: string - description: file to upload in: formData name: file required: true type: file responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - file /gateway: get: parameters: - description: gateway id in: query name: page_index required: true type: integer - description: gateway id in: query name: page_size required: true type: integer - description: name or host or account or port in: query name: search type: string - description: gateway id in: query name: id type: integer - description: gateway ids in: query name: ids type: string - description: gateway name in: query name: name type: string - description: is info mode in: query name: info type: boolean - description: account type in: query name: type type: integer responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Gateway' type: array type: object type: object tags: - gateway post: parameters: - description: gateway in: body name: gateway required: true schema: $ref: '#/definitions/model.Gateway' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - gateway /gateway/:id: delete: parameters: - description: gateway id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - gateway put: parameters: - description: gateway id in: path name: id required: true type: integer - description: gateway in: body name: gateway required: true schema: $ref: '#/definitions/model.Gateway' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - gateway /history: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: type enum: - account - asset - command - gateway - node - public_key in: query name: type type: string - description: target_id in: query name: target_id type: integer - description: uid in: query name: uid type: integer - description: create=1 delete=2 update=3 in: query name: action_type type: integer - description: start time, RFC3339 in: query name: start type: string - description: end time, RFC3339 in: query name: end type: string - description: search in: query name: search type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.History' type: array type: object type: object tags: - history /history/type/mapping: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: additionalProperties: type: string type: object type: object tags: - session /node: get: parameters: - description: node id in: query name: page_index required: true type: integer - description: node id in: query name: page_size required: true type: integer - description: node id in: query name: id type: integer - description: node ids in: query name: ids type: string - description: node's parent id in: query name: parent_id type: integer - description: node name in: query name: name type: string - description: exclude itself and its child in: query name: no_self_child type: integer - description: include itself and its parent in: query name: self_parent type: integer - description: return tree structure with children in: query name: recursive type: boolean responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Node' type: array type: object type: object tags: - node post: parameters: - description: node in: body name: node required: true schema: $ref: '#/definitions/model.Node' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - node /node/:id: delete: parameters: - description: node id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - node put: parameters: - description: node id in: path name: id required: true type: integer - description: node in: body name: node required: true schema: $ref: '#/definitions/model.Node' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - node /preference: get: description: Get terminal preferences for the current user responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.UserPreference' type: object summary: Get user preferences tags: - Preference put: description: Update terminal preferences for the current user parameters: - description: User preferences in: body name: preference required: true schema: $ref: '#/definitions/model.UserPreference' responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.UserPreference' type: object summary: Update user preferences tags: - Preference /public_key: get: parameters: - description: publicKey id in: query name: page_index required: true type: integer - description: publicKey id in: query name: page_size required: true type: integer - description: name or mac in: query name: search type: string - description: publicKey id in: query name: id type: integer - description: publicKey name in: query name: name type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.PublicKey' type: array type: object type: object tags: - public_key post: parameters: - description: publicKey in: body name: publicKey required: true schema: $ref: '#/definitions/model.PublicKey' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - public_key /public_key/:id: delete: parameters: - description: publicKey id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - public_key put: parameters: - description: publicKey id in: path name: id required: true type: integer - description: publicKey in: body name: publicKey required: true schema: $ref: '#/definitions/model.PublicKey' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - public_key /quick_command: get: description: Get all quick commands available to the user parameters: - description: page index in: query name: page_index required: true type: integer - description: page size in: query name: page_size required: true type: integer - description: name or command in: query name: search type: string - description: command id in: query name: id type: integer - description: command name in: query name: name type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.QuickCommand' type: array type: object type: object tags: - QuickCommand post: description: Create a new quick command parameters: - description: Quick command data in: body name: quick_command required: true schema: $ref: '#/definitions/model.QuickCommand' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - QuickCommand /quick_command/{id}: delete: description: Delete a quick command by ID parameters: - description: Quick command ID in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - QuickCommand put: description: Update an existing quick command by ID parameters: - description: Quick command ID in: path name: id required: true type: integer - description: Updated quick command data in: body name: quick_command required: true schema: $ref: '#/definitions/model.QuickCommand' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - QuickCommand /rdp/sessions/{session_id}/files: get: description: Get file list for RDP session drive parameters: - description: Session ID in: path name: session_id required: true type: string - description: Directory path in: query name: path type: string responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: List RDP session files tags: - RDP File /rdp/sessions/{session_id}/files/download: get: consumes: - application/json description: Download files from RDP session drive (supports multiple files via names parameter) parameters: - description: Session ID in: path name: session_id required: true type: string - description: Directory path in: query name: dir required: true type: string - description: File names (comma-separated for multiple files) in: query name: names required: true type: string produces: - application/octet-stream responses: "200": description: OK schema: type: file summary: Download files from RDP session tags: - RDP File /rdp/sessions/{session_id}/files/mkdir: post: consumes: - application/json description: Create directory in RDP session drive parameters: - description: Session ID in: path name: session_id required: true type: string - description: Directory path in: query name: path required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Create directory in RDP session tags: - RDP File /rdp/sessions/{session_id}/files/prepare: post: consumes: - application/json description: Create transfer record before RDP upload starts for progress tracking parameters: - description: Session ID in: path name: session_id required: true type: string - description: Custom transfer ID in: query name: transfer_id type: string - description: Filename in: query name: filename type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Create transfer record for RDP upload tags: - RDP File /rdp/sessions/{session_id}/files/upload: post: consumes: - multipart/form-data description: Upload file to RDP session drive parameters: - description: Session ID in: path name: session_id required: true type: string - description: Custom transfer ID for progress tracking (frontend generated) in: query name: transfer_id type: string - description: Target directory path in: query name: path type: string - description: File to upload in: formData name: file required: true type: file responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Upload file to RDP session tags: - RDP File /session: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: search in: query name: search type: string - description: status, online=1, offline=2 in: query name: status type: integer - description: start, RFC3339 in: query name: start type: string - description: end, RFC3339 in: query name: end type: string - description: uid in: query name: uid type: integer - description: asset id in: query name: asset_id type: integer - description: client_ip in: query name: client_ip type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Session' type: array type: object type: object tags: - session /session/:session_id/cmd: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: session id in: path name: session_id required: true type: string - description: search in: query name: search required: true type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.SessionCmd' type: array type: object type: object tags: - session /session/cmd: post: parameters: - description: SessionCmd in: body name: sessioncmd required: true schema: $ref: '#/definitions/model.SessionCmd' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - session /session/option/asset: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.SessionOptionAsset' type: array type: object type: object tags: - session /session/option/clientip: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: items: type: string type: array type: object tags: - session /session/replay/:session_id: get: parameters: - description: session id in: path name: session_id required: true type: string responses: "200": description: OK schema: type: string tags: - session post: parameters: - description: session id in: path name: session_id required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - session /share: get: parameters: - description: page_index in: query name: page_index required: true type: integer - description: page_size in: query name: page_size required: true type: integer - description: name or ip in: query name: search type: string - description: start, RFC3339 in: query name: start type: string - description: end, RFC3339 in: query name: end type: string - description: asset id in: query name: asset_id type: string - description: account id in: query name: account_id type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.Share' type: array type: object type: object tags: - share post: parameters: - description: share in: body name: share required: true schema: items: $ref: '#/definitions/model.Share' type: array responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: type: string type: array type: object type: object tags: - share /share/:id: delete: parameters: - description: share id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - share /share/connect/:uuid: get: parameters: - description: width in: query name: w type: integer - description: height in: query name: h type: integer - description: dpi in: query name: dpi type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - share /stat/account: get: parameters: - description: account name enum: - day - week - month in: query name: type required: true type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.StatAccount' type: array type: object type: object tags: - stat /stat/asset: get: parameters: - description: account name enum: - day - week - month in: query name: type required: true type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.StatAsset' type: array type: object type: object tags: - stat /stat/assettype: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.StatAssetType' type: array type: object type: object tags: - stat /stat/count: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.StatCount' type: object tags: - stat /stat/count/ofuser: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.StatCountOfUser' type: object tags: - stat /stat/rank/ofuser: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.StatRankOfUser' type: array type: object type: object tags: - stat /storage/configs: get: parameters: - description: page_index in: query name: page_index type: integer - description: page_size in: query name: page_size type: integer - description: search in: query name: search type: string - description: storage type filter in: query name: type type: string - description: enabled filter (true/false) in: query name: enabled type: string - description: primary filter (true/false) in: query name: primary type: string responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: allOf: - $ref: '#/definitions/controller.ListData' - properties: list: items: $ref: '#/definitions/model.StorageConfig' type: array type: object type: object summary: List all storage configurations tags: - storage post: parameters: - description: Storage configuration in: body name: config required: true schema: $ref: '#/definitions/model.StorageConfig' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Create a new storage configuration tags: - storage /storage/configs/{id}: delete: parameters: - description: Storage ID in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Delete a storage configuration tags: - storage get: parameters: - description: Storage ID in: path name: id required: true type: integer responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/model.StorageConfig' type: object summary: Get storage configuration by ID tags: - storage put: parameters: - description: Storage ID in: path name: id required: true type: integer - description: Storage configuration in: body name: config required: true schema: $ref: '#/definitions/model.StorageConfig' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Update an existing storage configuration tags: - storage /storage/configs/{id}/set-primary: put: parameters: - description: Storage ID in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Set a storage provider as primary tags: - storage /storage/configs/{id}/toggle: put: parameters: - description: Storage ID in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Enable or disable a storage provider tags: - storage /storage/health: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: additionalProperties: true type: object type: object summary: Get health status of all storage providers tags: - storage /storage/metrics: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: additionalProperties: true type: object type: object summary: Get storage usage metrics tags: - storage /storage/metrics/refresh: post: responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Refresh storage usage metrics tags: - storage /storage/test-connection: post: parameters: - description: Storage configuration to test in: body name: config required: true schema: $ref: '#/definitions/model.StorageConfig' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' summary: Test storage connection tags: - storage /time_template: get: parameters: - description: page index in: query name: page_index type: integer - description: page size in: query name: page_size type: integer - description: template category in: query name: category type: string - description: filter by active status in: query name: active type: boolean - description: info mode in: query name: info type: boolean responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: items: $ref: '#/definitions/model.TimeTemplate' type: array type: object tags: - time_template post: parameters: - description: time template in: body name: template required: true schema: $ref: '#/definitions/model.TimeTemplate' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - time_template /time_template/:id: delete: parameters: - description: template id in: path name: id required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - time_template put: parameters: - description: template id in: path name: id required: true type: integer - description: time template in: body name: template required: true schema: $ref: '#/definitions/model.TimeTemplate' responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - time_template /time_template/builtin: get: responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: items: $ref: '#/definitions/model.TimeTemplate' type: array type: object tags: - time_template /time_template/check: post: parameters: - description: time access check request in: body name: request required: true schema: $ref: '#/definitions/controller.CheckTimeAccessRequest' responses: "200": description: OK schema: allOf: - $ref: '#/definitions/controller.HttpResponse' - properties: data: $ref: '#/definitions/controller.CheckTimeAccessResponse' type: object tags: - time_template /time_template/init: post: responses: "200": description: OK schema: $ref: '#/definitions/controller.HttpResponse' tags: - time_template swagger: "2.0"