# frozen_string_literal: true

# Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

module TencentCloud
  module Dasb
    module V20191018
      # 权限控制模板对象
      class ACTemplate < TencentCloud::Common::AbstractModel
        # @param TemplateId: 模板id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TemplateId: String
        # @param TemplateName: 模板名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TemplateName: String
        # @param Description: 模板描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Description: String

        attr_accessor :TemplateId, :TemplateName, :Description

        def initialize(templateid=nil, templatename=nil, description=nil)
          @TemplateId = templateid
          @TemplateName = templatename
          @Description = description
        end

        def deserialize(params)
          @TemplateId = params['TemplateId']
          @TemplateName = params['TemplateName']
          @Description = params['Description']
        end
      end

      # 访问权限
      class Acl < TencentCloud::Common::AbstractModel
        # @param Id: 访问权限ID
        # @type Id: Integer
        # @param Name: 访问权限名称
        # @type Name: String
        # @param AllowDiskRedirect: 是否开启磁盘映射
        # @type AllowDiskRedirect: Boolean
        # @param AllowClipFileUp: 是否开启剪贴板文件上行
        # @type AllowClipFileUp: Boolean
        # @param AllowClipFileDown: 是否开启剪贴板文件下行
        # @type AllowClipFileDown: Boolean
        # @param AllowClipTextUp: 是否开启剪贴板文本(目前含图片)上行
        # @type AllowClipTextUp: Boolean
        # @param AllowClipTextDown: 是否开启剪贴板文本(目前含图片)下行
        # @type AllowClipTextDown: Boolean
        # @param AllowFileUp: 是否开启文件传输上传
        # @type AllowFileUp: Boolean
        # @param MaxFileUpSize: 文件传输上传大小限制(预留参数,暂未启用)
        # @type MaxFileUpSize: Integer
        # @param AllowFileDown: 是否开启文件传输下载
        # @type AllowFileDown: Boolean
        # @param MaxFileDownSize: 文件传输下载大小限制(预留参数,暂未启用)
        # @type MaxFileDownSize: Integer
        # @param AllowAnyAccount: 是否允许任意账号登录
        # @type AllowAnyAccount: Boolean
        # @param UserSet: 关联的用户列表
        # @type UserSet: Array
        # @param UserGroupSet: 关联的用户组列表
        # @type UserGroupSet: Array
        # @param DeviceSet: 关联的资产列表
        # @type DeviceSet: Array
        # @param DeviceGroupSet: 关联的资产组列表
        # @type DeviceGroupSet: Array
        # @param AccountSet: 关联的账号列表
        # @type AccountSet: Array
        # @param CmdTemplateSet: 关联的高危命令模板列表
        # @type CmdTemplateSet: Array
        # @param AllowDiskFileUp: 是否开启 RDP 磁盘映射文件上传
        # @type AllowDiskFileUp: Boolean
        # @param AllowDiskFileDown: 是否开启 RDP 磁盘映射文件下载
        # @type AllowDiskFileDown: Boolean
        # @param AllowShellFileUp: 是否开启 rz sz 文件上传
        # @type AllowShellFileUp: Boolean
        # @param AllowShellFileDown: 是否开启 rz sz 文件下载
        # @type AllowShellFileDown: Boolean
        # @param AllowFileDel: 是否开启 SFTP 文件删除
        # @type AllowFileDel: Boolean
        # @param ValidateFrom: 访问权限生效时间,如:"2021-09-22T00:00:00+00:00"
        # 生效、失效时间不填则访问权限长期有效
        # @type ValidateFrom: String
        # @param ValidateTo: 访问权限失效时间,如:"2021-09-23T00:00:00+00:00"
        # 生效、失效时间不填则访问权限长期有效
        # @type ValidateTo: String
        # @param Status: 访问权限状态,1 - 已生效,2 - 未生效,3 - 已过期
        # @type Status: Integer
        # @param Department: 所属部门的信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Department: :class:`Tencentcloud::Dasb.v20191018.models.Department`
        # @param AllowAccessCredential: 是否允许使用访问串,默认允许
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AllowAccessCredential: Boolean
        # @param ACTemplateSet: 关联的数据库高危命令列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ACTemplateSet: Array

        attr_accessor :Id, :Name, :AllowDiskRedirect, :AllowClipFileUp, :AllowClipFileDown, :AllowClipTextUp, :AllowClipTextDown, :AllowFileUp, :MaxFileUpSize, :AllowFileDown, :MaxFileDownSize, :AllowAnyAccount, :UserSet, :UserGroupSet, :DeviceSet, :DeviceGroupSet, :AccountSet, :CmdTemplateSet, :AllowDiskFileUp, :AllowDiskFileDown, :AllowShellFileUp, :AllowShellFileDown, :AllowFileDel, :ValidateFrom, :ValidateTo, :Status, :Department, :AllowAccessCredential, :ACTemplateSet

        def initialize(id=nil, name=nil, allowdiskredirect=nil, allowclipfileup=nil, allowclipfiledown=nil, allowcliptextup=nil, allowcliptextdown=nil, allowfileup=nil, maxfileupsize=nil, allowfiledown=nil, maxfiledownsize=nil, allowanyaccount=nil, userset=nil, usergroupset=nil, deviceset=nil, devicegroupset=nil, accountset=nil, cmdtemplateset=nil, allowdiskfileup=nil, allowdiskfiledown=nil, allowshellfileup=nil, allowshellfiledown=nil, allowfiledel=nil, validatefrom=nil, validateto=nil, status=nil, department=nil, allowaccesscredential=nil, actemplateset=nil)
          @Id = id
          @Name = name
          @AllowDiskRedirect = allowdiskredirect
          @AllowClipFileUp = allowclipfileup
          @AllowClipFileDown = allowclipfiledown
          @AllowClipTextUp = allowcliptextup
          @AllowClipTextDown = allowcliptextdown
          @AllowFileUp = allowfileup
          @MaxFileUpSize = maxfileupsize
          @AllowFileDown = allowfiledown
          @MaxFileDownSize = maxfiledownsize
          @AllowAnyAccount = allowanyaccount
          @UserSet = userset
          @UserGroupSet = usergroupset
          @DeviceSet = deviceset
          @DeviceGroupSet = devicegroupset
          @AccountSet = accountset
          @CmdTemplateSet = cmdtemplateset
          @AllowDiskFileUp = allowdiskfileup
          @AllowDiskFileDown = allowdiskfiledown
          @AllowShellFileUp = allowshellfileup
          @AllowShellFileDown = allowshellfiledown
          @AllowFileDel = allowfiledel
          @ValidateFrom = validatefrom
          @ValidateTo = validateto
          @Status = status
          @Department = department
          @AllowAccessCredential = allowaccesscredential
          @ACTemplateSet = actemplateset
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          @AllowDiskRedirect = params['AllowDiskRedirect']
          @AllowClipFileUp = params['AllowClipFileUp']
          @AllowClipFileDown = params['AllowClipFileDown']
          @AllowClipTextUp = params['AllowClipTextUp']
          @AllowClipTextDown = params['AllowClipTextDown']
          @AllowFileUp = params['AllowFileUp']
          @MaxFileUpSize = params['MaxFileUpSize']
          @AllowFileDown = params['AllowFileDown']
          @MaxFileDownSize = params['MaxFileDownSize']
          @AllowAnyAccount = params['AllowAnyAccount']
          unless params['UserSet'].nil?
            @UserSet = []
            params['UserSet'].each do |i|
              user_tmp = User.new
              user_tmp.deserialize(i)
              @UserSet << user_tmp
            end
          end
          unless params['UserGroupSet'].nil?
            @UserGroupSet = []
            params['UserGroupSet'].each do |i|
              group_tmp = Group.new
              group_tmp.deserialize(i)
              @UserGroupSet << group_tmp
            end
          end
          unless params['DeviceSet'].nil?
            @DeviceSet = []
            params['DeviceSet'].each do |i|
              device_tmp = Device.new
              device_tmp.deserialize(i)
              @DeviceSet << device_tmp
            end
          end
          unless params['DeviceGroupSet'].nil?
            @DeviceGroupSet = []
            params['DeviceGroupSet'].each do |i|
              group_tmp = Group.new
              group_tmp.deserialize(i)
              @DeviceGroupSet << group_tmp
            end
          end
          @AccountSet = params['AccountSet']
          unless params['CmdTemplateSet'].nil?
            @CmdTemplateSet = []
            params['CmdTemplateSet'].each do |i|
              cmdtemplate_tmp = CmdTemplate.new
              cmdtemplate_tmp.deserialize(i)
              @CmdTemplateSet << cmdtemplate_tmp
            end
          end
          @AllowDiskFileUp = params['AllowDiskFileUp']
          @AllowDiskFileDown = params['AllowDiskFileDown']
          @AllowShellFileUp = params['AllowShellFileUp']
          @AllowShellFileDown = params['AllowShellFileDown']
          @AllowFileDel = params['AllowFileDel']
          @ValidateFrom = params['ValidateFrom']
          @ValidateTo = params['ValidateTo']
          @Status = params['Status']
          unless params['Department'].nil?
            @Department = Department.new
            @Department.deserialize(params['Department'])
          end
          @AllowAccessCredential = params['AllowAccessCredential']
          unless params['ACTemplateSet'].nil?
            @ACTemplateSet = []
            params['ACTemplateSet'].each do |i|
              actemplate_tmp = ACTemplate.new
              actemplate_tmp.deserialize(i)
              @ACTemplateSet << actemplate_tmp
            end
          end
        end
      end

      # AddDeviceGroupMembers请求参数结构体
      class AddDeviceGroupMembersRequest < TencentCloud::Common::AbstractModel
        # @param Id: 资产组ID
        # @type Id: Integer
        # @param MemberIdSet: 需要添加到资产组的资产ID集合
        # @type MemberIdSet: Array

        attr_accessor :Id, :MemberIdSet

        def initialize(id=nil, memberidset=nil)
          @Id = id
          @MemberIdSet = memberidset
        end

        def deserialize(params)
          @Id = params['Id']
          @MemberIdSet = params['MemberIdSet']
        end
      end

      # AddDeviceGroupMembers返回参数结构体
      class AddDeviceGroupMembersResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # AddUserGroupMembers请求参数结构体
      class AddUserGroupMembersRequest < TencentCloud::Common::AbstractModel
        # @param Id: 用户组ID
        # @type Id: Integer
        # @param MemberIdSet: 成员用户ID集合
        # @type MemberIdSet: Array

        attr_accessor :Id, :MemberIdSet

        def initialize(id=nil, memberidset=nil)
          @Id = id
          @MemberIdSet = memberidset
        end

        def deserialize(params)
          @Id = params['Id']
          @MemberIdSet = params['MemberIdSet']
        end
      end

      # AddUserGroupMembers返回参数结构体
      class AddUserGroupMembersResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 资产同步状态
      class AssetSyncStatus < TencentCloud::Common::AbstractModel
        # @param LastTime: 上一次同步完成的时间
        # @type LastTime: String
        # @param LastStatus: 上一次同步的结果。 0 - 从未进行, 1 - 成功, 2 - 失败
        # @type LastStatus: Integer
        # @param InProcess: 同步任务是否正在进行中
        # @type InProcess: Boolean

        attr_accessor :LastTime, :LastStatus, :InProcess

        def initialize(lasttime=nil, laststatus=nil, inprocess=nil)
          @LastTime = lasttime
          @LastStatus = laststatus
          @InProcess = inprocess
        end

        def deserialize(params)
          @LastTime = params['LastTime']
          @LastStatus = params['LastStatus']
          @InProcess = params['InProcess']
        end
      end

      # 审计日志
      class AuditLogResult < TencentCloud::Common::AbstractModel
        # @param Sid: 被审计会话的Sid
        # @type Sid: String
        # @param Uin: 审计者的编号
        # @type Uin: String
        # @param Time: 审计动作发生的时间
        # @type Time: String
        # @param ClientIp: 审计者的Ip
        # @type ClientIp: String
        # @param Operation: 审计动作类型,1--回放、2--中断、3--监控
        # @type Operation: Integer
        # @param InstanceId: 被审计主机的Id
        # @type InstanceId: String
        # @param DeviceName: 被审计主机的主机名
        # @type DeviceName: String
        # @param Protocol: 被审计会话所属的类型,如字符会话
        # @type Protocol: String
        # @param PrivateIp: 被审计主机的内部Ip
        # @type PrivateIp: String
        # @param PublicIp: 被审计主机的外部Ip
        # @type PublicIp: String
        # @param SubAccountUin: 审计者的子账号
        # @type SubAccountUin: String

        attr_accessor :Sid, :Uin, :Time, :ClientIp, :Operation, :InstanceId, :DeviceName, :Protocol, :PrivateIp, :PublicIp, :SubAccountUin

        def initialize(sid=nil, uin=nil, time=nil, clientip=nil, operation=nil, instanceid=nil, devicename=nil, protocol=nil, privateip=nil, publicip=nil, subaccountuin=nil)
          @Sid = sid
          @Uin = uin
          @Time = time
          @ClientIp = clientip
          @Operation = operation
          @InstanceId = instanceid
          @DeviceName = devicename
          @Protocol = protocol
          @PrivateIp = privateip
          @PublicIp = publicip
          @SubAccountUin = subaccountuin
        end

        def deserialize(params)
          @Sid = params['Sid']
          @Uin = params['Uin']
          @Time = params['Time']
          @ClientIp = params['ClientIp']
          @Operation = params['Operation']
          @InstanceId = params['InstanceId']
          @DeviceName = params['DeviceName']
          @Protocol = params['Protocol']
          @PrivateIp = params['PrivateIp']
          @PublicIp = params['PublicIp']
          @SubAccountUin = params['SubAccountUin']
        end
      end

      # BindDeviceAccountPassword请求参数结构体
      class BindDeviceAccountPasswordRequest < TencentCloud::Common::AbstractModel
        # @param Id: 主机账号ID
        # @type Id: Integer
        # @param Password: 主机账号密码
        # @type Password: String

        attr_accessor :Id, :Password

        def initialize(id=nil, password=nil)
          @Id = id
          @Password = password
        end

        def deserialize(params)
          @Id = params['Id']
          @Password = params['Password']
        end
      end

      # BindDeviceAccountPassword返回参数结构体
      class BindDeviceAccountPasswordResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # BindDeviceAccountPrivateKey请求参数结构体
      class BindDeviceAccountPrivateKeyRequest < TencentCloud::Common::AbstractModel
        # @param Id: 主机账号ID
        # @type Id: Integer
        # @param PrivateKey: 主机账号私钥,最新长度128字节,最大长度8192字节
        # @type PrivateKey: String
        # @param PrivateKeyPassword: 主机账号私钥口令,最大长度256字节
        # @type PrivateKeyPassword: String

        attr_accessor :Id, :PrivateKey, :PrivateKeyPassword

        def initialize(id=nil, privatekey=nil, privatekeypassword=nil)
          @Id = id
          @PrivateKey = privatekey
          @PrivateKeyPassword = privatekeypassword
        end

        def deserialize(params)
          @Id = params['Id']
          @PrivateKey = params['PrivateKey']
          @PrivateKeyPassword = params['PrivateKeyPassword']
        end
      end

      # BindDeviceAccountPrivateKey返回参数结构体
      class BindDeviceAccountPrivateKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # BindDeviceResource请求参数结构体
      class BindDeviceResourceRequest < TencentCloud::Common::AbstractModel
        # @param DeviceIdSet: 资产ID集合
        # @type DeviceIdSet: Array
        # @param ResourceId: 堡垒机服务ID
        # @type ResourceId: String

        attr_accessor :DeviceIdSet, :ResourceId

        def initialize(deviceidset=nil, resourceid=nil)
          @DeviceIdSet = deviceidset
          @ResourceId = resourceid
        end

        def deserialize(params)
          @DeviceIdSet = params['DeviceIdSet']
          @ResourceId = params['ResourceId']
        end
      end

      # BindDeviceResource返回参数结构体
      class BindDeviceResourceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 高危命令模板
      class CmdTemplate < TencentCloud::Common::AbstractModel
        # @param Id: 高危命令模板ID
        # @type Id: Integer
        # @param Name: 高危命令模板名称
        # @type Name: String
        # @param CmdList: 命令列表,命令之间用换行符("\n")分隔
        # @type CmdList: String

        attr_accessor :Id, :Name, :CmdList

        def initialize(id=nil, name=nil, cmdlist=nil)
          @Id = id
          @Name = name
          @CmdList = cmdlist
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          @CmdList = params['CmdList']
        end
      end

      # 命令集合
      class Command < TencentCloud::Common::AbstractModel
        # @param Cmd: 命令
        # @type Cmd: String
        # @param Time: 命令输入的时间
        # @type Time: String
        # @param TimeOffset: 命令执行时间相对于所属会话开始时间的偏移量,单位ms
        # @type TimeOffset: Integer
        # @param Action: 命令执行情况,1--允许,2--拒绝,3--确认
        # @type Action: Integer
        # @param Sid: 会话id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Sid: String
        # @param UserName: 用户名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserName: String
        # @param Account: 设备account
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Account: String
        # @param InstanceId: 设备ip
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceId: String
        # @param FromIp: source ip
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FromIp: String
        # @param SessionTime: 该命令所属会话的会话开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SessionTime: String
        # @param SessTime: 该命令所属会话的会话开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SessTime: String
        # @param ConfirmTime: 复核时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConfirmTime: String
        # @param UserDepartmentId: 用户部门id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserDepartmentId: String
        # @param UserDepartmentName: 用户部门name
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserDepartmentName: String
        # @param DeviceDepartmentId: 设备部门id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceDepartmentId: String
        # @param DeviceDepartmentName: 设备部门name
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceDepartmentName: String

        attr_accessor :Cmd, :Time, :TimeOffset, :Action, :Sid, :UserName, :Account, :InstanceId, :FromIp, :SessionTime, :SessTime, :ConfirmTime, :UserDepartmentId, :UserDepartmentName, :DeviceDepartmentId, :DeviceDepartmentName
        extend Gem::Deprecate
        deprecate :SessTime, :none, 2023, 11
        deprecate :SessTime=, :none, 2023, 11

        def initialize(cmd=nil, time=nil, timeoffset=nil, action=nil, sid=nil, username=nil, account=nil, instanceid=nil, fromip=nil, sessiontime=nil, sesstime=nil, confirmtime=nil, userdepartmentid=nil, userdepartmentname=nil, devicedepartmentid=nil, devicedepartmentname=nil)
          @Cmd = cmd
          @Time = time
          @TimeOffset = timeoffset
          @Action = action
          @Sid = sid
          @UserName = username
          @Account = account
          @InstanceId = instanceid
          @FromIp = fromip
          @SessionTime = sessiontime
          @SessTime = sesstime
          @ConfirmTime = confirmtime
          @UserDepartmentId = userdepartmentid
          @UserDepartmentName = userdepartmentname
          @DeviceDepartmentId = devicedepartmentid
          @DeviceDepartmentName = devicedepartmentname
        end

        def deserialize(params)
          @Cmd = params['Cmd']
          @Time = params['Time']
          @TimeOffset = params['TimeOffset']
          @Action = params['Action']
          @Sid = params['Sid']
          @UserName = params['UserName']
          @Account = params['Account']
          @InstanceId = params['InstanceId']
          @FromIp = params['FromIp']
          @SessionTime = params['SessionTime']
          @SessTime = params['SessTime']
          @ConfirmTime = params['ConfirmTime']
          @UserDepartmentId = params['UserDepartmentId']
          @UserDepartmentName = params['UserDepartmentName']
          @DeviceDepartmentId = params['DeviceDepartmentId']
          @DeviceDepartmentName = params['DeviceDepartmentName']
        end
      end

      # CreateAcl请求参数结构体
      class CreateAclRequest < TencentCloud::Common::AbstractModel
        # @param Name: 权限名称,最大32字符,不能包含空白字符
        # @type Name: String
        # @param AllowDiskRedirect: 是否开启磁盘映射
        # @type AllowDiskRedirect: Boolean
        # @param AllowAnyAccount: 是否允许任意账号登录
        # @type AllowAnyAccount: Boolean
        # @param AllowClipFileUp: 是否开启剪贴板文件上行
        # @type AllowClipFileUp: Boolean
        # @param AllowClipFileDown: 是否开启剪贴板文件下行
        # @type AllowClipFileDown: Boolean
        # @param AllowClipTextUp: 是否开启剪贴板文本(含图片)上行
        # @type AllowClipTextUp: Boolean
        # @param AllowClipTextDown: 是否开启剪贴板文本(含图片)下行
        # @type AllowClipTextDown: Boolean
        # @param AllowFileUp: 是否开启 SFTP 文件上传
        # @type AllowFileUp: Boolean
        # @param MaxFileUpSize: 文件传输上传大小限制(预留参数,目前暂未使用)
        # @type MaxFileUpSize: Integer
        # @param AllowFileDown: 是否开启 SFTP 文件下载
        # @type AllowFileDown: Boolean
        # @param MaxFileDownSize: 文件传输下载大小限制(预留参数,目前暂未使用)
        # @type MaxFileDownSize: Integer
        # @param UserIdSet: 关联的用户ID集合
        # @type UserIdSet: Array
        # @param UserGroupIdSet: 关联的用户组ID
        # @type UserGroupIdSet: Array
        # @param DeviceIdSet: 关联的资产ID集合
        # @type DeviceIdSet: Array
        # @param DeviceGroupIdSet: 关联的资产组ID
        # @type DeviceGroupIdSet: Array
        # @param AccountSet: 关联的账号
        # @type AccountSet: Array
        # @param CmdTemplateIdSet: 关联的高危命令模板ID
        # @type CmdTemplateIdSet: Array
        # @param ACTemplateIdSet: 关联高危DB模板ID
        # @type ACTemplateIdSet: Array
        # @param AllowDiskFileUp: 是否开启rdp磁盘映射文件上传
        # @type AllowDiskFileUp: Boolean
        # @param AllowDiskFileDown: 是否开启rdp磁盘映射文件下载
        # @type AllowDiskFileDown: Boolean
        # @param AllowShellFileUp: 是否开启rz sz文件上传
        # @type AllowShellFileUp: Boolean
        # @param AllowShellFileDown: 是否开启rz sz文件下载
        # @type AllowShellFileDown: Boolean
        # @param AllowFileDel: 是否开启 SFTP 文件删除
        # @type AllowFileDel: Boolean
        # @param ValidateFrom: 访问权限生效时间,如:"2021-09-22T00:00:00+00:00"
        # 生效、失效时间不填则访问权限长期有效
        # @type ValidateFrom: String
        # @param ValidateTo: 访问权限失效时间,如:"2021-09-23T00:00:00+00:00"
        # 生效、失效时间不填则访问权限长期有效
        # @type ValidateTo: String
        # @param DepartmentId: 访问权限所属部门的ID
        # @type DepartmentId: String
        # @param AllowAccessCredential: 是否允许使用访问串,默认允许
        # @type AllowAccessCredential: Boolean

        attr_accessor :Name, :AllowDiskRedirect, :AllowAnyAccount, :AllowClipFileUp, :AllowClipFileDown, :AllowClipTextUp, :AllowClipTextDown, :AllowFileUp, :MaxFileUpSize, :AllowFileDown, :MaxFileDownSize, :UserIdSet, :UserGroupIdSet, :DeviceIdSet, :DeviceGroupIdSet, :AccountSet, :CmdTemplateIdSet, :ACTemplateIdSet, :AllowDiskFileUp, :AllowDiskFileDown, :AllowShellFileUp, :AllowShellFileDown, :AllowFileDel, :ValidateFrom, :ValidateTo, :DepartmentId, :AllowAccessCredential

        def initialize(name=nil, allowdiskredirect=nil, allowanyaccount=nil, allowclipfileup=nil, allowclipfiledown=nil, allowcliptextup=nil, allowcliptextdown=nil, allowfileup=nil, maxfileupsize=nil, allowfiledown=nil, maxfiledownsize=nil, useridset=nil, usergroupidset=nil, deviceidset=nil, devicegroupidset=nil, accountset=nil, cmdtemplateidset=nil, actemplateidset=nil, allowdiskfileup=nil, allowdiskfiledown=nil, allowshellfileup=nil, allowshellfiledown=nil, allowfiledel=nil, validatefrom=nil, validateto=nil, departmentid=nil, allowaccesscredential=nil)
          @Name = name
          @AllowDiskRedirect = allowdiskredirect
          @AllowAnyAccount = allowanyaccount
          @AllowClipFileUp = allowclipfileup
          @AllowClipFileDown = allowclipfiledown
          @AllowClipTextUp = allowcliptextup
          @AllowClipTextDown = allowcliptextdown
          @AllowFileUp = allowfileup
          @MaxFileUpSize = maxfileupsize
          @AllowFileDown = allowfiledown
          @MaxFileDownSize = maxfiledownsize
          @UserIdSet = useridset
          @UserGroupIdSet = usergroupidset
          @DeviceIdSet = deviceidset
          @DeviceGroupIdSet = devicegroupidset
          @AccountSet = accountset
          @CmdTemplateIdSet = cmdtemplateidset
          @ACTemplateIdSet = actemplateidset
          @AllowDiskFileUp = allowdiskfileup
          @AllowDiskFileDown = allowdiskfiledown
          @AllowShellFileUp = allowshellfileup
          @AllowShellFileDown = allowshellfiledown
          @AllowFileDel = allowfiledel
          @ValidateFrom = validatefrom
          @ValidateTo = validateto
          @DepartmentId = departmentid
          @AllowAccessCredential = allowaccesscredential
        end

        def deserialize(params)
          @Name = params['Name']
          @AllowDiskRedirect = params['AllowDiskRedirect']
          @AllowAnyAccount = params['AllowAnyAccount']
          @AllowClipFileUp = params['AllowClipFileUp']
          @AllowClipFileDown = params['AllowClipFileDown']
          @AllowClipTextUp = params['AllowClipTextUp']
          @AllowClipTextDown = params['AllowClipTextDown']
          @AllowFileUp = params['AllowFileUp']
          @MaxFileUpSize = params['MaxFileUpSize']
          @AllowFileDown = params['AllowFileDown']
          @MaxFileDownSize = params['MaxFileDownSize']
          @UserIdSet = params['UserIdSet']
          @UserGroupIdSet = params['UserGroupIdSet']
          @DeviceIdSet = params['DeviceIdSet']
          @DeviceGroupIdSet = params['DeviceGroupIdSet']
          @AccountSet = params['AccountSet']
          @CmdTemplateIdSet = params['CmdTemplateIdSet']
          @ACTemplateIdSet = params['ACTemplateIdSet']
          @AllowDiskFileUp = params['AllowDiskFileUp']
          @AllowDiskFileDown = params['AllowDiskFileDown']
          @AllowShellFileUp = params['AllowShellFileUp']
          @AllowShellFileDown = params['AllowShellFileDown']
          @AllowFileDel = params['AllowFileDel']
          @ValidateFrom = params['ValidateFrom']
          @ValidateTo = params['ValidateTo']
          @DepartmentId = params['DepartmentId']
          @AllowAccessCredential = params['AllowAccessCredential']
        end
      end

      # CreateAcl返回参数结构体
      class CreateAclResponse < TencentCloud::Common::AbstractModel
        # @param Id: 新建成功的访问权限ID
        # @type Id: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Id, :RequestId

        def initialize(id=nil, requestid=nil)
          @Id = id
          @RequestId = requestid
        end

        def deserialize(params)
          @Id = params['Id']
          @RequestId = params['RequestId']
        end
      end

      # CreateAssetSyncJob请求参数结构体
      class CreateAssetSyncJobRequest < TencentCloud::Common::AbstractModel
        # @param Category: 同步资产类别,1 - 主机资产, 2 - 数据库资产
        # @type Category: Integer

        attr_accessor :Category

        def initialize(category=nil)
          @Category = category
        end

        def deserialize(params)
          @Category = params['Category']
        end
      end

      # CreateAssetSyncJob返回参数结构体
      class CreateAssetSyncJobResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # CreateCmdTemplate请求参数结构体
      class CreateCmdTemplateRequest < TencentCloud::Common::AbstractModel
        # @param Name: 模板名,最大长度32字符,不能包含空白字符
        # @type Name: String
        # @param CmdList: 命令列表,\n分隔,最大长度32768字节
        # @type CmdList: String
        # @param Encoding: 标识cmdlist字段前端是否为base64加密传值.
        # 0:表示非base64加密
        # 1:表示是base64加密
        # @type Encoding: Integer

        attr_accessor :Name, :CmdList, :Encoding

        def initialize(name=nil, cmdlist=nil, encoding=nil)
          @Name = name
          @CmdList = cmdlist
          @Encoding = encoding
        end

        def deserialize(params)
          @Name = params['Name']
          @CmdList = params['CmdList']
          @Encoding = params['Encoding']
        end
      end

      # CreateCmdTemplate返回参数结构体
      class CreateCmdTemplateResponse < TencentCloud::Common::AbstractModel
        # @param Id: 新建成功后返回的记录ID
        # @type Id: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Id, :RequestId

        def initialize(id=nil, requestid=nil)
          @Id = id
          @RequestId = requestid
        end

        def deserialize(params)
          @Id = params['Id']
          @RequestId = params['RequestId']
        end
      end

      # CreateDeviceAccount请求参数结构体
      class CreateDeviceAccountRequest < TencentCloud::Common::AbstractModel
        # @param DeviceId: 主机记录ID
        # @type DeviceId: Integer
        # @param Account: 账号名
        # @type Account: String

        attr_accessor :DeviceId, :Account

        def initialize(deviceid=nil, account=nil)
          @DeviceId = deviceid
          @Account = account
        end

        def deserialize(params)
          @DeviceId = params['DeviceId']
          @Account = params['Account']
        end
      end

      # CreateDeviceAccount返回参数结构体
      class CreateDeviceAccountResponse < TencentCloud::Common::AbstractModel
        # @param Id: 新建成功后返回的记录ID
        # @type Id: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Id, :RequestId

        def initialize(id=nil, requestid=nil)
          @Id = id
          @RequestId = requestid
        end

        def deserialize(params)
          @Id = params['Id']
          @RequestId = params['RequestId']
        end
      end

      # CreateDeviceGroup请求参数结构体
      class CreateDeviceGroupRequest < TencentCloud::Common::AbstractModel
        # @param Name: 资产组名,最大长度32字符
        # @type Name: String
        # @param DepartmentId: 资产组所属部门ID,如:1.2.3
        # @type DepartmentId: String

        attr_accessor :Name, :DepartmentId

        def initialize(name=nil, departmentid=nil)
          @Name = name
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @Name = params['Name']
          @DepartmentId = params['DepartmentId']
        end
      end

      # CreateDeviceGroup返回参数结构体
      class CreateDeviceGroupResponse < TencentCloud::Common::AbstractModel
        # @param Id: 新建成功的资产组ID
        # @type Id: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Id, :RequestId

        def initialize(id=nil, requestid=nil)
          @Id = id
          @RequestId = requestid
        end

        def deserialize(params)
          @Id = params['Id']
          @RequestId = params['RequestId']
        end
      end

      # CreateResource请求参数结构体
      class CreateResourceRequest < TencentCloud::Common::AbstractModel
        # @param DeployRegion: 部署region
        # @type DeployRegion: String
        # @param VpcId: 部署堡垒机的VpcId
        # @type VpcId: String
        # @param SubnetId: 部署堡垒机的SubnetId
        # @type SubnetId: String
        # @param ResourceEdition: 资源类型。取值:standard/pro
        # @type ResourceEdition: String
        # @param ResourceNode: 资源节点数
        # @type ResourceNode: Integer
        # @param TimeUnit: 计费周期
        # @type TimeUnit: String
        # @param TimeSpan: 计费时长
        # @type TimeSpan: Integer
        # @param PayMode: 计费模式 1预付费
        # @type PayMode: Integer
        # @param AutoRenewFlag: 自动续费
        # @type AutoRenewFlag: Integer
        # @param DeployZone: 部署zone
        # @type DeployZone: String

        attr_accessor :DeployRegion, :VpcId, :SubnetId, :ResourceEdition, :ResourceNode, :TimeUnit, :TimeSpan, :PayMode, :AutoRenewFlag, :DeployZone

        def initialize(deployregion=nil, vpcid=nil, subnetid=nil, resourceedition=nil, resourcenode=nil, timeunit=nil, timespan=nil, paymode=nil, autorenewflag=nil, deployzone=nil)
          @DeployRegion = deployregion
          @VpcId = vpcid
          @SubnetId = subnetid
          @ResourceEdition = resourceedition
          @ResourceNode = resourcenode
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @PayMode = paymode
          @AutoRenewFlag = autorenewflag
          @DeployZone = deployzone
        end

        def deserialize(params)
          @DeployRegion = params['DeployRegion']
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
          @ResourceEdition = params['ResourceEdition']
          @ResourceNode = params['ResourceNode']
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          @PayMode = params['PayMode']
          @AutoRenewFlag = params['AutoRenewFlag']
          @DeployZone = params['DeployZone']
        end
      end

      # CreateResource返回参数结构体
      class CreateResourceResponse < TencentCloud::Common::AbstractModel
        # @param ResourceId: 实例Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ResourceId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ResourceId, :RequestId

        def initialize(resourceid=nil, requestid=nil)
          @ResourceId = resourceid
          @RequestId = requestid
        end

        def deserialize(params)
          @ResourceId = params['ResourceId']
          @RequestId = params['RequestId']
        end
      end

      # CreateUserGroup请求参数结构体
      class CreateUserGroupRequest < TencentCloud::Common::AbstractModel
        # @param Name: 用户组名,最大长度32字符
        # @type Name: String
        # @param DepartmentId: 用户组所属部门的ID,如:1.2.3
        # @type DepartmentId: String

        attr_accessor :Name, :DepartmentId

        def initialize(name=nil, departmentid=nil)
          @Name = name
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @Name = params['Name']
          @DepartmentId = params['DepartmentId']
        end
      end

      # CreateUserGroup返回参数结构体
      class CreateUserGroupResponse < TencentCloud::Common::AbstractModel
        # @param Id: 新建成功的用户组ID
        # @type Id: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Id, :RequestId

        def initialize(id=nil, requestid=nil)
          @Id = id
          @RequestId = requestid
        end

        def deserialize(params)
          @Id = params['Id']
          @RequestId = params['RequestId']
        end
      end

      # CreateUser请求参数结构体
      class CreateUserRequest < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名, 3-20个字符, 必须以英文字母开头,且不能包含字母、数字、.、_、-以外的字符
        # @type UserName: String
        # @param RealName: 用户姓名,最大长度20个字符,不能包含空白字符
        # @type RealName: String
        # @param Phone: 大陆手机号直接填写,如果是其他国家、地区号码, 按照"国家地区代码|手机号"的格式输入。如: "+852|xxxxxxxx"
        # @type Phone: String
        # @param Email: 电子邮件
        # @type Email: String
        # @param ValidateFrom: 用户生效时间,如:"2021-09-22T00:00:00+00:00"
        # 生效、失效时间不填则用户长期有效
        # @type ValidateFrom: String
        # @param ValidateTo: 用户失效时间,如:"2021-09-23T00:00:00+00:00"
        # 生效、失效时间不填则用户长期有效
        # @type ValidateTo: String
        # @param GroupIdSet: 所属用户组ID集合
        # @type GroupIdSet: Array
        # @param AuthType: 认证方式,0 - 本地, 1 - LDAP, 2 - OAuth 不传则默认为0
        # @type AuthType: Integer
        # @param ValidateTime: 访问时间段限制, 由0、1组成的字符串,长度168(7 × 24),代表该用户在一周中允许访问的时间段。字符串中第N个字符代表在一周中的第N个小时, 0 - 代表不允许访问,1 - 代表允许访问
        # @type ValidateTime: String
        # @param DepartmentId: 所属部门ID,如:“1.2.3”
        # @type DepartmentId: String

        attr_accessor :UserName, :RealName, :Phone, :Email, :ValidateFrom, :ValidateTo, :GroupIdSet, :AuthType, :ValidateTime, :DepartmentId

        def initialize(username=nil, realname=nil, phone=nil, email=nil, validatefrom=nil, validateto=nil, groupidset=nil, authtype=nil, validatetime=nil, departmentid=nil)
          @UserName = username
          @RealName = realname
          @Phone = phone
          @Email = email
          @ValidateFrom = validatefrom
          @ValidateTo = validateto
          @GroupIdSet = groupidset
          @AuthType = authtype
          @ValidateTime = validatetime
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @UserName = params['UserName']
          @RealName = params['RealName']
          @Phone = params['Phone']
          @Email = params['Email']
          @ValidateFrom = params['ValidateFrom']
          @ValidateTo = params['ValidateTo']
          @GroupIdSet = params['GroupIdSet']
          @AuthType = params['AuthType']
          @ValidateTime = params['ValidateTime']
          @DepartmentId = params['DepartmentId']
        end
      end

      # CreateUser返回参数结构体
      class CreateUserResponse < TencentCloud::Common::AbstractModel
        # @param Id: 新建用户的ID
        # @type Id: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Id, :RequestId

        def initialize(id=nil, requestid=nil)
          @Id = id
          @RequestId = requestid
        end

        def deserialize(params)
          @Id = params['Id']
          @RequestId = params['RequestId']
        end
      end

      # DeleteAcls请求参数结构体
      class DeleteAclsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 待删除的权限ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # DeleteAcls返回参数结构体
      class DeleteAclsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteCmdTemplates请求参数结构体
      class DeleteCmdTemplatesRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 待删除的ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # DeleteCmdTemplates返回参数结构体
      class DeleteCmdTemplatesResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteDeviceAccounts请求参数结构体
      class DeleteDeviceAccountsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 待删除的ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # DeleteDeviceAccounts返回参数结构体
      class DeleteDeviceAccountsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteDeviceGroupMembers请求参数结构体
      class DeleteDeviceGroupMembersRequest < TencentCloud::Common::AbstractModel
        # @param Id: 资产组ID
        # @type Id: Integer
        # @param MemberIdSet: 需要删除的资产ID集合
        # @type MemberIdSet: Array

        attr_accessor :Id, :MemberIdSet

        def initialize(id=nil, memberidset=nil)
          @Id = id
          @MemberIdSet = memberidset
        end

        def deserialize(params)
          @Id = params['Id']
          @MemberIdSet = params['MemberIdSet']
        end
      end

      # DeleteDeviceGroupMembers返回参数结构体
      class DeleteDeviceGroupMembersResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteDeviceGroups请求参数结构体
      class DeleteDeviceGroupsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 待删除的资产组ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # DeleteDeviceGroups返回参数结构体
      class DeleteDeviceGroupsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteDevices请求参数结构体
      class DeleteDevicesRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 待删除的ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # DeleteDevices返回参数结构体
      class DeleteDevicesResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteUserGroupMembers请求参数结构体
      class DeleteUserGroupMembersRequest < TencentCloud::Common::AbstractModel
        # @param Id: 用户组ID
        # @type Id: Integer
        # @param MemberIdSet: 需删除的成员用户ID集合
        # @type MemberIdSet: Array

        attr_accessor :Id, :MemberIdSet

        def initialize(id=nil, memberidset=nil)
          @Id = id
          @MemberIdSet = memberidset
        end

        def deserialize(params)
          @Id = params['Id']
          @MemberIdSet = params['MemberIdSet']
        end
      end

      # DeleteUserGroupMembers返回参数结构体
      class DeleteUserGroupMembersResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteUserGroups请求参数结构体
      class DeleteUserGroupsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 待删除的用户组ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # DeleteUserGroups返回参数结构体
      class DeleteUserGroupsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteUsers请求参数结构体
      class DeleteUsersRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 待删除的用户ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # DeleteUsers返回参数结构体
      class DeleteUsersResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 部门信息
      class Department < TencentCloud::Common::AbstractModel
        # @param Id: 部门ID
        # @type Id: String
        # @param Name: 部门名称,1 - 256个字符
        # @type Name: String
        # @param Managers: 部门管理员账号ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Managers: Array
        # @param ManagerUsers: 管理员用户
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ManagerUsers: Array

        attr_accessor :Id, :Name, :Managers, :ManagerUsers

        def initialize(id=nil, name=nil, managers=nil, managerusers=nil)
          @Id = id
          @Name = name
          @Managers = managers
          @ManagerUsers = managerusers
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          @Managers = params['Managers']
          unless params['ManagerUsers'].nil?
            @ManagerUsers = []
            params['ManagerUsers'].each do |i|
              departmentmanageruser_tmp = DepartmentManagerUser.new
              departmentmanageruser_tmp.deserialize(i)
              @ManagerUsers << departmentmanageruser_tmp
            end
          end
        end
      end

      # 部门管理员信息
      class DepartmentManagerUser < TencentCloud::Common::AbstractModel
        # @param ManagerId: 管理员Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ManagerId: String
        # @param ManagerName: 管理员姓名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ManagerName: String

        attr_accessor :ManagerId, :ManagerName

        def initialize(managerid=nil, managername=nil)
          @ManagerId = managerid
          @ManagerName = managername
        end

        def deserialize(params)
          @ManagerId = params['ManagerId']
          @ManagerName = params['ManagerName']
        end
      end

      # DeployResource请求参数结构体
      class DeployResourceRequest < TencentCloud::Common::AbstractModel
        # @param ResourceId: 需要开通服务的资源ID
        # @type ResourceId: String
        # @param ApCode: 需要开通服务的地域
        # @type ApCode: String
        # @param Zone: 子网所在可用区
        # @type Zone: String
        # @param VpcId: 需要开通服务的VPC
        # @type VpcId: String
        # @param SubnetId: 需要开通服务的子网ID
        # @type SubnetId: String
        # @param CidrBlock: 需要开通服务的子网网段
        # @type CidrBlock: String
        # @param VpcName: 需要开通服务的VPC名称
        # @type VpcName: String
        # @param VpcCidrBlock: 需要开通服务的VPC对应的网段
        # @type VpcCidrBlock: String
        # @param SubnetName: 需要开通服务的子网名称
        # @type SubnetName: String

        attr_accessor :ResourceId, :ApCode, :Zone, :VpcId, :SubnetId, :CidrBlock, :VpcName, :VpcCidrBlock, :SubnetName

        def initialize(resourceid=nil, apcode=nil, zone=nil, vpcid=nil, subnetid=nil, cidrblock=nil, vpcname=nil, vpccidrblock=nil, subnetname=nil)
          @ResourceId = resourceid
          @ApCode = apcode
          @Zone = zone
          @VpcId = vpcid
          @SubnetId = subnetid
          @CidrBlock = cidrblock
          @VpcName = vpcname
          @VpcCidrBlock = vpccidrblock
          @SubnetName = subnetname
        end

        def deserialize(params)
          @ResourceId = params['ResourceId']
          @ApCode = params['ApCode']
          @Zone = params['Zone']
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
          @CidrBlock = params['CidrBlock']
          @VpcName = params['VpcName']
          @VpcCidrBlock = params['VpcCidrBlock']
          @SubnetName = params['SubnetName']
        end
      end

      # DeployResource返回参数结构体
      class DeployResourceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DescribeAcls请求参数结构体
      class DescribeAclsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 访问权限ID集合
        # @type IdSet: Array
        # @param Name: 访问权限名称,模糊查询,最长64字符
        # @type Name: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,默认20,最大500
        # @type Limit: Integer
        # @param Exact: 是否根据Name进行精确查询,默认值false
        # @type Exact: Boolean
        # @param AuthorizedUserIdSet: 有访问权限的用户ID集合
        # @type AuthorizedUserIdSet: Array
        # @param AuthorizedDeviceIdSet: 有访问权限的资产ID集合
        # @type AuthorizedDeviceIdSet: Array
        # @param Status: 访问权限状态,1 - 已生效,2 - 未生效,3 - 已过期
        # @type Status: Integer
        # @param DepartmentId: 部门ID,用于过滤属于某个部门的访问权限
        # @type DepartmentId: String

        attr_accessor :IdSet, :Name, :Offset, :Limit, :Exact, :AuthorizedUserIdSet, :AuthorizedDeviceIdSet, :Status, :DepartmentId

        def initialize(idset=nil, name=nil, offset=nil, limit=nil, exact=nil, authorizeduseridset=nil, authorizeddeviceidset=nil, status=nil, departmentid=nil)
          @IdSet = idset
          @Name = name
          @Offset = offset
          @Limit = limit
          @Exact = exact
          @AuthorizedUserIdSet = authorizeduseridset
          @AuthorizedDeviceIdSet = authorizeddeviceidset
          @Status = status
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @IdSet = params['IdSet']
          @Name = params['Name']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @Exact = params['Exact']
          @AuthorizedUserIdSet = params['AuthorizedUserIdSet']
          @AuthorizedDeviceIdSet = params['AuthorizedDeviceIdSet']
          @Status = params['Status']
          @DepartmentId = params['DepartmentId']
        end
      end

      # DescribeAcls返回参数结构体
      class DescribeAclsResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 访问权限总数
        # @type TotalCount: Integer
        # @param AclSet: 访问权限列表
        # @type AclSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :AclSet, :RequestId

        def initialize(totalcount=nil, aclset=nil, requestid=nil)
          @TotalCount = totalcount
          @AclSet = aclset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['AclSet'].nil?
            @AclSet = []
            params['AclSet'].each do |i|
              acl_tmp = Acl.new
              acl_tmp.deserialize(i)
              @AclSet << acl_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeAssetSyncStatus请求参数结构体
      class DescribeAssetSyncStatusRequest < TencentCloud::Common::AbstractModel
        # @param Category: 查询的资产同步类型。1 -主机资产, 2 - 数据库资产
        # @type Category: Integer

        attr_accessor :Category

        def initialize(category=nil)
          @Category = category
        end

        def deserialize(params)
          @Category = params['Category']
        end
      end

      # DescribeAssetSyncStatus返回参数结构体
      class DescribeAssetSyncStatusResponse < TencentCloud::Common::AbstractModel
        # @param Status: 资产同步结果
        # @type Status: :class:`Tencentcloud::Dasb.v20191018.models.AssetSyncStatus`
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Status, :RequestId

        def initialize(status=nil, requestid=nil)
          @Status = status
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Status'].nil?
            @Status = AssetSyncStatus.new
            @Status.deserialize(params['Status'])
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeCmdTemplates请求参数结构体
      class DescribeCmdTemplatesRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 命令模板ID集合,非必需
        # @type IdSet: Array
        # @param Name: 命令模板名,模糊查询,最大长度64字符
        # @type Name: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,默认20
        # @type Limit: Integer

        attr_accessor :IdSet, :Name, :Offset, :Limit

        def initialize(idset=nil, name=nil, offset=nil, limit=nil)
          @IdSet = idset
          @Name = name
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @IdSet = params['IdSet']
          @Name = params['Name']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # DescribeCmdTemplates返回参数结构体
      class DescribeCmdTemplatesResponse < TencentCloud::Common::AbstractModel
        # @param CmdTemplateSet: 命令模板列表
        # @type CmdTemplateSet: Array
        # @param TotalCount: 总记录数
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :CmdTemplateSet, :TotalCount, :RequestId

        def initialize(cmdtemplateset=nil, totalcount=nil, requestid=nil)
          @CmdTemplateSet = cmdtemplateset
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['CmdTemplateSet'].nil?
            @CmdTemplateSet = []
            params['CmdTemplateSet'].each do |i|
              cmdtemplate_tmp = CmdTemplate.new
              cmdtemplate_tmp.deserialize(i)
              @CmdTemplateSet << cmdtemplate_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # DescribeDasbImageIds请求参数结构体
      class DescribeDasbImageIdsRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # DescribeDasbImageIds返回参数结构体
      class DescribeDasbImageIdsResponse < TencentCloud::Common::AbstractModel
        # @param BaseImageId: 基础镜像ID
        # @type BaseImageId: String
        # @param AiImageId: AI镜像ID
        # @type AiImageId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :BaseImageId, :AiImageId, :RequestId

        def initialize(baseimageid=nil, aiimageid=nil, requestid=nil)
          @BaseImageId = baseimageid
          @AiImageId = aiimageid
          @RequestId = requestid
        end

        def deserialize(params)
          @BaseImageId = params['BaseImageId']
          @AiImageId = params['AiImageId']
          @RequestId = params['RequestId']
        end
      end

      # DescribeDeviceAccounts请求参数结构体
      class DescribeDeviceAccountsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 主机账号ID集合,非必需,如果使用IdSet则忽略其他过滤参数
        # @type IdSet: Array
        # @param Account: 主机账号名,模糊查询,不能单独出现,必须于DeviceId一起提交
        # @type Account: String
        # @param DeviceId: 主机ID,未使用IdSet时必须携带
        # @type DeviceId: Integer
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,默认20
        # @type Limit: Integer

        attr_accessor :IdSet, :Account, :DeviceId, :Offset, :Limit

        def initialize(idset=nil, account=nil, deviceid=nil, offset=nil, limit=nil)
          @IdSet = idset
          @Account = account
          @DeviceId = deviceid
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @IdSet = params['IdSet']
          @Account = params['Account']
          @DeviceId = params['DeviceId']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # DescribeDeviceAccounts返回参数结构体
      class DescribeDeviceAccountsResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 记录总数
        # @type TotalCount: Integer
        # @param DeviceAccountSet: 账号信息列表
        # @type DeviceAccountSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :DeviceAccountSet, :RequestId

        def initialize(totalcount=nil, deviceaccountset=nil, requestid=nil)
          @TotalCount = totalcount
          @DeviceAccountSet = deviceaccountset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['DeviceAccountSet'].nil?
            @DeviceAccountSet = []
            params['DeviceAccountSet'].each do |i|
              deviceaccount_tmp = DeviceAccount.new
              deviceaccount_tmp.deserialize(i)
              @DeviceAccountSet << deviceaccount_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeDeviceGroupMembers请求参数结构体
      class DescribeDeviceGroupMembersRequest < TencentCloud::Common::AbstractModel
        # @param Id: 资产组ID
        # @type Id: Integer
        # @param Bound: true - 查询已在该资产组的资产,false - 查询未在该资产组的资产
        # @type Bound: Boolean
        # @param Name: 资产名或资产IP,模糊查询
        # @type Name: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数,默认20, 最大500
        # @type Limit: Integer
        # @param Kind: 资产类型,1 - Linux,2 - Windows,3 - MySQL,4 - SQLServer
        # @type Kind: Integer
        # @param DepartmentId: 所属部门ID
        # @type DepartmentId: String
        # @param TagFilters: 过滤条件,可按照标签键、标签进行过滤。如果同时指定标签键和标签过滤条件,它们之间为“AND”的关系
        # @type TagFilters: Array

        attr_accessor :Id, :Bound, :Name, :Offset, :Limit, :Kind, :DepartmentId, :TagFilters

        def initialize(id=nil, bound=nil, name=nil, offset=nil, limit=nil, kind=nil, departmentid=nil, tagfilters=nil)
          @Id = id
          @Bound = bound
          @Name = name
          @Offset = offset
          @Limit = limit
          @Kind = kind
          @DepartmentId = departmentid
          @TagFilters = tagfilters
        end

        def deserialize(params)
          @Id = params['Id']
          @Bound = params['Bound']
          @Name = params['Name']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @Kind = params['Kind']
          @DepartmentId = params['DepartmentId']
          unless params['TagFilters'].nil?
            @TagFilters = []
            params['TagFilters'].each do |i|
              tagfilter_tmp = TagFilter.new
              tagfilter_tmp.deserialize(i)
              @TagFilters << tagfilter_tmp
            end
          end
        end
      end

      # DescribeDeviceGroupMembers返回参数结构体
      class DescribeDeviceGroupMembersResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 资产组成员总数
        # @type TotalCount: Integer
        # @param DeviceSet: 资产组成员列表
        # @type DeviceSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :DeviceSet, :RequestId

        def initialize(totalcount=nil, deviceset=nil, requestid=nil)
          @TotalCount = totalcount
          @DeviceSet = deviceset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['DeviceSet'].nil?
            @DeviceSet = []
            params['DeviceSet'].each do |i|
              device_tmp = Device.new
              device_tmp.deserialize(i)
              @DeviceSet << device_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeDeviceGroups请求参数结构体
      class DescribeDeviceGroupsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 资产组ID集合
        # @type IdSet: Array
        # @param Name: 资产组名,最长64个字符,模糊查询
        # @type Name: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,缺省20,最大500
        # @type Limit: Integer
        # @param DepartmentId: 部门ID,用于过滤属于某个部门的资产组
        # @type DepartmentId: String

        attr_accessor :IdSet, :Name, :Offset, :Limit, :DepartmentId

        def initialize(idset=nil, name=nil, offset=nil, limit=nil, departmentid=nil)
          @IdSet = idset
          @Name = name
          @Offset = offset
          @Limit = limit
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @IdSet = params['IdSet']
          @Name = params['Name']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @DepartmentId = params['DepartmentId']
        end
      end

      # DescribeDeviceGroups返回参数结构体
      class DescribeDeviceGroupsResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 资产组总数
        # @type TotalCount: Integer
        # @param GroupSet: 资产组列表
        # @type GroupSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :GroupSet, :RequestId

        def initialize(totalcount=nil, groupset=nil, requestid=nil)
          @TotalCount = totalcount
          @GroupSet = groupset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['GroupSet'].nil?
            @GroupSet = []
            params['GroupSet'].each do |i|
              group_tmp = Group.new
              group_tmp.deserialize(i)
              @GroupSet << group_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeDevices请求参数结构体
      class DescribeDevicesRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 资产ID集合
        # @type IdSet: Array
        # @param Name: 资产名或资产IP,模糊查询
        # @type Name: String
        # @param Ip: 暂未使用
        # @type Ip: String
        # @param ApCodeSet: 地域码集合
        # @type ApCodeSet: Array
        # @param Kind: 操作系统类型, 1 - Linux, 2 - Windows, 3 - MySQL, 4 - SQLServer
        # @type Kind: Integer
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,默认20
        # @type Limit: Integer
        # @param AuthorizedUserIdSet: 有该资产访问权限的用户ID集合
        # @type AuthorizedUserIdSet: Array
        # @param ResourceIdSet: 过滤条件,资产绑定的堡垒机服务ID集合
        # @type ResourceIdSet: Array
        # @param KindSet: 可提供按照多种类型过滤, 1 - Linux, 2 - Windows, 3 - MySQL, 4 - SQLServer
        # @type KindSet: Array
        # @param ManagedAccount: 资产是否包含托管账号。1,包含;0,不包含
        # @type ManagedAccount: String
        # @param DepartmentId: 过滤条件,可按照部门ID进行过滤
        # @type DepartmentId: String
        # @param TagFilters: 过滤条件,可按照标签键、标签进行过滤。如果同时指定标签键和标签过滤条件,它们之间为“AND”的关系
        # @type TagFilters: Array
        # @param Filters: 过滤数组。支持的Name:
        # BindingStatus 绑定状态
        # @type Filters: Array

        attr_accessor :IdSet, :Name, :Ip, :ApCodeSet, :Kind, :Offset, :Limit, :AuthorizedUserIdSet, :ResourceIdSet, :KindSet, :ManagedAccount, :DepartmentId, :TagFilters, :Filters

        def initialize(idset=nil, name=nil, ip=nil, apcodeset=nil, kind=nil, offset=nil, limit=nil, authorizeduseridset=nil, resourceidset=nil, kindset=nil, managedaccount=nil, departmentid=nil, tagfilters=nil, filters=nil)
          @IdSet = idset
          @Name = name
          @Ip = ip
          @ApCodeSet = apcodeset
          @Kind = kind
          @Offset = offset
          @Limit = limit
          @AuthorizedUserIdSet = authorizeduseridset
          @ResourceIdSet = resourceidset
          @KindSet = kindset
          @ManagedAccount = managedaccount
          @DepartmentId = departmentid
          @TagFilters = tagfilters
          @Filters = filters
        end

        def deserialize(params)
          @IdSet = params['IdSet']
          @Name = params['Name']
          @Ip = params['Ip']
          @ApCodeSet = params['ApCodeSet']
          @Kind = params['Kind']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @AuthorizedUserIdSet = params['AuthorizedUserIdSet']
          @ResourceIdSet = params['ResourceIdSet']
          @KindSet = params['KindSet']
          @ManagedAccount = params['ManagedAccount']
          @DepartmentId = params['DepartmentId']
          unless params['TagFilters'].nil?
            @TagFilters = []
            params['TagFilters'].each do |i|
              tagfilter_tmp = TagFilter.new
              tagfilter_tmp.deserialize(i)
              @TagFilters << tagfilter_tmp
            end
          end
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
        end
      end

      # DescribeDevices返回参数结构体
      class DescribeDevicesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 资产总数
        # @type TotalCount: Integer
        # @param DeviceSet: 资产信息列表
        # @type DeviceSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :DeviceSet, :RequestId

        def initialize(totalcount=nil, deviceset=nil, requestid=nil)
          @TotalCount = totalcount
          @DeviceSet = deviceset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['DeviceSet'].nil?
            @DeviceSet = []
            params['DeviceSet'].each do |i|
              device_tmp = Device.new
              device_tmp.deserialize(i)
              @DeviceSet << device_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeLoginEvent请求参数结构体
      class DescribeLoginEventRequest < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名,如果不包含其他条件时对user_name or real_name两个字段模糊查询
        # @type UserName: String
        # @param RealName: 姓名,模糊查询
        # @type RealName: String
        # @param StartTime: 查询时间范围,起始时间
        # @type StartTime: String
        # @param EndTime: 查询时间范围,结束时间
        # @type EndTime: String
        # @param SourceIp: 来源IP,模糊查询
        # @type SourceIp: String
        # @param Entry: 登录入口:1-字符界面,2-图形界面,3-web页面, 4-API
        # @type Entry: Integer
        # @param Result: 操作结果,1-成功,2-失败
        # @type Result: Integer
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 分页每页记录数,默认20
        # @type Limit: Integer

        attr_accessor :UserName, :RealName, :StartTime, :EndTime, :SourceIp, :Entry, :Result, :Offset, :Limit

        def initialize(username=nil, realname=nil, starttime=nil, endtime=nil, sourceip=nil, entry=nil, result=nil, offset=nil, limit=nil)
          @UserName = username
          @RealName = realname
          @StartTime = starttime
          @EndTime = endtime
          @SourceIp = sourceip
          @Entry = entry
          @Result = result
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @UserName = params['UserName']
          @RealName = params['RealName']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @SourceIp = params['SourceIp']
          @Entry = params['Entry']
          @Result = params['Result']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # DescribeLoginEvent返回参数结构体
      class DescribeLoginEventResponse < TencentCloud::Common::AbstractModel
        # @param LoginEventSet: 登录日志列表
        # @type LoginEventSet: Array
        # @param TotalCount: 总记录数
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :LoginEventSet, :TotalCount, :RequestId

        def initialize(logineventset=nil, totalcount=nil, requestid=nil)
          @LoginEventSet = logineventset
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['LoginEventSet'].nil?
            @LoginEventSet = []
            params['LoginEventSet'].each do |i|
              loginevent_tmp = LoginEvent.new
              loginevent_tmp.deserialize(i)
              @LoginEventSet << loginevent_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # DescribeOperationEvent请求参数结构体
      class DescribeOperationEventRequest < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名,如果不包含其他条件时对user_name or real_name两个字段模糊查询
        # @type UserName: String
        # @param RealName: 姓名,模糊查询
        # @type RealName: String
        # @param StartTime: 查询时间范围,起始时间
        # @type StartTime: String
        # @param EndTime: 查询时间范围,结束时间
        # @type EndTime: String
        # @param SourceIp: 来源IP,模糊查询
        # @type SourceIp: String
        # @param Kind: 操作类型,参考DescribeOperationType返回结果
        # @type Kind: Integer
        # @param Result: 操作结果,1-成功,2-失败
        # @type Result: Integer
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 分页每页记录数,默认20
        # @type Limit: Integer

        attr_accessor :UserName, :RealName, :StartTime, :EndTime, :SourceIp, :Kind, :Result, :Offset, :Limit

        def initialize(username=nil, realname=nil, starttime=nil, endtime=nil, sourceip=nil, kind=nil, result=nil, offset=nil, limit=nil)
          @UserName = username
          @RealName = realname
          @StartTime = starttime
          @EndTime = endtime
          @SourceIp = sourceip
          @Kind = kind
          @Result = result
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @UserName = params['UserName']
          @RealName = params['RealName']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @SourceIp = params['SourceIp']
          @Kind = params['Kind']
          @Result = params['Result']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # DescribeOperationEvent返回参数结构体
      class DescribeOperationEventResponse < TencentCloud::Common::AbstractModel
        # @param OperationEventSet: 操作日志列表
        # @type OperationEventSet: Array
        # @param TotalCount: 总记录数
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OperationEventSet, :TotalCount, :RequestId

        def initialize(operationeventset=nil, totalcount=nil, requestid=nil)
          @OperationEventSet = operationeventset
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['OperationEventSet'].nil?
            @OperationEventSet = []
            params['OperationEventSet'].each do |i|
              operationevent_tmp = OperationEvent.new
              operationevent_tmp.deserialize(i)
              @OperationEventSet << operationevent_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # DescribeResources请求参数结构体
      class DescribeResourcesRequest < TencentCloud::Common::AbstractModel
        # @param ApCode: 地域码, 如: ap-guangzhou
        # @type ApCode: String
        # @param VpcId: 按照堡垒机开通的 VPC 实例ID查询
        # @type VpcId: String
        # @param ResourceIds: 资源ID集合,当传入ID集合时忽略 ApCode 和 VpcId
        # @type ResourceIds: Array

        attr_accessor :ApCode, :VpcId, :ResourceIds

        def initialize(apcode=nil, vpcid=nil, resourceids=nil)
          @ApCode = apcode
          @VpcId = vpcid
          @ResourceIds = resourceids
        end

        def deserialize(params)
          @ApCode = params['ApCode']
          @VpcId = params['VpcId']
          @ResourceIds = params['ResourceIds']
        end
      end

      # DescribeResources返回参数结构体
      class DescribeResourcesResponse < TencentCloud::Common::AbstractModel
        # @param ResourceSet: 堡垒机资源列表
        # @type ResourceSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ResourceSet, :RequestId

        def initialize(resourceset=nil, requestid=nil)
          @ResourceSet = resourceset
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['ResourceSet'].nil?
            @ResourceSet = []
            params['ResourceSet'].each do |i|
              resource_tmp = Resource.new
              resource_tmp.deserialize(i)
              @ResourceSet << resource_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeUserGroupMembers请求参数结构体
      class DescribeUserGroupMembersRequest < TencentCloud::Common::AbstractModel
        # @param Id: 用户组ID
        # @type Id: Integer
        # @param Bound: true - 查询已添加到该用户组的用户,false - 查询未添加到该用户组的用户
        # @type Bound: Boolean
        # @param Name: 用户名或用户姓名,最长64个字符,模糊查询
        # @type Name: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,默认20, 最大500
        # @type Limit: Integer
        # @param DepartmentId: 所属部门ID
        # @type DepartmentId: String

        attr_accessor :Id, :Bound, :Name, :Offset, :Limit, :DepartmentId

        def initialize(id=nil, bound=nil, name=nil, offset=nil, limit=nil, departmentid=nil)
          @Id = id
          @Bound = bound
          @Name = name
          @Offset = offset
          @Limit = limit
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @Id = params['Id']
          @Bound = params['Bound']
          @Name = params['Name']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @DepartmentId = params['DepartmentId']
        end
      end

      # DescribeUserGroupMembers返回参数结构体
      class DescribeUserGroupMembersResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 用户组成员总数
        # @type TotalCount: Integer
        # @param UserSet: 用户组成员列表
        # @type UserSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :UserSet, :RequestId

        def initialize(totalcount=nil, userset=nil, requestid=nil)
          @TotalCount = totalcount
          @UserSet = userset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['UserSet'].nil?
            @UserSet = []
            params['UserSet'].each do |i|
              user_tmp = User.new
              user_tmp.deserialize(i)
              @UserSet << user_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeUserGroups请求参数结构体
      class DescribeUserGroupsRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 用户组ID集合
        # @type IdSet: Array
        # @param Name: 用户组名,模糊查询,长度:0-64字符
        # @type Name: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,缺省20,最大500
        # @type Limit: Integer
        # @param DepartmentId: 部门ID,用于过滤属于某个部门的用户组
        # @type DepartmentId: String

        attr_accessor :IdSet, :Name, :Offset, :Limit, :DepartmentId

        def initialize(idset=nil, name=nil, offset=nil, limit=nil, departmentid=nil)
          @IdSet = idset
          @Name = name
          @Offset = offset
          @Limit = limit
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @IdSet = params['IdSet']
          @Name = params['Name']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @DepartmentId = params['DepartmentId']
        end
      end

      # DescribeUserGroups返回参数结构体
      class DescribeUserGroupsResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 用户组总数
        # @type TotalCount: Integer
        # @param GroupSet: 用户组列表
        # @type GroupSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :GroupSet, :RequestId

        def initialize(totalcount=nil, groupset=nil, requestid=nil)
          @TotalCount = totalcount
          @GroupSet = groupset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['GroupSet'].nil?
            @GroupSet = []
            params['GroupSet'].each do |i|
              group_tmp = Group.new
              group_tmp.deserialize(i)
              @GroupSet << group_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeUsers请求参数结构体
      class DescribeUsersRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 如果IdSet不为空,则忽略其他参数
        # @type IdSet: Array
        # @param Name: 模糊查询,IdSet、UserName、Phone为空时才生效,对用户名和姓名进行模糊查询
        # @type Name: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 每页条目数量,默认20, 最大500
        # @type Limit: Integer
        # @param UserName: 精确查询,IdSet为空时才生效
        # @type UserName: String
        # @param Phone: 精确查询,IdSet、UserName为空时才生效。
        # 大陆手机号直接填写,如果是其他国家、地区号码,按照"国家地区代码|手机号"的格式输入。如: "+852|xxxxxxxx"
        # @type Phone: String
        # @param Email: 邮箱,精确查询
        # @type Email: String
        # @param AuthorizedDeviceIdSet: 查询具有指定资产ID访问权限的用户
        # @type AuthorizedDeviceIdSet: Array
        # @param AuthTypeSet: 认证方式,0 - 本地, 1 - LDAP, 2 - OAuth, 不传为全部
        # @type AuthTypeSet: Array
        # @param DepartmentId: 部门ID,用于过滤属于某个部门的用户
        # @type DepartmentId: String
        # @param Filters: 参数过滤数组
        # @type Filters: Array

        attr_accessor :IdSet, :Name, :Offset, :Limit, :UserName, :Phone, :Email, :AuthorizedDeviceIdSet, :AuthTypeSet, :DepartmentId, :Filters

        def initialize(idset=nil, name=nil, offset=nil, limit=nil, username=nil, phone=nil, email=nil, authorizeddeviceidset=nil, authtypeset=nil, departmentid=nil, filters=nil)
          @IdSet = idset
          @Name = name
          @Offset = offset
          @Limit = limit
          @UserName = username
          @Phone = phone
          @Email = email
          @AuthorizedDeviceIdSet = authorizeddeviceidset
          @AuthTypeSet = authtypeset
          @DepartmentId = departmentid
          @Filters = filters
        end

        def deserialize(params)
          @IdSet = params['IdSet']
          @Name = params['Name']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @UserName = params['UserName']
          @Phone = params['Phone']
          @Email = params['Email']
          @AuthorizedDeviceIdSet = params['AuthorizedDeviceIdSet']
          @AuthTypeSet = params['AuthTypeSet']
          @DepartmentId = params['DepartmentId']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
        end
      end

      # DescribeUsers返回参数结构体
      class DescribeUsersResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 用户总数
        # @type TotalCount: Integer
        # @param UserSet: 用户列表
        # @type UserSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :UserSet, :RequestId

        def initialize(totalcount=nil, userset=nil, requestid=nil)
          @TotalCount = totalcount
          @UserSet = userset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['UserSet'].nil?
            @UserSet = []
            params['UserSet'].each do |i|
              user_tmp = User.new
              user_tmp.deserialize(i)
              @UserSet << user_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 资产信息
      class Device < TencentCloud::Common::AbstractModel
        # @param Id: 资产ID
        # @type Id: Integer
        # @param InstanceId: 实例ID,对应CVM、CDB等实例ID
        # @type InstanceId: String
        # @param Name: 资产名
        # @type Name: String
        # @param PublicIp: 公网IP
        # @type PublicIp: String
        # @param PrivateIp: 内网IP
        # @type PrivateIp: String
        # @param ApCode: 地域编码
        # @type ApCode: String
        # @param OsName: 操作系统名称
        # @type OsName: String
        # @param Kind: 资产类型 1 - Linux, 2 - Windows, 3 - MySQL, 4 - SQLServer
        # @type Kind: Integer
        # @param Port: 管理端口
        # @type Port: Integer
        # @param GroupSet: 所属资产组列表
        # @type GroupSet: Array
        # @param AccountCount: 资产绑定的账号数
        # @type AccountCount: Integer
        # @param VpcId: VPC ID
        # @type VpcId: String
        # @param SubnetId: 子网ID
        # @type SubnetId: String
        # @param Resource: 堡垒机服务信息,注意没有绑定服务时为null
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Resource: :class:`Tencentcloud::Dasb.v20191018.models.Resource`
        # @param Department: 资产所属部门
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Department: :class:`Tencentcloud::Dasb.v20191018.models.Department`
        # @param IpPortSet: 数据库资产的多节点
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IpPortSet: Array

        attr_accessor :Id, :InstanceId, :Name, :PublicIp, :PrivateIp, :ApCode, :OsName, :Kind, :Port, :GroupSet, :AccountCount, :VpcId, :SubnetId, :Resource, :Department, :IpPortSet

        def initialize(id=nil, instanceid=nil, name=nil, publicip=nil, privateip=nil, apcode=nil, osname=nil, kind=nil, port=nil, groupset=nil, accountcount=nil, vpcid=nil, subnetid=nil, resource=nil, department=nil, ipportset=nil)
          @Id = id
          @InstanceId = instanceid
          @Name = name
          @PublicIp = publicip
          @PrivateIp = privateip
          @ApCode = apcode
          @OsName = osname
          @Kind = kind
          @Port = port
          @GroupSet = groupset
          @AccountCount = accountcount
          @VpcId = vpcid
          @SubnetId = subnetid
          @Resource = resource
          @Department = department
          @IpPortSet = ipportset
        end

        def deserialize(params)
          @Id = params['Id']
          @InstanceId = params['InstanceId']
          @Name = params['Name']
          @PublicIp = params['PublicIp']
          @PrivateIp = params['PrivateIp']
          @ApCode = params['ApCode']
          @OsName = params['OsName']
          @Kind = params['Kind']
          @Port = params['Port']
          unless params['GroupSet'].nil?
            @GroupSet = []
            params['GroupSet'].each do |i|
              group_tmp = Group.new
              group_tmp.deserialize(i)
              @GroupSet << group_tmp
            end
          end
          @AccountCount = params['AccountCount']
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
          unless params['Resource'].nil?
            @Resource = Resource.new
            @Resource.deserialize(params['Resource'])
          end
          unless params['Department'].nil?
            @Department = Department.new
            @Department.deserialize(params['Department'])
          end
          @IpPortSet = params['IpPortSet']
        end
      end

      # 主机账号
      class DeviceAccount < TencentCloud::Common::AbstractModel
        # @param Id: 账号ID
        # @type Id: Integer
        # @param DeviceId: 主机ID
        # @type DeviceId: Integer
        # @param Account: 账号名
        # @type Account: String
        # @param BoundPassword: true-已托管密码,false-未托管密码
        # @type BoundPassword: Boolean
        # @param BoundPrivateKey: true-已托管私钥,false-未托管私钥
        # @type BoundPrivateKey: Boolean

        attr_accessor :Id, :DeviceId, :Account, :BoundPassword, :BoundPrivateKey

        def initialize(id=nil, deviceid=nil, account=nil, boundpassword=nil, boundprivatekey=nil)
          @Id = id
          @DeviceId = deviceid
          @Account = account
          @BoundPassword = boundpassword
          @BoundPrivateKey = boundprivatekey
        end

        def deserialize(params)
          @Id = params['Id']
          @DeviceId = params['DeviceId']
          @Account = params['Account']
          @BoundPassword = params['BoundPassword']
          @BoundPrivateKey = params['BoundPrivateKey']
        end
      end

      # 主机参数,导入外部主机时使用
      class ExternalDevice < TencentCloud::Common::AbstractModel
        # @param OsName: 操作系统名称,只能是Linux、Windows或MySQL
        # @type OsName: String
        # @param Ip: IP地址
        # @type Ip: String
        # @param Port: 管理端口
        # @type Port: Integer
        # @param Name: 主机名,可为空
        # @type Name: String
        # @param DepartmentId: 资产所属的部门ID
        # @type DepartmentId: String
        # @param IpPortSet: 资产多节点:字段ip和端口
        # @type IpPortSet: Array

        attr_accessor :OsName, :Ip, :Port, :Name, :DepartmentId, :IpPortSet

        def initialize(osname=nil, ip=nil, port=nil, name=nil, departmentid=nil, ipportset=nil)
          @OsName = osname
          @Ip = ip
          @Port = port
          @Name = name
          @DepartmentId = departmentid
          @IpPortSet = ipportset
        end

        def deserialize(params)
          @OsName = params['OsName']
          @Ip = params['Ip']
          @Port = params['Port']
          @Name = params['Name']
          @DepartmentId = params['DepartmentId']
          @IpPortSet = params['IpPortSet']
        end
      end

      # 描述键值对过滤器,用于条件过滤查询
      class Filter < TencentCloud::Common::AbstractModel
        # @param Name: 需要过滤的字段。
        # @type Name: String
        # @param Values: 字段的过滤值。
        # 若存在多个Filter时,Filter间的关系为逻辑与(AND)关系。
        # 若同一个Filter存在多个Values,同一Filter下Values间的关系为逻辑或(OR)关系。
        # @type Values: Array

        attr_accessor :Name, :Values

        def initialize(name=nil, values=nil)
          @Name = name
          @Values = values
        end

        def deserialize(params)
          @Name = params['Name']
          @Values = params['Values']
        end
      end

      # 组信息,用于用户组、主机组
      class Group < TencentCloud::Common::AbstractModel
        # @param Id: 组ID
        # @type Id: Integer
        # @param Name: 组名称
        # @type Name: String
        # @param Department: 所属部门信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Department: :class:`Tencentcloud::Dasb.v20191018.models.Department`
        # @param Count: 个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Count: Integer

        attr_accessor :Id, :Name, :Department, :Count

        def initialize(id=nil, name=nil, department=nil, count=nil)
          @Id = id
          @Name = name
          @Department = department
          @Count = count
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          unless params['Department'].nil?
            @Department = Department.new
            @Department.deserialize(params['Department'])
          end
          @Count = params['Count']
        end
      end

      # ImportExternalDevice请求参数结构体
      class ImportExternalDeviceRequest < TencentCloud::Common::AbstractModel
        # @param DeviceSet: 资产参数列表
        # @type DeviceSet: Array

        attr_accessor :DeviceSet

        def initialize(deviceset=nil)
          @DeviceSet = deviceset
        end

        def deserialize(params)
          unless params['DeviceSet'].nil?
            @DeviceSet = []
            params['DeviceSet'].each do |i|
              externaldevice_tmp = ExternalDevice.new
              externaldevice_tmp.deserialize(i)
              @DeviceSet << externaldevice_tmp
            end
          end
        end
      end

      # ImportExternalDevice返回参数结构体
      class ImportExternalDeviceResponse < TencentCloud::Common::AbstractModel
        # @param DeviceIdSet: 资产ID列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceIdSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :DeviceIdSet, :RequestId

        def initialize(deviceidset=nil, requestid=nil)
          @DeviceIdSet = deviceidset
          @RequestId = requestid
        end

        def deserialize(params)
          @DeviceIdSet = params['DeviceIdSet']
          @RequestId = params['RequestId']
        end
      end

      # 登录日志
      class LoginEvent < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 姓名
        # @type RealName: String
        # @param Time: 操作时间
        # @type Time: String
        # @param SourceIp: 来源IP
        # @type SourceIp: String
        # @param Entry: 登录入口:1-字符界面,2-图形界面,3-web页面, 4-API
        # @type Entry: Integer
        # @param Result: 操作结果,1-成功,2-失败
        # @type Result: Integer

        attr_accessor :UserName, :RealName, :Time, :SourceIp, :Entry, :Result

        def initialize(username=nil, realname=nil, time=nil, sourceip=nil, entry=nil, result=nil)
          @UserName = username
          @RealName = realname
          @Time = time
          @SourceIp = sourceip
          @Entry = entry
          @Result = result
        end

        def deserialize(params)
          @UserName = params['UserName']
          @RealName = params['RealName']
          @Time = params['Time']
          @SourceIp = params['SourceIp']
          @Entry = params['Entry']
          @Result = params['Result']
        end
      end

      # ModifyAcl请求参数结构体
      class ModifyAclRequest < TencentCloud::Common::AbstractModel
        # @param Name: 访问权限名称,最大32字符,不能包含空白字符
        # @type Name: String
        # @param AllowDiskRedirect: 是否开启磁盘映射
        # @type AllowDiskRedirect: Boolean
        # @param AllowAnyAccount: 是否允许任意账号登录
        # @type AllowAnyAccount: Boolean
        # @param Id: 访问权限ID
        # @type Id: Integer
        # @param AllowClipFileUp: 是否开启剪贴板文件上行
        # @type AllowClipFileUp: Boolean
        # @param AllowClipFileDown: 是否开启剪贴板文件下行
        # @type AllowClipFileDown: Boolean
        # @param AllowClipTextUp: 是否开启剪贴板文本(含图片)上行
        # @type AllowClipTextUp: Boolean
        # @param AllowClipTextDown: 是否开启剪贴板文本(含图片)下行
        # @type AllowClipTextDown: Boolean
        # @param AllowFileUp: 是否开启文件传输上传
        # @type AllowFileUp: Boolean
        # @param MaxFileUpSize: 文件传输上传大小限制(预留参数,目前暂未使用)
        # @type MaxFileUpSize: Integer
        # @param AllowFileDown: 是否开启文件传输下载
        # @type AllowFileDown: Boolean
        # @param MaxFileDownSize: 文件传输下载大小限制(预留参数,目前暂未使用)
        # @type MaxFileDownSize: Integer
        # @param UserIdSet: 关联的用户ID
        # @type UserIdSet: Array
        # @param UserGroupIdSet: 关联的用户组ID
        # @type UserGroupIdSet: Array
        # @param DeviceIdSet: 关联的资产ID
        # @type DeviceIdSet: Array
        # @param DeviceGroupIdSet: 关联的资产组ID
        # @type DeviceGroupIdSet: Array
        # @param AccountSet: 关联的账号
        # @type AccountSet: Array
        # @param CmdTemplateIdSet: 关联的高危命令模板ID
        # @type CmdTemplateIdSet: Array
        # @param ACTemplateIdSet: 关联高危DB模板ID
        # @type ACTemplateIdSet: Array
        # @param AllowDiskFileUp: 是否开启 RDP 磁盘映射文件上传
        # @type AllowDiskFileUp: Boolean
        # @param AllowDiskFileDown: 是否开启 RDP 磁盘映射文件下载
        # @type AllowDiskFileDown: Boolean
        # @param AllowShellFileUp: 是否开启rz sz文件上传
        # @type AllowShellFileUp: Boolean
        # @param AllowShellFileDown: 是否开启rz sz文件下载
        # @type AllowShellFileDown: Boolean
        # @param AllowFileDel: 是否开启 SFTP 文件删除
        # @type AllowFileDel: Boolean
        # @param ValidateFrom: 访问权限生效时间,如:"2021-09-22T00:00:00+00:00"
        # 生效、失效时间不填则访问权限长期有效
        # @type ValidateFrom: String
        # @param ValidateTo: 访问权限失效时间,如:"2021-09-23T00:00:00+00:00"
        # 生效、失效时间不填则访问权限长期有效
        # @type ValidateTo: String
        # @param DepartmentId: 权限所属部门的ID,如:1.2.3
        # @type DepartmentId: String
        # @param AllowAccessCredential: 是否允许使用访问串
        # @type AllowAccessCredential: Boolean

        attr_accessor :Name, :AllowDiskRedirect, :AllowAnyAccount, :Id, :AllowClipFileUp, :AllowClipFileDown, :AllowClipTextUp, :AllowClipTextDown, :AllowFileUp, :MaxFileUpSize, :AllowFileDown, :MaxFileDownSize, :UserIdSet, :UserGroupIdSet, :DeviceIdSet, :DeviceGroupIdSet, :AccountSet, :CmdTemplateIdSet, :ACTemplateIdSet, :AllowDiskFileUp, :AllowDiskFileDown, :AllowShellFileUp, :AllowShellFileDown, :AllowFileDel, :ValidateFrom, :ValidateTo, :DepartmentId, :AllowAccessCredential

        def initialize(name=nil, allowdiskredirect=nil, allowanyaccount=nil, id=nil, allowclipfileup=nil, allowclipfiledown=nil, allowcliptextup=nil, allowcliptextdown=nil, allowfileup=nil, maxfileupsize=nil, allowfiledown=nil, maxfiledownsize=nil, useridset=nil, usergroupidset=nil, deviceidset=nil, devicegroupidset=nil, accountset=nil, cmdtemplateidset=nil, actemplateidset=nil, allowdiskfileup=nil, allowdiskfiledown=nil, allowshellfileup=nil, allowshellfiledown=nil, allowfiledel=nil, validatefrom=nil, validateto=nil, departmentid=nil, allowaccesscredential=nil)
          @Name = name
          @AllowDiskRedirect = allowdiskredirect
          @AllowAnyAccount = allowanyaccount
          @Id = id
          @AllowClipFileUp = allowclipfileup
          @AllowClipFileDown = allowclipfiledown
          @AllowClipTextUp = allowcliptextup
          @AllowClipTextDown = allowcliptextdown
          @AllowFileUp = allowfileup
          @MaxFileUpSize = maxfileupsize
          @AllowFileDown = allowfiledown
          @MaxFileDownSize = maxfiledownsize
          @UserIdSet = useridset
          @UserGroupIdSet = usergroupidset
          @DeviceIdSet = deviceidset
          @DeviceGroupIdSet = devicegroupidset
          @AccountSet = accountset
          @CmdTemplateIdSet = cmdtemplateidset
          @ACTemplateIdSet = actemplateidset
          @AllowDiskFileUp = allowdiskfileup
          @AllowDiskFileDown = allowdiskfiledown
          @AllowShellFileUp = allowshellfileup
          @AllowShellFileDown = allowshellfiledown
          @AllowFileDel = allowfiledel
          @ValidateFrom = validatefrom
          @ValidateTo = validateto
          @DepartmentId = departmentid
          @AllowAccessCredential = allowaccesscredential
        end

        def deserialize(params)
          @Name = params['Name']
          @AllowDiskRedirect = params['AllowDiskRedirect']
          @AllowAnyAccount = params['AllowAnyAccount']
          @Id = params['Id']
          @AllowClipFileUp = params['AllowClipFileUp']
          @AllowClipFileDown = params['AllowClipFileDown']
          @AllowClipTextUp = params['AllowClipTextUp']
          @AllowClipTextDown = params['AllowClipTextDown']
          @AllowFileUp = params['AllowFileUp']
          @MaxFileUpSize = params['MaxFileUpSize']
          @AllowFileDown = params['AllowFileDown']
          @MaxFileDownSize = params['MaxFileDownSize']
          @UserIdSet = params['UserIdSet']
          @UserGroupIdSet = params['UserGroupIdSet']
          @DeviceIdSet = params['DeviceIdSet']
          @DeviceGroupIdSet = params['DeviceGroupIdSet']
          @AccountSet = params['AccountSet']
          @CmdTemplateIdSet = params['CmdTemplateIdSet']
          @ACTemplateIdSet = params['ACTemplateIdSet']
          @AllowDiskFileUp = params['AllowDiskFileUp']
          @AllowDiskFileDown = params['AllowDiskFileDown']
          @AllowShellFileUp = params['AllowShellFileUp']
          @AllowShellFileDown = params['AllowShellFileDown']
          @AllowFileDel = params['AllowFileDel']
          @ValidateFrom = params['ValidateFrom']
          @ValidateTo = params['ValidateTo']
          @DepartmentId = params['DepartmentId']
          @AllowAccessCredential = params['AllowAccessCredential']
        end
      end

      # ModifyAcl返回参数结构体
      class ModifyAclResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyCmdTemplate请求参数结构体
      class ModifyCmdTemplateRequest < TencentCloud::Common::AbstractModel
        # @param Name: 模板名,最长32字符,不能包含空白字符
        # @type Name: String
        # @param CmdList: 命令列表,\n分隔,最长32768字节
        # @type CmdList: String
        # @param Id: 命令模板ID
        # @type Id: Integer
        # @param Encoding: CmdList字段前端是否base64传值。
        # 0:否,1:是
        # @type Encoding: Integer

        attr_accessor :Name, :CmdList, :Id, :Encoding

        def initialize(name=nil, cmdlist=nil, id=nil, encoding=nil)
          @Name = name
          @CmdList = cmdlist
          @Id = id
          @Encoding = encoding
        end

        def deserialize(params)
          @Name = params['Name']
          @CmdList = params['CmdList']
          @Id = params['Id']
          @Encoding = params['Encoding']
        end
      end

      # ModifyCmdTemplate返回参数结构体
      class ModifyCmdTemplateResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyDeviceGroup请求参数结构体
      class ModifyDeviceGroupRequest < TencentCloud::Common::AbstractModel
        # @param Name: 资产组名,最大长度32字符,不能为空
        # @type Name: String
        # @param Id: 资产组ID
        # @type Id: Integer
        # @param DepartmentId: 资产组所属部门ID,如:1.2.3
        # @type DepartmentId: String

        attr_accessor :Name, :Id, :DepartmentId

        def initialize(name=nil, id=nil, departmentid=nil)
          @Name = name
          @Id = id
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @Name = params['Name']
          @Id = params['Id']
          @DepartmentId = params['DepartmentId']
        end
      end

      # ModifyDeviceGroup返回参数结构体
      class ModifyDeviceGroupResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyDevice请求参数结构体
      class ModifyDeviceRequest < TencentCloud::Common::AbstractModel
        # @param Id: 资产记录ID
        # @type Id: Integer
        # @param Port: 管理端口
        # @type Port: Integer
        # @param GroupIdSet: 资产所属组ID集合
        # @type GroupIdSet: Array
        # @param DepartmentId: 资产所属部门ID
        # @type DepartmentId: String

        attr_accessor :Id, :Port, :GroupIdSet, :DepartmentId

        def initialize(id=nil, port=nil, groupidset=nil, departmentid=nil)
          @Id = id
          @Port = port
          @GroupIdSet = groupidset
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @Id = params['Id']
          @Port = params['Port']
          @GroupIdSet = params['GroupIdSet']
          @DepartmentId = params['DepartmentId']
        end
      end

      # ModifyDevice返回参数结构体
      class ModifyDeviceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyResource请求参数结构体
      class ModifyResourceRequest < TencentCloud::Common::AbstractModel
        # @param ResourceId: 需要开通服务的资源ID
        # @type ResourceId: String
        # @param Status: 已废弃
        # @type Status: String
        # @param ModuleSet: 已废弃
        # @type ModuleSet: Array
        # @param ResourceEdition: 实例版本
        # @type ResourceEdition: String
        # @param ResourceNode: 资源节点数
        # @type ResourceNode: Integer
        # @param AutoRenewFlag: 自动续费
        # @type AutoRenewFlag: Integer
        # @param PackageBandwidth: 带宽扩展包个数(4M)
        # @type PackageBandwidth: Integer
        # @param PackageNode: 授权点数扩展包个数(50点)
        # @type PackageNode: Integer
        # @param LogDelivery: 日志投递
        # @type LogDelivery: Integer

        attr_accessor :ResourceId, :Status, :ModuleSet, :ResourceEdition, :ResourceNode, :AutoRenewFlag, :PackageBandwidth, :PackageNode, :LogDelivery

        def initialize(resourceid=nil, status=nil, moduleset=nil, resourceedition=nil, resourcenode=nil, autorenewflag=nil, packagebandwidth=nil, packagenode=nil, logdelivery=nil)
          @ResourceId = resourceid
          @Status = status
          @ModuleSet = moduleset
          @ResourceEdition = resourceedition
          @ResourceNode = resourcenode
          @AutoRenewFlag = autorenewflag
          @PackageBandwidth = packagebandwidth
          @PackageNode = packagenode
          @LogDelivery = logdelivery
        end

        def deserialize(params)
          @ResourceId = params['ResourceId']
          @Status = params['Status']
          @ModuleSet = params['ModuleSet']
          @ResourceEdition = params['ResourceEdition']
          @ResourceNode = params['ResourceNode']
          @AutoRenewFlag = params['AutoRenewFlag']
          @PackageBandwidth = params['PackageBandwidth']
          @PackageNode = params['PackageNode']
          @LogDelivery = params['LogDelivery']
        end
      end

      # ModifyResource返回参数结构体
      class ModifyResourceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyUserGroup请求参数结构体
      class ModifyUserGroupRequest < TencentCloud::Common::AbstractModel
        # @param Id: 用户组ID
        # @type Id: Integer
        # @param Name: 用户组名
        # @type Name: String
        # @param DepartmentId: 用户组所属的部门ID,如:1.2.3
        # @type DepartmentId: String

        attr_accessor :Id, :Name, :DepartmentId

        def initialize(id=nil, name=nil, departmentid=nil)
          @Id = id
          @Name = name
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          @DepartmentId = params['DepartmentId']
        end
      end

      # ModifyUserGroup返回参数结构体
      class ModifyUserGroupResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyUser请求参数结构体
      class ModifyUserRequest < TencentCloud::Common::AbstractModel
        # @param Id: 用户ID
        # @type Id: Integer
        # @param RealName: 用户姓名,最大长度20个字符,不能包含空格
        # @type RealName: String
        # @param Phone: 大陆手机号直接填写,如果是其他国家、地区号码,按照"国家地区代码|手机号"的格式输入。如: "+852|xxxxxxxx"
        # @type Phone: String
        # @param Email: 电子邮件
        # @type Email: String
        # @param ValidateFrom: 用户生效时间,如:"2021-09-22T00:00:00+00:00"
        # 生效、失效时间不填则用户长期有效
        # @type ValidateFrom: String
        # @param ValidateTo: 用户失效时间,如:"2021-09-23T00:00:00+00:00"
        # 生效、失效时间不填则用户长期有效
        # @type ValidateTo: String
        # @param GroupIdSet: 所属用户组ID集合
        # @type GroupIdSet: Array
        # @param AuthType: 认证方式,0 - 本地,1 - LDAP,2 - OAuth 不传则默认为0
        # @type AuthType: Integer
        # @param ValidateTime: 访问时间段限制, 由0、1组成的字符串,长度168(7 × 24),代表该用户在一周中允许访问的时间段。字符串中第N个字符代表在一周中的第N个小时, 0 - 代表不允许访问,1 - 代表允许访问
        # @type ValidateTime: String
        # @param DepartmentId: 用户所属部门的ID,如1.2.3
        # @type DepartmentId: String

        attr_accessor :Id, :RealName, :Phone, :Email, :ValidateFrom, :ValidateTo, :GroupIdSet, :AuthType, :ValidateTime, :DepartmentId

        def initialize(id=nil, realname=nil, phone=nil, email=nil, validatefrom=nil, validateto=nil, groupidset=nil, authtype=nil, validatetime=nil, departmentid=nil)
          @Id = id
          @RealName = realname
          @Phone = phone
          @Email = email
          @ValidateFrom = validatefrom
          @ValidateTo = validateto
          @GroupIdSet = groupidset
          @AuthType = authtype
          @ValidateTime = validatetime
          @DepartmentId = departmentid
        end

        def deserialize(params)
          @Id = params['Id']
          @RealName = params['RealName']
          @Phone = params['Phone']
          @Email = params['Email']
          @ValidateFrom = params['ValidateFrom']
          @ValidateTo = params['ValidateTo']
          @GroupIdSet = params['GroupIdSet']
          @AuthType = params['AuthType']
          @ValidateTime = params['ValidateTime']
          @DepartmentId = params['DepartmentId']
        end
      end

      # ModifyUser返回参数结构体
      class ModifyUserResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 操作日志
      class OperationEvent < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 姓名
        # @type RealName: String
        # @param Time: 操作时间
        # @type Time: String
        # @param SourceIp: 来源IP
        # @type SourceIp: String
        # @param Kind: 操作类型
        # @type Kind: Integer
        # @param Operation: 具体操作内容
        # @type Operation: String
        # @param Result: 操作结果,1-成功,2-失败
        # @type Result: Integer

        attr_accessor :UserName, :RealName, :Time, :SourceIp, :Kind, :Operation, :Result

        def initialize(username=nil, realname=nil, time=nil, sourceip=nil, kind=nil, operation=nil, result=nil)
          @UserName = username
          @RealName = realname
          @Time = time
          @SourceIp = sourceip
          @Kind = kind
          @Operation = operation
          @Result = result
        end

        def deserialize(params)
          @UserName = params['UserName']
          @RealName = params['RealName']
          @Time = params['Time']
          @SourceIp = params['SourceIp']
          @Kind = params['Kind']
          @Operation = params['Operation']
          @Result = params['Result']
        end
      end

      # ResetDeviceAccountPassword请求参数结构体
      class ResetDeviceAccountPasswordRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # ResetDeviceAccountPassword返回参数结构体
      class ResetDeviceAccountPasswordResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ResetDeviceAccountPrivateKey请求参数结构体
      class ResetDeviceAccountPrivateKeyRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # ResetDeviceAccountPrivateKey返回参数结构体
      class ResetDeviceAccountPrivateKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ResetUser请求参数结构体
      class ResetUserRequest < TencentCloud::Common::AbstractModel
        # @param IdSet: 用户ID集合
        # @type IdSet: Array

        attr_accessor :IdSet

        def initialize(idset=nil)
          @IdSet = idset
        end

        def deserialize(params)
          @IdSet = params['IdSet']
        end
      end

      # ResetUser返回参数结构体
      class ResetUserResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 堡垒机服务信息
      class Resource < TencentCloud::Common::AbstractModel
        # @param ResourceId: 服务实例ID,如bh-saas-s3ed4r5e
        # @type ResourceId: String
        # @param ApCode: 地域编码
        # @type ApCode: String
        # @param SvArgs: 服务实例规格信息
        # @type SvArgs: String
        # @param VpcId: VPC ID
        # @type VpcId: String
        # @param Nodes: 服务规格对应的资产数
        # @type Nodes: Integer
        # @param RenewFlag: 自动续费标记,0 - 表示默认状态,1 - 表示自动续费,2 - 表示明确不自动续费
        # @type RenewFlag: Integer
        # @param ExpireTime: 过期时间
        # @type ExpireTime: String
        # @param Status: 资源状态,0 - 未初始化,1 - 正常,2 - 隔离,3 - 销毁,4 - 初始化失败,5 - 初始化中
        # @type Status: Integer
        # @param ResourceName: 服务实例名,如T-Sec-堡垒机(SaaS型)
        # @type ResourceName: String
        # @param Pid: 定价模型ID
        # @type Pid: Integer
        # @param CreateTime: 资源创建时间
        # @type CreateTime: String
        # @param ProductCode: 商品码, p_cds_dasb
        # @type ProductCode: String
        # @param SubProductCode: 子商品码, sp_cds_dasb_bh_saas
        # @type SubProductCode: String
        # @param Zone: 可用区
        # @type Zone: String
        # @param Expired: 是否过期,true-过期,false-未过期
        # @type Expired: Boolean
        # @param Deployed: 是否开通,true-开通,false-未开通
        # @type Deployed: Boolean
        # @param VpcName: 开通服务的 VPC 名称
        # @type VpcName: String
        # @param VpcCidrBlock: 开通服务的 VPC 对应的网段
        # @type VpcCidrBlock: String
        # @param SubnetId: 开通服务的子网ID
        # @type SubnetId: String
        # @param SubnetName: 开通服务的子网名称
        # @type SubnetName: String
        # @param CidrBlock: 开通服务的子网网段
        # @type CidrBlock: String
        # @param PublicIpSet: 外部IP
        # @type PublicIpSet: Array
        # @param PrivateIpSet: 内部IP
        # @type PrivateIpSet: Array
        # @param ModuleSet: 服务开通的高级功能列表,如:[DB]
        # @type ModuleSet: Array
        # @param UsedNodes: 已使用的授权点数
        # @type UsedNodes: Integer
        # @param ExtendPoints: 扩展点数
        # @type ExtendPoints: Integer
        # @param PackageBandwidth: 带宽扩展包个数(4M)
        # @type PackageBandwidth: Integer
        # @param PackageNode: 授权点数扩展包个数(50点)
        # @type PackageNode: Integer
        # @param LogDeliveryArgs: 日志投递规格信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LogDeliveryArgs: String

        attr_accessor :ResourceId, :ApCode, :SvArgs, :VpcId, :Nodes, :RenewFlag, :ExpireTime, :Status, :ResourceName, :Pid, :CreateTime, :ProductCode, :SubProductCode, :Zone, :Expired, :Deployed, :VpcName, :VpcCidrBlock, :SubnetId, :SubnetName, :CidrBlock, :PublicIpSet, :PrivateIpSet, :ModuleSet, :UsedNodes, :ExtendPoints, :PackageBandwidth, :PackageNode, :LogDeliveryArgs

        def initialize(resourceid=nil, apcode=nil, svargs=nil, vpcid=nil, nodes=nil, renewflag=nil, expiretime=nil, status=nil, resourcename=nil, pid=nil, createtime=nil, productcode=nil, subproductcode=nil, zone=nil, expired=nil, deployed=nil, vpcname=nil, vpccidrblock=nil, subnetid=nil, subnetname=nil, cidrblock=nil, publicipset=nil, privateipset=nil, moduleset=nil, usednodes=nil, extendpoints=nil, packagebandwidth=nil, packagenode=nil, logdeliveryargs=nil)
          @ResourceId = resourceid
          @ApCode = apcode
          @SvArgs = svargs
          @VpcId = vpcid
          @Nodes = nodes
          @RenewFlag = renewflag
          @ExpireTime = expiretime
          @Status = status
          @ResourceName = resourcename
          @Pid = pid
          @CreateTime = createtime
          @ProductCode = productcode
          @SubProductCode = subproductcode
          @Zone = zone
          @Expired = expired
          @Deployed = deployed
          @VpcName = vpcname
          @VpcCidrBlock = vpccidrblock
          @SubnetId = subnetid
          @SubnetName = subnetname
          @CidrBlock = cidrblock
          @PublicIpSet = publicipset
          @PrivateIpSet = privateipset
          @ModuleSet = moduleset
          @UsedNodes = usednodes
          @ExtendPoints = extendpoints
          @PackageBandwidth = packagebandwidth
          @PackageNode = packagenode
          @LogDeliveryArgs = logdeliveryargs
        end

        def deserialize(params)
          @ResourceId = params['ResourceId']
          @ApCode = params['ApCode']
          @SvArgs = params['SvArgs']
          @VpcId = params['VpcId']
          @Nodes = params['Nodes']
          @RenewFlag = params['RenewFlag']
          @ExpireTime = params['ExpireTime']
          @Status = params['Status']
          @ResourceName = params['ResourceName']
          @Pid = params['Pid']
          @CreateTime = params['CreateTime']
          @ProductCode = params['ProductCode']
          @SubProductCode = params['SubProductCode']
          @Zone = params['Zone']
          @Expired = params['Expired']
          @Deployed = params['Deployed']
          @VpcName = params['VpcName']
          @VpcCidrBlock = params['VpcCidrBlock']
          @SubnetId = params['SubnetId']
          @SubnetName = params['SubnetName']
          @CidrBlock = params['CidrBlock']
          @PublicIpSet = params['PublicIpSet']
          @PrivateIpSet = params['PrivateIpSet']
          @ModuleSet = params['ModuleSet']
          @UsedNodes = params['UsedNodes']
          @ExtendPoints = params['ExtendPoints']
          @PackageBandwidth = params['PackageBandwidth']
          @PackageNode = params['PackageNode']
          @LogDeliveryArgs = params['LogDeliveryArgs']
        end
      end

      # SearchAuditLog请求参数结构体
      class SearchAuditLogRequest < TencentCloud::Common::AbstractModel
        # @param StartTime: 开始时间,不得早于当前时间的180天前
        # @type StartTime: String
        # @param EndTime: 结束时间
        # @type EndTime: String
        # @param Offset: 偏移量
        # @type Offset: Integer
        # @param Limit: 每页容量,默认为20,最大200
        # @type Limit: Integer

        attr_accessor :StartTime, :EndTime, :Offset, :Limit

        def initialize(starttime=nil, endtime=nil, offset=nil, limit=nil)
          @StartTime = starttime
          @EndTime = endtime
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # SearchAuditLog返回参数结构体
      class SearchAuditLogResponse < TencentCloud::Common::AbstractModel
        # @param AuditLogSet: 审计日志
        # @type AuditLogSet: Array
        # @param TotalCount: 日志总数量
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :AuditLogSet, :TotalCount, :RequestId

        def initialize(auditlogset=nil, totalcount=nil, requestid=nil)
          @AuditLogSet = auditlogset
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['AuditLogSet'].nil?
            @AuditLogSet = []
            params['AuditLogSet'].each do |i|
              auditlogresult_tmp = AuditLogResult.new
              auditlogresult_tmp.deserialize(i)
              @AuditLogSet << auditlogresult_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # SearchCommandBySid请求参数结构体
      class SearchCommandBySidRequest < TencentCloud::Common::AbstractModel
        # @param Sid: 会话Id
        # @type Sid: String
        # @param Cmd: 命令,可模糊搜索
        # @type Cmd: String
        # @param Encoding: Cmd字段是前端传值是否进行base64.
        # 0:否,1:是
        # @type Encoding: Integer
        # @param Offset: 偏移量
        # @type Offset: Integer
        # @param Limit: 每页容量,默认20,最大200
        # @type Limit: Integer
        # @param AuditAction: 根据拦截状态进行过滤
        # @type AuditAction: Array

        attr_accessor :Sid, :Cmd, :Encoding, :Offset, :Limit, :AuditAction

        def initialize(sid=nil, cmd=nil, encoding=nil, offset=nil, limit=nil, auditaction=nil)
          @Sid = sid
          @Cmd = cmd
          @Encoding = encoding
          @Offset = offset
          @Limit = limit
          @AuditAction = auditaction
        end

        def deserialize(params)
          @Sid = params['Sid']
          @Cmd = params['Cmd']
          @Encoding = params['Encoding']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @AuditAction = params['AuditAction']
        end
      end

      # SearchCommandBySid返回参数结构体
      class SearchCommandBySidResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 总记录数
        # @type TotalCount: Integer
        # @param CommandSet: 命令列表
        # @type CommandSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :CommandSet, :RequestId

        def initialize(totalcount=nil, commandset=nil, requestid=nil)
          @TotalCount = totalcount
          @CommandSet = commandset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['CommandSet'].nil?
            @CommandSet = []
            params['CommandSet'].each do |i|
              command_tmp = Command.new
              command_tmp.deserialize(i)
              @CommandSet << command_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # SearchCommand请求参数结构体
      class SearchCommandRequest < TencentCloud::Common::AbstractModel
        # @param StartTime: 搜索区间的开始时间
        # @type StartTime: String
        # @param EndTime: 搜索区间的结束时间,不填默认为开始时间到现在为止
        # @type EndTime: String
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 姓名
        # @type RealName: String
        # @param InstanceId: 资产实例ID
        # @type InstanceId: String
        # @param DeviceName: 资产名称
        # @type DeviceName: String
        # @param PublicIp: 资产的公网IP
        # @type PublicIp: String
        # @param PrivateIp: 资产的内网IP
        # @type PrivateIp: String
        # @param Cmd: 执行的命令
        # @type Cmd: String
        # @param Encoding: Cmd字段是前端传值是否进行base64.
        # 0:否,1:是
        # @type Encoding: Integer
        # @param AuditAction: 根据拦截状态进行过滤:1 - 已执行,2 - 被阻断
        # @type AuditAction: Array
        # @param Limit: 每页容量,默认20,最大200
        # @type Limit: Integer
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer

        attr_accessor :StartTime, :EndTime, :UserName, :RealName, :InstanceId, :DeviceName, :PublicIp, :PrivateIp, :Cmd, :Encoding, :AuditAction, :Limit, :Offset

        def initialize(starttime=nil, endtime=nil, username=nil, realname=nil, instanceid=nil, devicename=nil, publicip=nil, privateip=nil, cmd=nil, encoding=nil, auditaction=nil, limit=nil, offset=nil)
          @StartTime = starttime
          @EndTime = endtime
          @UserName = username
          @RealName = realname
          @InstanceId = instanceid
          @DeviceName = devicename
          @PublicIp = publicip
          @PrivateIp = privateip
          @Cmd = cmd
          @Encoding = encoding
          @AuditAction = auditaction
          @Limit = limit
          @Offset = offset
        end

        def deserialize(params)
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @UserName = params['UserName']
          @RealName = params['RealName']
          @InstanceId = params['InstanceId']
          @DeviceName = params['DeviceName']
          @PublicIp = params['PublicIp']
          @PrivateIp = params['PrivateIp']
          @Cmd = params['Cmd']
          @Encoding = params['Encoding']
          @AuditAction = params['AuditAction']
          @Limit = params['Limit']
          @Offset = params['Offset']
        end
      end

      # SearchCommand返回参数结构体
      class SearchCommandResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 总记录数
        # @type TotalCount: Integer
        # @param Commands: 命令列表
        # @type Commands: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :Commands, :RequestId

        def initialize(totalcount=nil, commands=nil, requestid=nil)
          @TotalCount = totalcount
          @Commands = commands
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['Commands'].nil?
            @Commands = []
            params['Commands'].each do |i|
              searchcommandresult_tmp = SearchCommandResult.new
              searchcommandresult_tmp.deserialize(i)
              @Commands << searchcommandresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 命令执行检索结果
      class SearchCommandResult < TencentCloud::Common::AbstractModel
        # @param Time: 命令输入的时间
        # @type Time: String
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 姓名
        # @type RealName: String
        # @param InstanceId: 资产ID
        # @type InstanceId: String
        # @param DeviceName: 资产名称
        # @type DeviceName: String
        # @param PublicIp: 资产公网IP
        # @type PublicIp: String
        # @param PrivateIp: 资产内网IP
        # @type PrivateIp: String
        # @param Cmd: 命令
        # @type Cmd: String
        # @param Action: 命令执行情况,1--允许,2--拒绝
        # @type Action: Integer
        # @param Sid: 命令所属的会话ID
        # @type Sid: String
        # @param TimeOffset: 命令执行时间相对于所属会话开始时间的偏移量,单位ms
        # @type TimeOffset: Integer
        # @param Account: 账号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Account: String
        # @param FromIp: source ip
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FromIp: String
        # @param SessionTime: 该命令所属会话的会话开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SessionTime: String
        # @param SessTime: 该命令所属会话的会话开始时间(废弃,使用SessionTime)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SessTime: String
        # @param ConfirmTime: 复核时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConfirmTime: String
        # @param UserDepartmentId: 部门id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserDepartmentId: String
        # @param UserDepartmentName: 用户部门名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserDepartmentName: String
        # @param DeviceDepartmentId: 设备部门id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceDepartmentId: String
        # @param DeviceDepartmentName: 设备部门名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceDepartmentName: String

        attr_accessor :Time, :UserName, :RealName, :InstanceId, :DeviceName, :PublicIp, :PrivateIp, :Cmd, :Action, :Sid, :TimeOffset, :Account, :FromIp, :SessionTime, :SessTime, :ConfirmTime, :UserDepartmentId, :UserDepartmentName, :DeviceDepartmentId, :DeviceDepartmentName
        extend Gem::Deprecate
        deprecate :SessTime, :none, 2023, 11
        deprecate :SessTime=, :none, 2023, 11

        def initialize(time=nil, username=nil, realname=nil, instanceid=nil, devicename=nil, publicip=nil, privateip=nil, cmd=nil, action=nil, sid=nil, timeoffset=nil, account=nil, fromip=nil, sessiontime=nil, sesstime=nil, confirmtime=nil, userdepartmentid=nil, userdepartmentname=nil, devicedepartmentid=nil, devicedepartmentname=nil)
          @Time = time
          @UserName = username
          @RealName = realname
          @InstanceId = instanceid
          @DeviceName = devicename
          @PublicIp = publicip
          @PrivateIp = privateip
          @Cmd = cmd
          @Action = action
          @Sid = sid
          @TimeOffset = timeoffset
          @Account = account
          @FromIp = fromip
          @SessionTime = sessiontime
          @SessTime = sesstime
          @ConfirmTime = confirmtime
          @UserDepartmentId = userdepartmentid
          @UserDepartmentName = userdepartmentname
          @DeviceDepartmentId = devicedepartmentid
          @DeviceDepartmentName = devicedepartmentname
        end

        def deserialize(params)
          @Time = params['Time']
          @UserName = params['UserName']
          @RealName = params['RealName']
          @InstanceId = params['InstanceId']
          @DeviceName = params['DeviceName']
          @PublicIp = params['PublicIp']
          @PrivateIp = params['PrivateIp']
          @Cmd = params['Cmd']
          @Action = params['Action']
          @Sid = params['Sid']
          @TimeOffset = params['TimeOffset']
          @Account = params['Account']
          @FromIp = params['FromIp']
          @SessionTime = params['SessionTime']
          @SessTime = params['SessTime']
          @ConfirmTime = params['ConfirmTime']
          @UserDepartmentId = params['UserDepartmentId']
          @UserDepartmentName = params['UserDepartmentName']
          @DeviceDepartmentId = params['DeviceDepartmentId']
          @DeviceDepartmentName = params['DeviceDepartmentName']
        end
      end

      # SearchFileBySid请求参数结构体
      class SearchFileBySidRequest < TencentCloud::Common::AbstractModel
        # @param Sid: 若入参为Id,则其他入参字段不作为搜索依据,仅按照Id来搜索会话
        # @type Sid: String
        # @param AuditLog: 是否创建审计日志,通过查看按钮调用时为true,其他为false
        # @type AuditLog: Boolean
        # @param Limit: 分页的页内记录数,默认为20,最大200
        # @type Limit: Integer
        # @param FileName: 可填写路径名或文件名
        # @type FileName: String
        # @param Offset: 分页用偏移量
        # @type Offset: Integer
        # @param AuditAction: 1-已执行,  2-被阻断
        # @type AuditAction: Integer
        # @param TypeFilters: 以Protocol和Method为条件查询
        # @type TypeFilters: Array

        attr_accessor :Sid, :AuditLog, :Limit, :FileName, :Offset, :AuditAction, :TypeFilters

        def initialize(sid=nil, auditlog=nil, limit=nil, filename=nil, offset=nil, auditaction=nil, typefilters=nil)
          @Sid = sid
          @AuditLog = auditlog
          @Limit = limit
          @FileName = filename
          @Offset = offset
          @AuditAction = auditaction
          @TypeFilters = typefilters
        end

        def deserialize(params)
          @Sid = params['Sid']
          @AuditLog = params['AuditLog']
          @Limit = params['Limit']
          @FileName = params['FileName']
          @Offset = params['Offset']
          @AuditAction = params['AuditAction']
          unless params['TypeFilters'].nil?
            @TypeFilters = []
            params['TypeFilters'].each do |i|
              searchfiletypefilter_tmp = SearchFileTypeFilter.new
              searchfiletypefilter_tmp.deserialize(i)
              @TypeFilters << searchfiletypefilter_tmp
            end
          end
        end
      end

      # SearchFileBySid返回参数结构体
      class SearchFileBySidResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 记录数
        # @type TotalCount: Integer
        # @param SearchFileBySidResult: 某会话的文件操作列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SearchFileBySidResult: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :SearchFileBySidResult, :RequestId

        def initialize(totalcount=nil, searchfilebysidresult=nil, requestid=nil)
          @TotalCount = totalcount
          @SearchFileBySidResult = searchfilebysidresult
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['SearchFileBySidResult'].nil?
            @SearchFileBySidResult = []
            params['SearchFileBySidResult'].each do |i|
              searchfilebysidresult_tmp = SearchFileBySidResult.new
              searchfilebysidresult_tmp.deserialize(i)
              @SearchFileBySidResult << searchfilebysidresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 文件操作搜索结果
      class SearchFileBySidResult < TencentCloud::Common::AbstractModel
        # @param Time: 文件操作时间
        # @type Time: String
        # @param Method: 1-上传文件 2-下载文件 3-删除文件 4-移动文件 5-重命名文件 6-新建文件夹 7-移动文件夹 8-重命名文件夹 9-删除文件夹
        # @type Method: Integer
        # @param Protocol: 文件传输协议
        # @type Protocol: String
        # @param FileCurr: method为上传、下载、删除时文件在服务器上的位置, 或重命名、移动文件前文件的位置
        # @type FileCurr: String
        # @param FileNew: method为重命名、移动文件时代表移动后的新位置.其他情况为null
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FileNew: String
        # @param Size: method为上传文件、下载文件、删除文件时显示文件大小。其他情况为null
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Size: Integer
        # @param Action: 堡垒机拦截情况, 1-已执行,  2-被阻断
        # @type Action: Integer

        attr_accessor :Time, :Method, :Protocol, :FileCurr, :FileNew, :Size, :Action

        def initialize(time=nil, method=nil, protocol=nil, filecurr=nil, filenew=nil, size=nil, action=nil)
          @Time = time
          @Method = method
          @Protocol = protocol
          @FileCurr = filecurr
          @FileNew = filenew
          @Size = size
          @Action = action
        end

        def deserialize(params)
          @Time = params['Time']
          @Method = params['Method']
          @Protocol = params['Protocol']
          @FileCurr = params['FileCurr']
          @FileNew = params['FileNew']
          @Size = params['Size']
          @Action = params['Action']
        end
      end

      # SearchFile请求参数结构体
      class SearchFileRequest < TencentCloud::Common::AbstractModel
        # @param StartTime: 查询开始时间
        # @type StartTime: String
        # @param EndTime: 查询结束时间
        # @type EndTime: String
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 姓名
        # @type RealName: String
        # @param InstanceId: 资产ID
        # @type InstanceId: String
        # @param DeviceName: 资产名称
        # @type DeviceName: String
        # @param PublicIp: 资产公网IP
        # @type PublicIp: String
        # @param PrivateIp: 资产内网IP
        # @type PrivateIp: String
        # @param Method: 操作类型:1 - 文件上传,2 - 文件下载,3 - 文件删除,4 - 文件(夹)移动,5 - 文件(夹)重命名,6 - 新建文件夹,9 - 删除文件夹
        # @type Method: Array
        # @param FileName: 可填写路径名或文件(夹)名
        # @type FileName: String
        # @param AuditAction: 1-已执行,  2-被阻断
        # @type AuditAction: Array
        # @param Limit: 分页的页内记录数,默认为20,最大200
        # @type Limit: Integer
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer

        attr_accessor :StartTime, :EndTime, :UserName, :RealName, :InstanceId, :DeviceName, :PublicIp, :PrivateIp, :Method, :FileName, :AuditAction, :Limit, :Offset

        def initialize(starttime=nil, endtime=nil, username=nil, realname=nil, instanceid=nil, devicename=nil, publicip=nil, privateip=nil, method=nil, filename=nil, auditaction=nil, limit=nil, offset=nil)
          @StartTime = starttime
          @EndTime = endtime
          @UserName = username
          @RealName = realname
          @InstanceId = instanceid
          @DeviceName = devicename
          @PublicIp = publicip
          @PrivateIp = privateip
          @Method = method
          @FileName = filename
          @AuditAction = auditaction
          @Limit = limit
          @Offset = offset
        end

        def deserialize(params)
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @UserName = params['UserName']
          @RealName = params['RealName']
          @InstanceId = params['InstanceId']
          @DeviceName = params['DeviceName']
          @PublicIp = params['PublicIp']
          @PrivateIp = params['PrivateIp']
          @Method = params['Method']
          @FileName = params['FileName']
          @AuditAction = params['AuditAction']
          @Limit = params['Limit']
          @Offset = params['Offset']
        end
      end

      # SearchFile返回参数结构体
      class SearchFileResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 记录数
        # @type TotalCount: Integer
        # @param Files: 文件操作列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Files: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :Files, :RequestId

        def initialize(totalcount=nil, files=nil, requestid=nil)
          @TotalCount = totalcount
          @Files = files
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['Files'].nil?
            @Files = []
            params['Files'].each do |i|
              searchfileresult_tmp = SearchFileResult.new
              searchfileresult_tmp.deserialize(i)
              @Files << searchfileresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 文件传输检索结果
      class SearchFileResult < TencentCloud::Common::AbstractModel
        # @param Time: 文件传输的时间
        # @type Time: String
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 姓名
        # @type RealName: String
        # @param InstanceId: 资产ID
        # @type InstanceId: String
        # @param DeviceName: 资产名称
        # @type DeviceName: String
        # @param PublicIp: 资产公网IP
        # @type PublicIp: String
        # @param PrivateIp: 资产内网IP
        # @type PrivateIp: String
        # @param Action: 操作结果:1 - 已执行,2 - 已阻断
        # @type Action: Integer
        # @param Method: 操作类型:1 - 文件上传,2 - 文件下载,3 - 文件删除,4 - 文件(夹)移动,5 - 文件(夹)重命名,6 - 新建文件夹,9 - 删除文件夹
        # @type Method: Integer
        # @param FileCurr: 下载的文件(夹)路径及名称
        # @type FileCurr: String
        # @param FileNew: 上传或新建文件(夹)路径及名称
        # @type FileNew: String

        attr_accessor :Time, :UserName, :RealName, :InstanceId, :DeviceName, :PublicIp, :PrivateIp, :Action, :Method, :FileCurr, :FileNew

        def initialize(time=nil, username=nil, realname=nil, instanceid=nil, devicename=nil, publicip=nil, privateip=nil, action=nil, method=nil, filecurr=nil, filenew=nil)
          @Time = time
          @UserName = username
          @RealName = realname
          @InstanceId = instanceid
          @DeviceName = devicename
          @PublicIp = publicip
          @PrivateIp = privateip
          @Action = action
          @Method = method
          @FileCurr = filecurr
          @FileNew = filenew
        end

        def deserialize(params)
          @Time = params['Time']
          @UserName = params['UserName']
          @RealName = params['RealName']
          @InstanceId = params['InstanceId']
          @DeviceName = params['DeviceName']
          @PublicIp = params['PublicIp']
          @PrivateIp = params['PrivateIp']
          @Action = params['Action']
          @Method = params['Method']
          @FileCurr = params['FileCurr']
          @FileNew = params['FileNew']
        end
      end

      # 用于搜索文件传输记录等日志时按照protocol和method进行过滤
      class SearchFileTypeFilter < TencentCloud::Common::AbstractModel
        # @param Protocol: 需要查询的文件传输类型,如SFTP/CLIP/RDP/RZSZ
        # @type Protocol: String
        # @param Method: 在当前指定的protocol下进一步过滤具体操作类型,如剪贴板文件上传,剪贴板文件下载等
        # @type Method: Array

        attr_accessor :Protocol, :Method

        def initialize(protocol=nil, method=nil)
          @Protocol = protocol
          @Method = method
        end

        def deserialize(params)
          @Protocol = params['Protocol']
          @Method = params['Method']
        end
      end

      # SearchSessionCommand请求参数结构体
      class SearchSessionCommandRequest < TencentCloud::Common::AbstractModel
        # @param Cmd: 检索的目标命令,为模糊搜索
        # @type Cmd: String
        # @param StartTime: 开始时间,不得早于当前时间的180天前
        # @type StartTime: String
        # @param Offset: 分页偏移位置,默认值为0
        # @type Offset: Integer
        # @param Limit: 默认值为20,最大200
        # @type Limit: Integer
        # @param Encoding: Cmd字段前端是否做base64加密
        # 0:否,1:是
        # @type Encoding: Integer
        # @param EndTime: 结束时间
        # @type EndTime: String

        attr_accessor :Cmd, :StartTime, :Offset, :Limit, :Encoding, :EndTime

        def initialize(cmd=nil, starttime=nil, offset=nil, limit=nil, encoding=nil, endtime=nil)
          @Cmd = cmd
          @StartTime = starttime
          @Offset = offset
          @Limit = limit
          @Encoding = encoding
          @EndTime = endtime
        end

        def deserialize(params)
          @Cmd = params['Cmd']
          @StartTime = params['StartTime']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @Encoding = params['Encoding']
          @EndTime = params['EndTime']
        end
      end

      # SearchSessionCommand返回参数结构体
      class SearchSessionCommandResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 记录总数
        # @type TotalCount: Integer
        # @param CommandSessionSet: 命令和所属会话
        # @type CommandSessionSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :CommandSessionSet, :RequestId

        def initialize(totalcount=nil, commandsessionset=nil, requestid=nil)
          @TotalCount = totalcount
          @CommandSessionSet = commandsessionset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['CommandSessionSet'].nil?
            @CommandSessionSet = []
            params['CommandSessionSet'].each do |i|
              sessioncommand_tmp = SessionCommand.new
              sessioncommand_tmp.deserialize(i)
              @CommandSessionSet << sessioncommand_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # SearchSession请求参数结构体
      class SearchSessionRequest < TencentCloud::Common::AbstractModel
        # @param PrivateIp: 内部Ip
        # @type PrivateIp: String
        # @param PublicIp: 外部Ip
        # @type PublicIp: String
        # @param UserName: 用户名,长度不超过20
        # @type UserName: String
        # @param Account: 账号,长度不超过64
        # @type Account: String
        # @param FromIp: 来源Ip
        # @type FromIp: String
        # @param StartTime: 搜索区间的开始时间。若入参是Id,则非必传,否则为必传。
        # @type StartTime: String
        # @param EndTime: 搜索区间的结束时间
        # @type EndTime: String
        # @param Kind: 会话协议类型,只能是1、2、3或4 对应关系为1-tui 2-gui 3-file 4-数据库。若入参是Id,则非必传,否则为必传。
        # @type Kind: Integer
        # @param Offset: 偏移量
        # @type Offset: Integer
        # @param Limit: 分页的页内记录数,默认为20,最大200
        # @type Limit: Integer
        # @param RealName: 姓名,长度不超过20
        # @type RealName: String
        # @param DeviceName: 主机名,长度不超过64
        # @type DeviceName: String
        # @param Status: 状态,1为活跃,2为结束,3为强制离线,4为其他错误
        # @type Status: Integer
        # @param Id: 若入参为Id,则其他入参字段不作为搜索依据,仅按照Id来搜索会话
        # @type Id: String

        attr_accessor :PrivateIp, :PublicIp, :UserName, :Account, :FromIp, :StartTime, :EndTime, :Kind, :Offset, :Limit, :RealName, :DeviceName, :Status, :Id

        def initialize(privateip=nil, publicip=nil, username=nil, account=nil, fromip=nil, starttime=nil, endtime=nil, kind=nil, offset=nil, limit=nil, realname=nil, devicename=nil, status=nil, id=nil)
          @PrivateIp = privateip
          @PublicIp = publicip
          @UserName = username
          @Account = account
          @FromIp = fromip
          @StartTime = starttime
          @EndTime = endtime
          @Kind = kind
          @Offset = offset
          @Limit = limit
          @RealName = realname
          @DeviceName = devicename
          @Status = status
          @Id = id
        end

        def deserialize(params)
          @PrivateIp = params['PrivateIp']
          @PublicIp = params['PublicIp']
          @UserName = params['UserName']
          @Account = params['Account']
          @FromIp = params['FromIp']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Kind = params['Kind']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @RealName = params['RealName']
          @DeviceName = params['DeviceName']
          @Status = params['Status']
          @Id = params['Id']
        end
      end

      # SearchSession返回参数结构体
      class SearchSessionResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 记录数
        # @type TotalCount: Integer
        # @param SessionSet: 会话信息列表
        # @type SessionSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :SessionSet, :RequestId

        def initialize(totalcount=nil, sessionset=nil, requestid=nil)
          @TotalCount = totalcount
          @SessionSet = sessionset
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['SessionSet'].nil?
            @SessionSet = []
            params['SessionSet'].each do |i|
              sessionresult_tmp = SessionResult.new
              sessionresult_tmp.deserialize(i)
              @SessionSet << sessionresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 命令和所属会话
      class SessionCommand < TencentCloud::Common::AbstractModel
        # @param StartTime: 开始时间
        # @type StartTime: String
        # @param EndTime: 结束时间
        # @type EndTime: String
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 账号
        # @type RealName: String
        # @param DeviceName: 设备名
        # @type DeviceName: String
        # @param PrivateIp: 内部Ip
        # @type PrivateIp: String
        # @param PublicIp: 外部Ip
        # @type PublicIp: String
        # @param Commands: 命令列表
        # @type Commands: Array
        # @param Count: 记录数
        # @type Count: Integer
        # @param Id: 会话Id
        # @type Id: String
        # @param InstanceId: 设备id
        # @type InstanceId: String
        # @param ApCode: 设备所属的地域
        # @type ApCode: String

        attr_accessor :StartTime, :EndTime, :UserName, :RealName, :DeviceName, :PrivateIp, :PublicIp, :Commands, :Count, :Id, :InstanceId, :ApCode

        def initialize(starttime=nil, endtime=nil, username=nil, realname=nil, devicename=nil, privateip=nil, publicip=nil, commands=nil, count=nil, id=nil, instanceid=nil, apcode=nil)
          @StartTime = starttime
          @EndTime = endtime
          @UserName = username
          @RealName = realname
          @DeviceName = devicename
          @PrivateIp = privateip
          @PublicIp = publicip
          @Commands = commands
          @Count = count
          @Id = id
          @InstanceId = instanceid
          @ApCode = apcode
        end

        def deserialize(params)
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @UserName = params['UserName']
          @RealName = params['RealName']
          @DeviceName = params['DeviceName']
          @PrivateIp = params['PrivateIp']
          @PublicIp = params['PublicIp']
          unless params['Commands'].nil?
            @Commands = []
            params['Commands'].each do |i|
              command_tmp = Command.new
              command_tmp.deserialize(i)
              @Commands << command_tmp
            end
          end
          @Count = params['Count']
          @Id = params['Id']
          @InstanceId = params['InstanceId']
          @ApCode = params['ApCode']
        end
      end

      # 搜索字符或图形会话时返回的SessionResul结构体
      class SessionResult < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名
        # @type UserName: String
        # @param RealName: 姓名
        # @type RealName: String
        # @param Account: 主机账号
        # @type Account: String
        # @param StartTime: 开始时间
        # @type StartTime: String
        # @param EndTime: 结束时间
        # @type EndTime: String
        # @param Size: 会话大小
        # @type Size: Integer
        # @param InstanceId: 设备ID
        # @type InstanceId: String
        # @param DeviceName: 设备名
        # @type DeviceName: String
        # @param PrivateIp: 内部Ip
        # @type PrivateIp: String
        # @param PublicIp: 外部Ip
        # @type PublicIp: String
        # @param FromIp: 来源Ip
        # @type FromIp: String
        # @param Duration: 会话持续时长
        # @type Duration: Float
        # @param Count: 该会话内命令数量 ,搜索图形会话时该字段无意义
        # @type Count: Integer
        # @param DangerCount: 该会话内高危命令数,搜索图形时该字段无意义
        # @type DangerCount: Integer
        # @param Status: 会话状态,如1会话活跃  2会话结束  3强制离线  4其他错误
        # @type Status: Integer
        # @param Id: 会话Id
        # @type Id: String
        # @param ApCode: 设备所属的地域
        # @type ApCode: String
        # @param Protocol: 会话协议
        # @type Protocol: String

        attr_accessor :UserName, :RealName, :Account, :StartTime, :EndTime, :Size, :InstanceId, :DeviceName, :PrivateIp, :PublicIp, :FromIp, :Duration, :Count, :DangerCount, :Status, :Id, :ApCode, :Protocol

        def initialize(username=nil, realname=nil, account=nil, starttime=nil, endtime=nil, size=nil, instanceid=nil, devicename=nil, privateip=nil, publicip=nil, fromip=nil, duration=nil, count=nil, dangercount=nil, status=nil, id=nil, apcode=nil, protocol=nil)
          @UserName = username
          @RealName = realname
          @Account = account
          @StartTime = starttime
          @EndTime = endtime
          @Size = size
          @InstanceId = instanceid
          @DeviceName = devicename
          @PrivateIp = privateip
          @PublicIp = publicip
          @FromIp = fromip
          @Duration = duration
          @Count = count
          @DangerCount = dangercount
          @Status = status
          @Id = id
          @ApCode = apcode
          @Protocol = protocol
        end

        def deserialize(params)
          @UserName = params['UserName']
          @RealName = params['RealName']
          @Account = params['Account']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Size = params['Size']
          @InstanceId = params['InstanceId']
          @DeviceName = params['DeviceName']
          @PrivateIp = params['PrivateIp']
          @PublicIp = params['PublicIp']
          @FromIp = params['FromIp']
          @Duration = params['Duration']
          @Count = params['Count']
          @DangerCount = params['DangerCount']
          @Status = params['Status']
          @Id = params['Id']
          @ApCode = params['ApCode']
          @Protocol = params['Protocol']
        end
      end

      # 资产标签
      class TagFilter < TencentCloud::Common::AbstractModel
        # @param TagKey: 标签键
        # @type TagKey: String
        # @param TagValue: 标签值
        # @type TagValue: Array

        attr_accessor :TagKey, :TagValue

        def initialize(tagkey=nil, tagvalue=nil)
          @TagKey = tagkey
          @TagValue = tagvalue
        end

        def deserialize(params)
          @TagKey = params['TagKey']
          @TagValue = params['TagValue']
        end
      end

      # 用户信息
      class User < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名, 3-20个字符 必须以英文字母开头,且不能包含字母、数字、.、_、-以外的字符
        # @type UserName: String
        # @param RealName: 用户姓名, 最大20个字符,不能包含空白字符
        # @type RealName: String
        # @param Id: 用户ID
        # @type Id: Integer
        # @param Phone: 手机号码, 大陆手机号直接填写,如果是其他国家、地区号码,按照"国家地区代码|手机号"的格式输入。如: "+852|xxxxxxxx"
        # @type Phone: String
        # @param Email: 电子邮件
        # @type Email: String
        # @param ValidateFrom: 用户生效时间,如:"2021-09-22T00:00:00+00:00"
        # 生效、失效时间不填则用户长期有效
        # @type ValidateFrom: String
        # @param ValidateTo: 用户失效时间,如:"2021-09-22T00:00:00+00:00"
        # 生效、失效时间不填则用户长期有效
        # @type ValidateTo: String
        # @param GroupSet: 所属用户组列表
        # @type GroupSet: Array
        # @param AuthType: 认证方式,0 - 本地,1 - LDAP,2 - OAuth
        # @type AuthType: Integer
        # @param ValidateTime: 访问时间段限制, 由0、1组成的字符串,长度168(7 × 24),代表该用户在一周中允许访问的时间段。字符串中第N个字符代表在一周中的第N个小时, 0 - 代表不允许访问,1 - 代表允许访问
        # @type ValidateTime: String
        # @param Department: 用户所属部门(用于出参)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Department: :class:`Tencentcloud::Dasb.v20191018.models.Department`
        # @param DepartmentId: 用户所属部门(用于入参)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DepartmentId: String
        # @param ActiveStatus: 激活状态 0 - 未激活 1 - 激活
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ActiveStatus: Integer
        # @param LockStatus: 锁定状态 0 - 未锁定 1 - 锁定
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LockStatus: Integer
        # @param Status: 状态 与Filter中一致
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: String

        attr_accessor :UserName, :RealName, :Id, :Phone, :Email, :ValidateFrom, :ValidateTo, :GroupSet, :AuthType, :ValidateTime, :Department, :DepartmentId, :ActiveStatus, :LockStatus, :Status

        def initialize(username=nil, realname=nil, id=nil, phone=nil, email=nil, validatefrom=nil, validateto=nil, groupset=nil, authtype=nil, validatetime=nil, department=nil, departmentid=nil, activestatus=nil, lockstatus=nil, status=nil)
          @UserName = username
          @RealName = realname
          @Id = id
          @Phone = phone
          @Email = email
          @ValidateFrom = validatefrom
          @ValidateTo = validateto
          @GroupSet = groupset
          @AuthType = authtype
          @ValidateTime = validatetime
          @Department = department
          @DepartmentId = departmentid
          @ActiveStatus = activestatus
          @LockStatus = lockstatus
          @Status = status
        end

        def deserialize(params)
          @UserName = params['UserName']
          @RealName = params['RealName']
          @Id = params['Id']
          @Phone = params['Phone']
          @Email = params['Email']
          @ValidateFrom = params['ValidateFrom']
          @ValidateTo = params['ValidateTo']
          unless params['GroupSet'].nil?
            @GroupSet = []
            params['GroupSet'].each do |i|
              group_tmp = Group.new
              group_tmp.deserialize(i)
              @GroupSet << group_tmp
            end
          end
          @AuthType = params['AuthType']
          @ValidateTime = params['ValidateTime']
          unless params['Department'].nil?
            @Department = Department.new
            @Department.deserialize(params['Department'])
          end
          @DepartmentId = params['DepartmentId']
          @ActiveStatus = params['ActiveStatus']
          @LockStatus = params['LockStatus']
          @Status = params['Status']
        end
      end

    end
  end
end