# 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 Trro
    module V20220325
      # BatchDeleteDevices请求参数结构体
      class BatchDeleteDevicesRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 目标删除设备所属项目ID
        # @type ProjectId: String
        # @param DeviceIds: 目标删除设备的设备ID数组
        # @type DeviceIds: Array

        attr_accessor :ProjectId, :DeviceIds

        def initialize(projectid=nil, deviceids=nil)
          @ProjectId = projectid
          @DeviceIds = deviceids
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @DeviceIds = params['DeviceIds']
        end
      end

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

        attr_accessor :FailedDeviceIds, :RequestId

        def initialize(faileddeviceids=nil, requestid=nil)
          @FailedDeviceIds = faileddeviceids
          @RequestId = requestid
        end

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

      # BatchDeletePolicy请求参数结构体
      class BatchDeletePolicyRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 删除权限配置的项目ID
        # @type ProjectId: String
        # @param RemoteDeviceIds: 删除权限配置的远端设备ID列表
        # @type RemoteDeviceIds: Array
        # @param PolicyMode: 删除权限配置的权限模式, black为黑名单,white为白名单
        # @type PolicyMode: String

        attr_accessor :ProjectId, :RemoteDeviceIds, :PolicyMode

        def initialize(projectid=nil, remotedeviceids=nil, policymode=nil)
          @ProjectId = projectid
          @RemoteDeviceIds = remotedeviceids
          @PolicyMode = policymode
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @RemoteDeviceIds = params['RemoteDeviceIds']
          @PolicyMode = params['PolicyMode']
        end
      end

      # BatchDeletePolicy返回参数结构体
      class BatchDeletePolicyResponse < TencentCloud::Common::AbstractModel
        # @param FailedRemoteDeviceIds: 删除权限配置失败的远端设备ID列表
        # @type FailedRemoteDeviceIds: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FailedRemoteDeviceIds, :RequestId

        def initialize(failedremotedeviceids=nil, requestid=nil)
          @FailedRemoteDeviceIds = failedremotedeviceids
          @RequestId = requestid
        end

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

      # BoundLicenses请求参数结构体
      class BoundLicensesRequest < TencentCloud::Common::AbstractModel
        # @param Count: license数量
        # @type Count: Integer
        # @param DeviceId: 设备id
        # @type DeviceId: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String

        attr_accessor :Count, :DeviceId, :ProjectId

        def initialize(count=nil, deviceid=nil, projectid=nil)
          @Count = count
          @DeviceId = deviceid
          @ProjectId = projectid
        end

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

      # BoundLicenses返回参数结构体
      class BoundLicensesResponse < 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

      # CreateDevice请求参数结构体
      class CreateDeviceRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 创建设备所归属的项目ID
        # @type ProjectId: String
        # @param DeviceId: 创建设备ID,项目内需要唯一,由小写英文字母、数字和下划线构成,长度不超过18
        # @type DeviceId: String
        # @param DeviceName: 创建设备名称,长度小于24, 可包含中文、数字、英文字母和下划线
        # @type DeviceName: String
        # @param DeviceType: 设备类型,field为现场设备(受控设备),remote为远端设备(操控设备),不填默认为field
        # @type DeviceType: String
        # @param DeviceToken: 设备认证口令,由大小写英文字母和数字构成,须为16位
        # @type DeviceToken: String

        attr_accessor :ProjectId, :DeviceId, :DeviceName, :DeviceType, :DeviceToken

        def initialize(projectid=nil, deviceid=nil, devicename=nil, devicetype=nil, devicetoken=nil)
          @ProjectId = projectid
          @DeviceId = deviceid
          @DeviceName = devicename
          @DeviceType = devicetype
          @DeviceToken = devicetoken
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @DeviceId = params['DeviceId']
          @DeviceName = params['DeviceName']
          @DeviceType = params['DeviceType']
          @DeviceToken = params['DeviceToken']
        end
      end

      # CreateDevice返回参数结构体
      class CreateDeviceResponse < 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

      # CreateProject请求参数结构体
      class CreateProjectRequest < TencentCloud::Common::AbstractModel
        # @param ProjectName: 项目名称,长度不超过24个字符
        # @type ProjectName: String
        # @param ProjectDescription: 项目描述,长度不超过120个字符,不填默认为空
        # @type ProjectDescription: String
        # @param PolicyMode: 权限模式,black为黑名单,white为白名单,不填默认为black
        # @type PolicyMode: String

        attr_accessor :ProjectName, :ProjectDescription, :PolicyMode

        def initialize(projectname=nil, projectdescription=nil, policymode=nil)
          @ProjectName = projectname
          @ProjectDescription = projectdescription
          @PolicyMode = policymode
        end

        def deserialize(params)
          @ProjectName = params['ProjectName']
          @ProjectDescription = params['ProjectDescription']
          @PolicyMode = params['PolicyMode']
        end
      end

      # CreateProject返回参数结构体
      class CreateProjectResponse < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID,长度为16位
        # @type ProjectId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ProjectId, :RequestId

        def initialize(projectid=nil, requestid=nil)
          @ProjectId = projectid
          @RequestId = requestid
        end

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

      # DeleteProject请求参数结构体
      class DeleteProjectRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String

        attr_accessor :ProjectId

        def initialize(projectid=nil)
          @ProjectId = projectid
        end

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

      # DeleteProject返回参数结构体
      class DeleteProjectResponse < 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

      # DescribeDeviceInfo请求参数结构体
      class DescribeDeviceInfoRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 目标设备所属项目ID
        # @type ProjectId: String
        # @param DeviceId: 目标设备ID
        # @type DeviceId: String

        attr_accessor :ProjectId, :DeviceId

        def initialize(projectid=nil, deviceid=nil)
          @ProjectId = projectid
          @DeviceId = deviceid
        end

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

      # DescribeDeviceInfo返回参数结构体
      class DescribeDeviceInfoResponse < TencentCloud::Common::AbstractModel
        # @param DeviceName: 设备名称
        # @type DeviceName: String
        # @param DeviceType: 设备类型,field为现场设备(被控方),remote为远端设备(操控方)
        # @type DeviceType: String
        # @param DeviceStatus: 设备状态,offline为离线,ready为在线准备,connected为会话中
        # @type DeviceStatus: String
        # @param LastReportTime: 设备状态最后更新时间
        # @type LastReportTime: String
        # @param ModifyTime: 设备信息最后修改时间
        # @type ModifyTime: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :DeviceName, :DeviceType, :DeviceStatus, :LastReportTime, :ModifyTime, :RequestId

        def initialize(devicename=nil, devicetype=nil, devicestatus=nil, lastreporttime=nil, modifytime=nil, requestid=nil)
          @DeviceName = devicename
          @DeviceType = devicetype
          @DeviceStatus = devicestatus
          @LastReportTime = lastreporttime
          @ModifyTime = modifytime
          @RequestId = requestid
        end

        def deserialize(params)
          @DeviceName = params['DeviceName']
          @DeviceType = params['DeviceType']
          @DeviceStatus = params['DeviceStatus']
          @LastReportTime = params['LastReportTime']
          @ModifyTime = params['ModifyTime']
          @RequestId = params['RequestId']
        end
      end

      # DescribeDeviceList请求参数结构体
      class DescribeDeviceListRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 设备所属项目ID
        # @type ProjectId: String
        # @param DeviceType: 设备类型筛选,不填默认为全部设备类型
        # @type DeviceType: String
        # @param SearchWords: 对设备ID或Name按关键字进行模糊匹配,不填则不进行模糊匹配
        # @type SearchWords: String
        # @param PageSize: 每页返回的最大设备数,不填默认为10
        # @type PageSize: Integer
        # @param PageNumber: 当前页码,不填默认为1(首页)
        # @type PageNumber: Integer

        attr_accessor :ProjectId, :DeviceType, :SearchWords, :PageSize, :PageNumber

        def initialize(projectid=nil, devicetype=nil, searchwords=nil, pagesize=nil, pagenumber=nil)
          @ProjectId = projectid
          @DeviceType = devicetype
          @SearchWords = searchwords
          @PageSize = pagesize
          @PageNumber = pagenumber
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @DeviceType = params['DeviceType']
          @SearchWords = params['SearchWords']
          @PageSize = params['PageSize']
          @PageNumber = params['PageNumber']
        end
      end

      # DescribeDeviceList返回参数结构体
      class DescribeDeviceListResponse < TencentCloud::Common::AbstractModel
        # @param Devices: 设备信息列表
        # @type Devices: Array
        # @param Total: 设备总数
        # @type Total: Integer
        # @param Num: 本次返回的设备数
        # @type Num: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Devices, :Total, :Num, :RequestId

        def initialize(devices=nil, total=nil, num=nil, requestid=nil)
          @Devices = devices
          @Total = total
          @Num = num
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Devices'].nil?
            @Devices = []
            params['Devices'].each do |i|
              deviceinfo_tmp = DeviceInfo.new
              deviceinfo_tmp.deserialize(i)
              @Devices << deviceinfo_tmp
            end
          end
          @Total = params['Total']
          @Num = params['Num']
          @RequestId = params['RequestId']
        end
      end

      # DescribeDeviceSessionDetails请求参数结构体
      class DescribeDeviceSessionDetailsRequest < TencentCloud::Common::AbstractModel
        # @param SessionId: 会话ID
        # @type SessionId: String

        attr_accessor :SessionId

        def initialize(sessionid=nil)
          @SessionId = sessionid
        end

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

      # DescribeDeviceSessionDetails返回参数结构体
      class DescribeDeviceSessionDetailsResponse < TencentCloud::Common::AbstractModel
        # @param Details: 按设备区分的会话详细数据
        # @type Details: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Details, :RequestId

        def initialize(details=nil, requestid=nil)
          @Details = details
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Details'].nil?
            @Details = []
            params['Details'].each do |i|
              sessiondevicedetail_tmp = SessionDeviceDetail.new
              sessiondevicedetail_tmp.deserialize(i)
              @Details << sessiondevicedetail_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeDeviceSessionList请求参数结构体
      class DescribeDeviceSessionListRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param PageNumber: 页码,从1开始
        # @type PageNumber: Integer
        # @param PageSize: 每页个数
        # @type PageSize: Integer
        # @param DeviceId: 设备ID
        # @type DeviceId: String
        # @param StartTime: 开始时间
        # @type StartTime: Integer
        # @param EndTime: 结束时间
        # @type EndTime: Integer

        attr_accessor :ProjectId, :PageNumber, :PageSize, :DeviceId, :StartTime, :EndTime

        def initialize(projectid=nil, pagenumber=nil, pagesize=nil, deviceid=nil, starttime=nil, endtime=nil)
          @ProjectId = projectid
          @PageNumber = pagenumber
          @PageSize = pagesize
          @DeviceId = deviceid
          @StartTime = starttime
          @EndTime = endtime
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @PageNumber = params['PageNumber']
          @PageSize = params['PageSize']
          @DeviceId = params['DeviceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
        end
      end

      # DescribeDeviceSessionList返回参数结构体
      class DescribeDeviceSessionListResponse < TencentCloud::Common::AbstractModel
        # @param Total: 总个数
        # @type Total: Integer
        # @param DeviceSessionList: 会话列表
        # @type DeviceSessionList: Array
        # @param Num: 本页数量
        # @type Num: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :DeviceSessionList, :Num, :RequestId

        def initialize(total=nil, devicesessionlist=nil, num=nil, requestid=nil)
          @Total = total
          @DeviceSessionList = devicesessionlist
          @Num = num
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['DeviceSessionList'].nil?
            @DeviceSessionList = []
            params['DeviceSessionList'].each do |i|
              sessioninfo_tmp = SessionInfo.new
              sessioninfo_tmp.deserialize(i)
              @DeviceSessionList << sessioninfo_tmp
            end
          end
          @Num = params['Num']
          @RequestId = params['RequestId']
        end
      end

      # DescribePolicy请求参数结构体
      class DescribePolicyRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 查看权限的项目ID
        # @type ProjectId: String
        # @param PolicyMode: 查看的权限模式,black为黑名单,white为白名单,不填默认为当前项目生效的权限模式
        # @type PolicyMode: String
        # @param SearchMode: 模糊匹配模式,remoteMatch为远端设备ID匹配,fieldMatch为现场ID匹配,不填默认为remoteMatch
        # @type SearchMode: String
        # @param SearchWords: 模糊匹配关键字,不填默认不进行模糊匹配
        # @type SearchWords: String
        # @param PageSize: 每页返回的最大数量,不填默认为10
        # @type PageSize: Integer
        # @param PageNumber: 当前页码,不填默认为1(首页)
        # @type PageNumber: Integer

        attr_accessor :ProjectId, :PolicyMode, :SearchMode, :SearchWords, :PageSize, :PageNumber

        def initialize(projectid=nil, policymode=nil, searchmode=nil, searchwords=nil, pagesize=nil, pagenumber=nil)
          @ProjectId = projectid
          @PolicyMode = policymode
          @SearchMode = searchmode
          @SearchWords = searchwords
          @PageSize = pagesize
          @PageNumber = pagenumber
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @PolicyMode = params['PolicyMode']
          @SearchMode = params['SearchMode']
          @SearchWords = params['SearchWords']
          @PageSize = params['PageSize']
          @PageNumber = params['PageNumber']
        end
      end

      # DescribePolicy返回参数结构体
      class DescribePolicyResponse < TencentCloud::Common::AbstractModel
        # @param PolicyMode: 权限模式
        # @type PolicyMode: String
        # @param PolicyEnabled: 返回的权限模式是否为当前生效的权限模式
        # @type PolicyEnabled: Boolean
        # @param PolicyInfo: 权限信息列表
        # @type PolicyInfo: Array
        # @param Num: 本次返回的权限信息数量
        # @type Num: Integer
        # @param Total: 权限信息总数
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :PolicyMode, :PolicyEnabled, :PolicyInfo, :Num, :Total, :RequestId

        def initialize(policymode=nil, policyenabled=nil, policyinfo=nil, num=nil, total=nil, requestid=nil)
          @PolicyMode = policymode
          @PolicyEnabled = policyenabled
          @PolicyInfo = policyinfo
          @Num = num
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          @PolicyMode = params['PolicyMode']
          @PolicyEnabled = params['PolicyEnabled']
          unless params['PolicyInfo'].nil?
            @PolicyInfo = []
            params['PolicyInfo'].each do |i|
              policyinfo_tmp = PolicyInfo.new
              policyinfo_tmp.deserialize(i)
              @PolicyInfo << policyinfo_tmp
            end
          end
          @Num = params['Num']
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeProjectInfo请求参数结构体
      class DescribeProjectInfoRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 目标项目ID
        # @type ProjectId: String

        attr_accessor :ProjectId

        def initialize(projectid=nil)
          @ProjectId = projectid
        end

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

      # DescribeProjectInfo返回参数结构体
      class DescribeProjectInfoResponse < TencentCloud::Common::AbstractModel
        # @param ProjectName: 项目名称
        # @type ProjectName: String
        # @param ProjectDescription: 项目描述
        # @type ProjectDescription: String
        # @param PolicyMode: 项目权限模式,black为黑名单,white为白名单
        # @type PolicyMode: String
        # @param ModifyTime: 项目信息修改时间
        # @type ModifyTime: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ProjectName, :ProjectDescription, :PolicyMode, :ModifyTime, :RequestId

        def initialize(projectname=nil, projectdescription=nil, policymode=nil, modifytime=nil, requestid=nil)
          @ProjectName = projectname
          @ProjectDescription = projectdescription
          @PolicyMode = policymode
          @ModifyTime = modifytime
          @RequestId = requestid
        end

        def deserialize(params)
          @ProjectName = params['ProjectName']
          @ProjectDescription = params['ProjectDescription']
          @PolicyMode = params['PolicyMode']
          @ModifyTime = params['ModifyTime']
          @RequestId = params['RequestId']
        end
      end

      # DescribeProjectList请求参数结构体
      class DescribeProjectListRequest < TencentCloud::Common::AbstractModel
        # @param PageSize: 每页返回的最大项目数量,不填默认为10
        # @type PageSize: Integer
        # @param PageNumber: 当前页码,不填默认为1(首页)
        # @type PageNumber: Integer

        attr_accessor :PageSize, :PageNumber

        def initialize(pagesize=nil, pagenumber=nil)
          @PageSize = pagesize
          @PageNumber = pagenumber
        end

        def deserialize(params)
          @PageSize = params['PageSize']
          @PageNumber = params['PageNumber']
        end
      end

      # DescribeProjectList返回参数结构体
      class DescribeProjectListResponse < TencentCloud::Common::AbstractModel
        # @param Projects: 项目信息数组
        # @type Projects: Array
        # @param Total: 项目总数
        # @type Total: Integer
        # @param Num: 本次返回的项目数
        # @type Num: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Projects, :Total, :Num, :RequestId

        def initialize(projects=nil, total=nil, num=nil, requestid=nil)
          @Projects = projects
          @Total = total
          @Num = num
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Projects'].nil?
            @Projects = []
            params['Projects'].each do |i|
              projectinfo_tmp = ProjectInfo.new
              projectinfo_tmp.deserialize(i)
              @Projects << projectinfo_tmp
            end
          end
          @Total = params['Total']
          @Num = params['Num']
          @RequestId = params['RequestId']
        end
      end

      # DescribeRecentSessionList请求参数结构体
      class DescribeRecentSessionListRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param PageNumber: 页码,从1开始
        # @type PageNumber: Integer
        # @param PageSize: 每页个数
        # @type PageSize: Integer
        # @param DeviceId: 设备ID,支持过滤远端设备或现场设备
        # @type DeviceId: String
        # @param StartTime: 时间范围的起始时间。时间范围最大为最近两小时,若不传或超出范围,则起始时间按两小时前计算
        # @type StartTime: Integer
        # @param EndTime: 时间范围的结束时间。时间范围最大为最近两小时,若不传或超出范围,则结束时间按当前时间计算
        # @type EndTime: Integer

        attr_accessor :ProjectId, :PageNumber, :PageSize, :DeviceId, :StartTime, :EndTime

        def initialize(projectid=nil, pagenumber=nil, pagesize=nil, deviceid=nil, starttime=nil, endtime=nil)
          @ProjectId = projectid
          @PageNumber = pagenumber
          @PageSize = pagesize
          @DeviceId = deviceid
          @StartTime = starttime
          @EndTime = endtime
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @PageNumber = params['PageNumber']
          @PageSize = params['PageSize']
          @DeviceId = params['DeviceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
        end
      end

      # DescribeRecentSessionList返回参数结构体
      class DescribeRecentSessionListResponse < TencentCloud::Common::AbstractModel
        # @param Total: 总个数
        # @type Total: Integer
        # @param RecentSessionList: 会话列表
        # @type RecentSessionList: Array
        # @param Num: 本页数量
        # @type Num: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :RecentSessionList, :Num, :RequestId

        def initialize(total=nil, recentsessionlist=nil, num=nil, requestid=nil)
          @Total = total
          @RecentSessionList = recentsessionlist
          @Num = num
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['RecentSessionList'].nil?
            @RecentSessionList = []
            params['RecentSessionList'].each do |i|
              recentsessioninfo_tmp = RecentSessionInfo.new
              recentsessioninfo_tmp.deserialize(i)
              @RecentSessionList << recentsessioninfo_tmp
            end
          end
          @Num = params['Num']
          @RequestId = params['RequestId']
        end
      end

      # DescribeSessionStatisticsByInterval请求参数结构体
      class DescribeSessionStatisticsByIntervalRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param StatisticInterval: 统计时间间隔:hour|day|month
        # @type StatisticInterval: String
        # @param DeviceId: 设备ID
        # @type DeviceId: String
        # @param StartTime: 起始时间,单位:秒
        # @type StartTime: Integer
        # @param EndTime: 结束时间,单位:秒
        # @type EndTime: Integer

        attr_accessor :ProjectId, :StatisticInterval, :DeviceId, :StartTime, :EndTime

        def initialize(projectid=nil, statisticinterval=nil, deviceid=nil, starttime=nil, endtime=nil)
          @ProjectId = projectid
          @StatisticInterval = statisticinterval
          @DeviceId = deviceid
          @StartTime = starttime
          @EndTime = endtime
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @StatisticInterval = params['StatisticInterval']
          @DeviceId = params['DeviceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
        end
      end

      # DescribeSessionStatisticsByInterval返回参数结构体
      class DescribeSessionStatisticsByIntervalResponse < TencentCloud::Common::AbstractModel
        # @param SessionStatistics: 各时间段的会话统计数据
        # @type SessionStatistics: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SessionStatistics, :RequestId

        def initialize(sessionstatistics=nil, requestid=nil)
          @SessionStatistics = sessionstatistics
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['SessionStatistics'].nil?
            @SessionStatistics = []
            params['SessionStatistics'].each do |i|
              sessionintervalstatistic_tmp = SessionIntervalStatistic.new
              sessionintervalstatistic_tmp.deserialize(i)
              @SessionStatistics << sessionintervalstatistic_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeSessionStatistics请求参数结构体
      class DescribeSessionStatisticsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param DeviceId: 设备ID
        # @type DeviceId: String
        # @param StartTime: 起始时间,单位:秒
        # @type StartTime: Integer
        # @param EndTime: 结束时间,单位:秒
        # @type EndTime: Integer

        attr_accessor :ProjectId, :DeviceId, :StartTime, :EndTime

        def initialize(projectid=nil, deviceid=nil, starttime=nil, endtime=nil)
          @ProjectId = projectid
          @DeviceId = deviceid
          @StartTime = starttime
          @EndTime = endtime
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @DeviceId = params['DeviceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
        end
      end

      # DescribeSessionStatistics返回参数结构体
      class DescribeSessionStatisticsResponse < TencentCloud::Common::AbstractModel
        # @param SessionNum: 会话数量
        # @type SessionNum: Integer
        # @param TotalDuration: 通话时长,单位:分钟
        # @type TotalDuration: Integer
        # @param ActiveFieldDeviceNum: 活跃现场设备数
        # @type ActiveFieldDeviceNum: Integer
        # @param ActiveRemoteDeviceNum: 活跃远端设备数
        # @type ActiveRemoteDeviceNum: Integer
        # @param NotBadSessionRatio: 优良会话占比,单位:%
        # @type NotBadSessionRatio: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SessionNum, :TotalDuration, :ActiveFieldDeviceNum, :ActiveRemoteDeviceNum, :NotBadSessionRatio, :RequestId

        def initialize(sessionnum=nil, totalduration=nil, activefielddevicenum=nil, activeremotedevicenum=nil, notbadsessionratio=nil, requestid=nil)
          @SessionNum = sessionnum
          @TotalDuration = totalduration
          @ActiveFieldDeviceNum = activefielddevicenum
          @ActiveRemoteDeviceNum = activeremotedevicenum
          @NotBadSessionRatio = notbadsessionratio
          @RequestId = requestid
        end

        def deserialize(params)
          @SessionNum = params['SessionNum']
          @TotalDuration = params['TotalDuration']
          @ActiveFieldDeviceNum = params['ActiveFieldDeviceNum']
          @ActiveRemoteDeviceNum = params['ActiveRemoteDeviceNum']
          @NotBadSessionRatio = params['NotBadSessionRatio']
          @RequestId = params['RequestId']
        end
      end

      # 查询用户设备的授权绑定情况
      class Device < TencentCloud::Common::AbstractModel
        # @param DeviceId: 设备ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceId: String
        # @param DeviceName: 设备名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceName: String
        # @param LicenseCount: 已经绑定license数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LicenseCount: Integer
        # @param RemainDay: 剩余天数:天
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RemainDay: Integer
        # @param ExpireTime: 过期时间:s
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExpireTime: String
        # @param Duration: 服务时长:s
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Duration: String
        # @param LicenseIds: 已经绑定licenseId列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LicenseIds: Array
        # @param MonthlyRemainTime: 每月license的限定时长
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MonthlyRemainTime: Integer

        attr_accessor :DeviceId, :DeviceName, :LicenseCount, :RemainDay, :ExpireTime, :Duration, :LicenseIds, :MonthlyRemainTime

        def initialize(deviceid=nil, devicename=nil, licensecount=nil, remainday=nil, expiretime=nil, duration=nil, licenseids=nil, monthlyremaintime=nil)
          @DeviceId = deviceid
          @DeviceName = devicename
          @LicenseCount = licensecount
          @RemainDay = remainday
          @ExpireTime = expiretime
          @Duration = duration
          @LicenseIds = licenseids
          @MonthlyRemainTime = monthlyremaintime
        end

        def deserialize(params)
          @DeviceId = params['DeviceId']
          @DeviceName = params['DeviceName']
          @LicenseCount = params['LicenseCount']
          @RemainDay = params['RemainDay']
          @ExpireTime = params['ExpireTime']
          @Duration = params['Duration']
          @LicenseIds = params['LicenseIds']
          @MonthlyRemainTime = params['MonthlyRemainTime']
        end
      end

      # 设备信息
      class DeviceInfo < TencentCloud::Common::AbstractModel
        # @param DeviceId: 设备ID
        # @type DeviceId: String
        # @param DeviceName: 设备名称
        # @type DeviceName: String
        # @param DeviceStatus: 设备状态,offline为离线,ready为在线准备,connected为会话中
        # @type DeviceStatus: String
        # @param DeviceType: 设备类型,field为现场设备(受控方),remote为远端设备(操控方)
        # @type DeviceType: String
        # @param ModifyTime: 设备信息最近修改时间
        # @type ModifyTime: String
        # @param LastReportTime: 设备状态最近更新时间
        # @type LastReportTime: String
        # @param ProjectId: 设备所属项目Id
        # @type ProjectId: String

        attr_accessor :DeviceId, :DeviceName, :DeviceStatus, :DeviceType, :ModifyTime, :LastReportTime, :ProjectId

        def initialize(deviceid=nil, devicename=nil, devicestatus=nil, devicetype=nil, modifytime=nil, lastreporttime=nil, projectid=nil)
          @DeviceId = deviceid
          @DeviceName = devicename
          @DeviceStatus = devicestatus
          @DeviceType = devicetype
          @ModifyTime = modifytime
          @LastReportTime = lastreporttime
          @ProjectId = projectid
        end

        def deserialize(params)
          @DeviceId = params['DeviceId']
          @DeviceName = params['DeviceName']
          @DeviceStatus = params['DeviceStatus']
          @DeviceType = params['DeviceType']
          @ModifyTime = params['ModifyTime']
          @LastReportTime = params['LastReportTime']
          @ProjectId = params['ProjectId']
        end
      end

      # GetDeviceLicense请求参数结构体
      class GetDeviceLicenseRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 目标设备所属项目ID
        # @type ProjectId: String
        # @param DeviceId: 目标设备ID
        # @type DeviceId: String

        attr_accessor :ProjectId, :DeviceId

        def initialize(projectid=nil, deviceid=nil)
          @ProjectId = projectid
          @DeviceId = deviceid
        end

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

      # GetDeviceLicense返回参数结构体
      class GetDeviceLicenseResponse < TencentCloud::Common::AbstractModel
        # @param AvailableCount: 指定设备已经绑定的可用license数量
        # @type AvailableCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :AvailableCount, :RequestId

        def initialize(availablecount=nil, requestid=nil)
          @AvailableCount = availablecount
          @RequestId = requestid
        end

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

      # GetDevices请求参数结构体
      class GetDevicesRequest < TencentCloud::Common::AbstractModel
        # @param PageNum: 页码
        # @type PageNum: Integer
        # @param PageSize: 页面数量
        # @type PageSize: Integer
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param DeviceId: 设备ID
        # @type DeviceId: String

        attr_accessor :PageNum, :PageSize, :ProjectId, :DeviceId

        def initialize(pagenum=nil, pagesize=nil, projectid=nil, deviceid=nil)
          @PageNum = pagenum
          @PageSize = pagesize
          @ProjectId = projectid
          @DeviceId = deviceid
        end

        def deserialize(params)
          @PageNum = params['PageNum']
          @PageSize = params['PageSize']
          @ProjectId = params['ProjectId']
          @DeviceId = params['DeviceId']
        end
      end

      # GetDevices返回参数结构体
      class GetDevicesResponse < TencentCloud::Common::AbstractModel
        # @param Devices: 设备授权列表
        # @type Devices: Array
        # @param TotalCount: 列表数量
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Devices, :TotalCount, :RequestId

        def initialize(devices=nil, totalcount=nil, requestid=nil)
          @Devices = devices
          @TotalCount = totalcount
          @RequestId = requestid
        end

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

      # GetLicenseStat请求参数结构体
      class GetLicenseStatRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # GetLicenseStat返回参数结构体
      class GetLicenseStatResponse < TencentCloud::Common::AbstractModel
        # @param Valid: 有效授权
        # @type Valid: Integer
        # @param Bound: 已绑定授权
        # @type Bound: Integer
        # @param UnBound: 未绑定授权
        # @type UnBound: Integer
        # @param Expire: 过期授权
        # @type Expire: Integer
        # @param MonthlyExpire: 当月用量超时授权个数
        # @type MonthlyExpire: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Valid, :Bound, :UnBound, :Expire, :MonthlyExpire, :RequestId

        def initialize(valid=nil, bound=nil, unbound=nil, expire=nil, monthlyexpire=nil, requestid=nil)
          @Valid = valid
          @Bound = bound
          @UnBound = unbound
          @Expire = expire
          @MonthlyExpire = monthlyexpire
          @RequestId = requestid
        end

        def deserialize(params)
          @Valid = params['Valid']
          @Bound = params['Bound']
          @UnBound = params['UnBound']
          @Expire = params['Expire']
          @MonthlyExpire = params['MonthlyExpire']
          @RequestId = params['RequestId']
        end
      end

      # GetLicenses请求参数结构体
      class GetLicensesRequest < TencentCloud::Common::AbstractModel
        # @param PageNum: 页码
        # @type PageNum: Integer
        # @param PageSize: 页面数量
        # @type PageSize: Integer
        # @param ProjectId: projectId
        # @type ProjectId: String
        # @param DeviceId: DeviceId
        # @type DeviceId: String
        # @param Status: license状态:0:未绑定;1:已绑定;2:已停服;3:已退费
        # @type Status: Integer

        attr_accessor :PageNum, :PageSize, :ProjectId, :DeviceId, :Status

        def initialize(pagenum=nil, pagesize=nil, projectid=nil, deviceid=nil, status=nil)
          @PageNum = pagenum
          @PageSize = pagesize
          @ProjectId = projectid
          @DeviceId = deviceid
          @Status = status
        end

        def deserialize(params)
          @PageNum = params['PageNum']
          @PageSize = params['PageSize']
          @ProjectId = params['ProjectId']
          @DeviceId = params['DeviceId']
          @Status = params['Status']
        end
      end

      # GetLicenses返回参数结构体
      class GetLicensesResponse < TencentCloud::Common::AbstractModel
        # @param Licenses: license列表
        # @type Licenses: Array
        # @param TotalCount: license列表项数量
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Licenses, :TotalCount, :RequestId

        def initialize(licenses=nil, totalcount=nil, requestid=nil)
          @Licenses = licenses
          @TotalCount = totalcount
          @RequestId = requestid
        end

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

      # 按授权查看的license列表
      class License < TencentCloud::Common::AbstractModel
        # @param Count: 该类型的license个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Count: Integer
        # @param Status: license状态:0:未绑定;1:已绑定;2:已停服;3:已退费
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: Integer
        # @param ExpireTime: 到期时间戳:s
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExpireTime: String
        # @param Duration: 服务时长:s
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Duration: String
        # @param RemainDay: 剩余天数:天
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RemainDay: Integer
        # @param LicenseIds: 该类型的licenseId列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LicenseIds: Array

        attr_accessor :Count, :Status, :ExpireTime, :Duration, :RemainDay, :LicenseIds

        def initialize(count=nil, status=nil, expiretime=nil, duration=nil, remainday=nil, licenseids=nil)
          @Count = count
          @Status = status
          @ExpireTime = expiretime
          @Duration = duration
          @RemainDay = remainday
          @LicenseIds = licenseids
        end

        def deserialize(params)
          @Count = params['Count']
          @Status = params['Status']
          @ExpireTime = params['ExpireTime']
          @Duration = params['Duration']
          @RemainDay = params['RemainDay']
          @LicenseIds = params['LicenseIds']
        end
      end

      # ModifyDevice请求参数结构体
      class ModifyDeviceRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 要修改设备归属项目的项目ID
        # @type ProjectId: String
        # @param DeviceId: 要修改设备的设备ID
        # @type DeviceId: String
        # @param DeviceName: 修改后的设备名称,不填则不修改
        # @type DeviceName: String
        # @param DeviceToken: 修改后的设备认证口令,不填则不修改
        # @type DeviceToken: String

        attr_accessor :ProjectId, :DeviceId, :DeviceName, :DeviceToken

        def initialize(projectid=nil, deviceid=nil, devicename=nil, devicetoken=nil)
          @ProjectId = projectid
          @DeviceId = deviceid
          @DeviceName = devicename
          @DeviceToken = devicetoken
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @DeviceId = params['DeviceId']
          @DeviceName = params['DeviceName']
          @DeviceToken = params['DeviceToken']
        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

      # ModifyPolicy请求参数结构体
      class ModifyPolicyRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 修改权限配置的项目ID
        # @type ProjectId: String
        # @param RemoteDeviceId: 修改权限配置的远端设备ID
        # @type RemoteDeviceId: String
        # @param FieldDeviceIds: 权限修改涉及的现场设备ID数组
        # @type FieldDeviceIds: Array
        # @param PolicyMode: 修改的目标权限模式,black为黑名单,white为白名单
        # @type PolicyMode: String
        # @param ModifyMode: 修改模式,add为新增(添加现场设备I关联),remove为删除(解除现场设备关联),set为设置(更新现场设备关联)
        # @type ModifyMode: String

        attr_accessor :ProjectId, :RemoteDeviceId, :FieldDeviceIds, :PolicyMode, :ModifyMode

        def initialize(projectid=nil, remotedeviceid=nil, fielddeviceids=nil, policymode=nil, modifymode=nil)
          @ProjectId = projectid
          @RemoteDeviceId = remotedeviceid
          @FieldDeviceIds = fielddeviceids
          @PolicyMode = policymode
          @ModifyMode = modifymode
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @RemoteDeviceId = params['RemoteDeviceId']
          @FieldDeviceIds = params['FieldDeviceIds']
          @PolicyMode = params['PolicyMode']
          @ModifyMode = params['ModifyMode']
        end
      end

      # ModifyPolicy返回参数结构体
      class ModifyPolicyResponse < TencentCloud::Common::AbstractModel
        # @param FailedInsertIds: 添加关联失败的现场设备ID列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailedInsertIds: Array
        # @param FailedDeleteIds: 解除关联失败的现场设备ID列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailedDeleteIds: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FailedInsertIds, :FailedDeleteIds, :RequestId

        def initialize(failedinsertids=nil, faileddeleteids=nil, requestid=nil)
          @FailedInsertIds = failedinsertids
          @FailedDeleteIds = faileddeleteids
          @RequestId = requestid
        end

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

      # ModifyProject请求参数结构体
      class ModifyProjectRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 目标修改项目的项目ID
        # @type ProjectId: String
        # @param ProjectName: 修改后的项目名称,不填则不修改
        # @type ProjectName: String
        # @param ProjectDescription: 修改后的项目描述,不填则不修改
        # @type ProjectDescription: String
        # @param PolicyMode: 修改后的权限模式,black为黑名单,white为白名单,不填则不修改
        # @type PolicyMode: String

        attr_accessor :ProjectId, :ProjectName, :ProjectDescription, :PolicyMode

        def initialize(projectid=nil, projectname=nil, projectdescription=nil, policymode=nil)
          @ProjectId = projectid
          @ProjectName = projectname
          @ProjectDescription = projectdescription
          @PolicyMode = policymode
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @ProjectName = params['ProjectName']
          @ProjectDescription = params['ProjectDescription']
          @PolicyMode = params['PolicyMode']
        end
      end

      # ModifyProject返回参数结构体
      class ModifyProjectResponse < 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 PolicyInfo < TencentCloud::Common::AbstractModel
        # @param RemoteDeviceId: 远端设备ID
        # @type RemoteDeviceId: String
        # @param FieldDeviceIds: 关联的现场设备ID
        # @type FieldDeviceIds: Array
        # @param ModifyTime: 最近添加时间
        # @type ModifyTime: String

        attr_accessor :RemoteDeviceId, :FieldDeviceIds, :ModifyTime

        def initialize(remotedeviceid=nil, fielddeviceids=nil, modifytime=nil)
          @RemoteDeviceId = remotedeviceid
          @FieldDeviceIds = fielddeviceids
          @ModifyTime = modifytime
        end

        def deserialize(params)
          @RemoteDeviceId = params['RemoteDeviceId']
          @FieldDeviceIds = params['FieldDeviceIds']
          @ModifyTime = params['ModifyTime']
        end
      end

      # 项目信息
      class ProjectInfo < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ProjectName: 项目名称
        # @type ProjectName: String
        # @param ProjectDescription: 项目描述
        # @type ProjectDescription: String
        # @param PolicyMode: 项目权限模式,black为黑名单,white为白名单
        # @type PolicyMode: String
        # @param ModifyTime: 项目信息修改时间
        # @type ModifyTime: String

        attr_accessor :ProjectId, :ProjectName, :ProjectDescription, :PolicyMode, :ModifyTime

        def initialize(projectid=nil, projectname=nil, projectdescription=nil, policymode=nil, modifytime=nil)
          @ProjectId = projectid
          @ProjectName = projectname
          @ProjectDescription = projectdescription
          @PolicyMode = policymode
          @ModifyTime = modifytime
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @ProjectName = params['ProjectName']
          @ProjectDescription = params['ProjectDescription']
          @PolicyMode = params['PolicyMode']
          @ModifyTime = params['ModifyTime']
        end
      end

      # 最新会话信息
      class RecentSessionInfo < TencentCloud::Common::AbstractModel
        # @param SessionId: 会话ID
        # @type SessionId: String
        # @param RemoteDeviceId: 远端设备ID
        # @type RemoteDeviceId: String
        # @param FieldDeviceId: 现场设备ID
        # @type FieldDeviceId: String
        # @param Resolution: 分辨率
        # @type Resolution: String
        # @param StartTime: 会话开始时间
        # @type StartTime: Integer
        # @param LatestUpdateTime: 最后更新时间
        # @type LatestUpdateTime: Integer

        attr_accessor :SessionId, :RemoteDeviceId, :FieldDeviceId, :Resolution, :StartTime, :LatestUpdateTime

        def initialize(sessionid=nil, remotedeviceid=nil, fielddeviceid=nil, resolution=nil, starttime=nil, latestupdatetime=nil)
          @SessionId = sessionid
          @RemoteDeviceId = remotedeviceid
          @FieldDeviceId = fielddeviceid
          @Resolution = resolution
          @StartTime = starttime
          @LatestUpdateTime = latestupdatetime
        end

        def deserialize(params)
          @SessionId = params['SessionId']
          @RemoteDeviceId = params['RemoteDeviceId']
          @FieldDeviceId = params['FieldDeviceId']
          @Resolution = params['Resolution']
          @StartTime = params['StartTime']
          @LatestUpdateTime = params['LatestUpdateTime']
        end
      end

      # 会话数据详单(按设备区分)
      class SessionDeviceDetail < TencentCloud::Common::AbstractModel
        # @param DeviceType: 设备类型:field或remote
        # @type DeviceType: String
        # @param StartTime: 起始点位时间,单位:秒
        # @type StartTime: Integer
        # @param EndTime: 结束点位时间,单位:秒
        # @type EndTime: Integer
        # @param SessionId: 会话ID
        # @type SessionId: String
        # @param Rate: 码率,单位:kbps
        # @type Rate: Array
        # @param Fps: 帧率
        # @type Fps: Array
        # @param Lost: 丢包率,单位:%
        # @type Lost: Array
        # @param NetworkLatency: 网络时延,单位:ms
        # @type NetworkLatency: Array
        # @param VideoLatency: 视频时延,单位:ms
        # @type VideoLatency: Array
        # @param CpuUsed: CPU使用率,单位:%
        # @type CpuUsed: Array
        # @param MemUsed: 内存使用率,单位:%
        # @type MemUsed: Array
        # @param TimeOffset: 时间偏移量,单位:秒
        # @type TimeOffset: Array
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param DeviceId: 设备ID
        # @type DeviceId: String
        # @param Ver: sdk版本
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Ver: String
        # @param SdkMode: 模式(p2p/server)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SdkMode: String
        # @param DecodeCost: 解码耗时,单位:ms
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DecodeCost: Array
        # @param RenderConst: 渲染耗时,单位:ms
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RenderConst: Array
        # @param K100: 卡顿k100
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type K100: Array
        # @param K150: 卡顿k150
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type K150: Array
        # @param NACK: nack请求数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NACK: Array
        # @param BitRateEstimate: 服务端调控码率,单位:kbps
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type BitRateEstimate: Array
        # @param Width: 宽度
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Width: Integer
        # @param Height: 高度
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Height: Integer
        # @param EncodeCost: 编码耗时,单位:ms
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EncodeCost: Array
        # @param CaptureCost: 采集耗时,单位:ms
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CaptureCost: Array

        attr_accessor :DeviceType, :StartTime, :EndTime, :SessionId, :Rate, :Fps, :Lost, :NetworkLatency, :VideoLatency, :CpuUsed, :MemUsed, :TimeOffset, :ProjectId, :DeviceId, :Ver, :SdkMode, :DecodeCost, :RenderConst, :K100, :K150, :NACK, :BitRateEstimate, :Width, :Height, :EncodeCost, :CaptureCost

        def initialize(devicetype=nil, starttime=nil, endtime=nil, sessionid=nil, rate=nil, fps=nil, lost=nil, networklatency=nil, videolatency=nil, cpuused=nil, memused=nil, timeoffset=nil, projectid=nil, deviceid=nil, ver=nil, sdkmode=nil, decodecost=nil, renderconst=nil, k100=nil, k150=nil, nack=nil, bitrateestimate=nil, width=nil, height=nil, encodecost=nil, capturecost=nil)
          @DeviceType = devicetype
          @StartTime = starttime
          @EndTime = endtime
          @SessionId = sessionid
          @Rate = rate
          @Fps = fps
          @Lost = lost
          @NetworkLatency = networklatency
          @VideoLatency = videolatency
          @CpuUsed = cpuused
          @MemUsed = memused
          @TimeOffset = timeoffset
          @ProjectId = projectid
          @DeviceId = deviceid
          @Ver = ver
          @SdkMode = sdkmode
          @DecodeCost = decodecost
          @RenderConst = renderconst
          @K100 = k100
          @K150 = k150
          @NACK = nack
          @BitRateEstimate = bitrateestimate
          @Width = width
          @Height = height
          @EncodeCost = encodecost
          @CaptureCost = capturecost
        end

        def deserialize(params)
          @DeviceType = params['DeviceType']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @SessionId = params['SessionId']
          @Rate = params['Rate']
          @Fps = params['Fps']
          @Lost = params['Lost']
          @NetworkLatency = params['NetworkLatency']
          @VideoLatency = params['VideoLatency']
          @CpuUsed = params['CpuUsed']
          @MemUsed = params['MemUsed']
          @TimeOffset = params['TimeOffset']
          @ProjectId = params['ProjectId']
          @DeviceId = params['DeviceId']
          @Ver = params['Ver']
          @SdkMode = params['SdkMode']
          @DecodeCost = params['DecodeCost']
          @RenderConst = params['RenderConst']
          @K100 = params['K100']
          @K150 = params['K150']
          @NACK = params['NACK']
          @BitRateEstimate = params['BitRateEstimate']
          @Width = params['Width']
          @Height = params['Height']
          @EncodeCost = params['EncodeCost']
          @CaptureCost = params['CaptureCost']
        end
      end

      # 会话信息
      class SessionInfo < TencentCloud::Common::AbstractModel
        # @param SessionId: 会话ID
        # @type SessionId: String
        # @param RemoteDeviceId: 远端设备ID
        # @type RemoteDeviceId: String
        # @param FieldDeviceId: 现场设备ID
        # @type FieldDeviceId: String
        # @param Resolution: 分辨率
        # @type Resolution: String
        # @param StartTime: 会话开始时间
        # @type StartTime: Integer
        # @param EndTime: 会话结束时间
        # @type EndTime: Integer
        # @param Quality: 通话质量:good|normal|bad,对应优良差
        # @type Quality: String

        attr_accessor :SessionId, :RemoteDeviceId, :FieldDeviceId, :Resolution, :StartTime, :EndTime, :Quality

        def initialize(sessionid=nil, remotedeviceid=nil, fielddeviceid=nil, resolution=nil, starttime=nil, endtime=nil, quality=nil)
          @SessionId = sessionid
          @RemoteDeviceId = remotedeviceid
          @FieldDeviceId = fielddeviceid
          @Resolution = resolution
          @StartTime = starttime
          @EndTime = endtime
          @Quality = quality
        end

        def deserialize(params)
          @SessionId = params['SessionId']
          @RemoteDeviceId = params['RemoteDeviceId']
          @FieldDeviceId = params['FieldDeviceId']
          @Resolution = params['Resolution']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Quality = params['Quality']
        end
      end

      # 单位时间间隔的会话统计数据
      class SessionIntervalStatistic < TencentCloud::Common::AbstractModel
        # @param ActiveFieldDeviceNum: 活跃现场设备数
        # @type ActiveFieldDeviceNum: Integer
        # @param ActiveRemoteDeviceNum: 活跃远端设备数
        # @type ActiveRemoteDeviceNum: Integer
        # @param SessionNum: 会话数量
        # @type SessionNum: Integer
        # @param TotalDuration: 会话时长,单位:分钟
        # @type TotalDuration: Integer
        # @param StartTime: 时间戳,单位:秒
        # @type StartTime: Integer
        # @param EndTime: 时间戳,单位:秒
        # @type EndTime: Integer
        # @param NotBadSessionRatio: 优良会话占比,单位:%
        # @type NotBadSessionRatio: Integer

        attr_accessor :ActiveFieldDeviceNum, :ActiveRemoteDeviceNum, :SessionNum, :TotalDuration, :StartTime, :EndTime, :NotBadSessionRatio

        def initialize(activefielddevicenum=nil, activeremotedevicenum=nil, sessionnum=nil, totalduration=nil, starttime=nil, endtime=nil, notbadsessionratio=nil)
          @ActiveFieldDeviceNum = activefielddevicenum
          @ActiveRemoteDeviceNum = activeremotedevicenum
          @SessionNum = sessionnum
          @TotalDuration = totalduration
          @StartTime = starttime
          @EndTime = endtime
          @NotBadSessionRatio = notbadsessionratio
        end

        def deserialize(params)
          @ActiveFieldDeviceNum = params['ActiveFieldDeviceNum']
          @ActiveRemoteDeviceNum = params['ActiveRemoteDeviceNum']
          @SessionNum = params['SessionNum']
          @TotalDuration = params['TotalDuration']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @NotBadSessionRatio = params['NotBadSessionRatio']
        end
      end

    end
  end
end