# 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 Monitor
    module V20180724
      # 告警事件
      class AlarmEvent < TencentCloud::Common::AbstractModel
        # @param EventName: 事件名
        # @type EventName: String
        # @param Description: 展示的事件名
        # @type Description: String
        # @param Namespace: 告警策略类型
        # @type Namespace: String

        attr_accessor :EventName, :Description, :Namespace
        
        def initialize(eventname=nil, description=nil, namespace=nil)
          @EventName = eventname
          @Description = description
          @Namespace = namespace
        end

        def deserialize(params)
          @EventName = params['EventName']
          @Description = params['Description']
          @Namespace = params['Namespace']
        end
      end

      # 告警历史数据
      class AlarmHistory < TencentCloud::Common::AbstractModel
        # @param AlarmId: 告警历史Id
        # @type AlarmId: String
        # @param MonitorType: 监控类型
        # @type MonitorType: String
        # @param Namespace: 策略类型
        # @type Namespace: String
        # @param AlarmObject: 告警对象
        # @type AlarmObject: String
        # @param Content: 告警内容
        # @type Content: String
        # @param FirstOccurTime: 时间戳,首次出现时间
        # @type FirstOccurTime: Integer
        # @param LastOccurTime: 时间戳,最后出现时间
        # @type LastOccurTime: Integer
        # @param AlarmStatus: 告警状态,ALARM=未恢复 OK=已恢复 NO_CONF=已失效 NO_DATA=数据不足
        # @type AlarmStatus: String
        # @param PolicyId: 告警策略 Id
        # @type PolicyId: String
        # @param PolicyName: 策略名称
        # @type PolicyName: String
        # @param VPC: 基础产品告警的告警对象所属网络
        # @type VPC: String
        # @param ProjectId: 项目 Id
        # @type ProjectId: Integer
        # @param ProjectName: 项目名字
        # @type ProjectName: String
        # @param InstanceGroup: 告警对象所属实例组
        # @type InstanceGroup: Array
        # @param ReceiverUids: 接收人列表
        # @type ReceiverUids: Array
        # @param ReceiverGroups: 接收组列表
        # @type ReceiverGroups: Array
        # @param NoticeWays: 告警渠道列表 SMS=短信 EMAIL=邮件 CALL=电话 WECHAT=微信
        # @type NoticeWays: Array
        # @param OriginId: 可用于实例、实例组的绑定和解绑接口([BindingPolicyObject](https://cloud.tencent.com/document/product/248/40421)、[UnBindingAllPolicyObject](https://cloud.tencent.com/document/product/248/40568)、[UnBindingPolicyObject](https://cloud.tencent.com/document/product/248/40567))的策略 ID
        # @type OriginId: String
        # @param AlarmType: 告警类型
        # @type AlarmType: String
        # @param EventId: 事件Id
        # @type EventId: Integer
        # @param Region: 地域
        # @type Region: String
        # @param PolicyExists: 策略是否存在 0=不存在 1=存在
        # @type PolicyExists: Integer
        # @param MetricsInfo: 指标信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricsInfo: Array
        # @param Dimensions: 告警实例的维度信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Dimensions: String

        attr_accessor :AlarmId, :MonitorType, :Namespace, :AlarmObject, :Content, :FirstOccurTime, :LastOccurTime, :AlarmStatus, :PolicyId, :PolicyName, :VPC, :ProjectId, :ProjectName, :InstanceGroup, :ReceiverUids, :ReceiverGroups, :NoticeWays, :OriginId, :AlarmType, :EventId, :Region, :PolicyExists, :MetricsInfo, :Dimensions
        
        def initialize(alarmid=nil, monitortype=nil, namespace=nil, alarmobject=nil, content=nil, firstoccurtime=nil, lastoccurtime=nil, alarmstatus=nil, policyid=nil, policyname=nil, vpc=nil, projectid=nil, projectname=nil, instancegroup=nil, receiveruids=nil, receivergroups=nil, noticeways=nil, originid=nil, alarmtype=nil, eventid=nil, region=nil, policyexists=nil, metricsinfo=nil, dimensions=nil)
          @AlarmId = alarmid
          @MonitorType = monitortype
          @Namespace = namespace
          @AlarmObject = alarmobject
          @Content = content
          @FirstOccurTime = firstoccurtime
          @LastOccurTime = lastoccurtime
          @AlarmStatus = alarmstatus
          @PolicyId = policyid
          @PolicyName = policyname
          @VPC = vpc
          @ProjectId = projectid
          @ProjectName = projectname
          @InstanceGroup = instancegroup
          @ReceiverUids = receiveruids
          @ReceiverGroups = receivergroups
          @NoticeWays = noticeways
          @OriginId = originid
          @AlarmType = alarmtype
          @EventId = eventid
          @Region = region
          @PolicyExists = policyexists
          @MetricsInfo = metricsinfo
          @Dimensions = dimensions
        end

        def deserialize(params)
          @AlarmId = params['AlarmId']
          @MonitorType = params['MonitorType']
          @Namespace = params['Namespace']
          @AlarmObject = params['AlarmObject']
          @Content = params['Content']
          @FirstOccurTime = params['FirstOccurTime']
          @LastOccurTime = params['LastOccurTime']
          @AlarmStatus = params['AlarmStatus']
          @PolicyId = params['PolicyId']
          @PolicyName = params['PolicyName']
          @VPC = params['VPC']
          @ProjectId = params['ProjectId']
          @ProjectName = params['ProjectName']
          unless params['InstanceGroup'].nil?
            @InstanceGroup = []
            params['InstanceGroup'].each do |i|
              instancegroups_tmp = InstanceGroups.new
              instancegroups_tmp.deserialize(i)
              @InstanceGroup << instancegroups_tmp
            end
          end
          @ReceiverUids = params['ReceiverUids']
          @ReceiverGroups = params['ReceiverGroups']
          @NoticeWays = params['NoticeWays']
          @OriginId = params['OriginId']
          @AlarmType = params['AlarmType']
          @EventId = params['EventId']
          @Region = params['Region']
          @PolicyExists = params['PolicyExists']
          unless params['MetricsInfo'].nil?
            @MetricsInfo = []
            params['MetricsInfo'].each do |i|
              alarmhistorymetric_tmp = AlarmHistoryMetric.new
              alarmhistorymetric_tmp.deserialize(i)
              @MetricsInfo << alarmhistorymetric_tmp
            end
          end
          @Dimensions = params['Dimensions']
        end
      end

      # 告警历史的指标信息
      class AlarmHistoryMetric < TencentCloud::Common::AbstractModel
        # @param QceNamespace: 云产品监控类型查询数据使用的命名空间
        # @type QceNamespace: String
        # @param MetricName: 指标名
        # @type MetricName: String
        # @param Period: 统计周期
        # @type Period: Integer
        # @param Value: 触发告警的数值
        # @type Value: String
        # @param Description: 指标的展示名
        # @type Description: String

        attr_accessor :QceNamespace, :MetricName, :Period, :Value, :Description
        
        def initialize(qcenamespace=nil, metricname=nil, period=nil, value=nil, description=nil)
          @QceNamespace = qcenamespace
          @MetricName = metricname
          @Period = period
          @Value = value
          @Description = description
        end

        def deserialize(params)
          @QceNamespace = params['QceNamespace']
          @MetricName = params['MetricName']
          @Period = params['Period']
          @Value = params['Value']
          @Description = params['Description']
        end
      end

      # 告警通知模板详情
      class AlarmNotice < TencentCloud::Common::AbstractModel
        # @param Id: 告警通知模板 ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Id: String
        # @param Name: 告警通知模板名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Name: String
        # @param UpdatedAt: 上次修改时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedAt: String
        # @param UpdatedBy: 上次修改人
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedBy: String
        # @param NoticeType: 告警通知类型 ALARM=未恢复通知 OK=已恢复通知 ALL=全部通知
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NoticeType: String
        # @param UserNotices: 用户通知列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserNotices: Array
        # @param URLNotices: 回调通知列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type URLNotices: Array
        # @param IsPreset: 是否是系统预设通知模板 0=否 1=是
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsPreset: Integer
        # @param NoticeLanguage: 通知语言 zh-CN=中文 en-US=英文
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NoticeLanguage: String
        # @param PolicyIds: 告警通知模板绑定的告警策略ID列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PolicyIds: Array

        attr_accessor :Id, :Name, :UpdatedAt, :UpdatedBy, :NoticeType, :UserNotices, :URLNotices, :IsPreset, :NoticeLanguage, :PolicyIds
        
        def initialize(id=nil, name=nil, updatedat=nil, updatedby=nil, noticetype=nil, usernotices=nil, urlnotices=nil, ispreset=nil, noticelanguage=nil, policyids=nil)
          @Id = id
          @Name = name
          @UpdatedAt = updatedat
          @UpdatedBy = updatedby
          @NoticeType = noticetype
          @UserNotices = usernotices
          @URLNotices = urlnotices
          @IsPreset = ispreset
          @NoticeLanguage = noticelanguage
          @PolicyIds = policyids
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          @UpdatedAt = params['UpdatedAt']
          @UpdatedBy = params['UpdatedBy']
          @NoticeType = params['NoticeType']
          unless params['UserNotices'].nil?
            @UserNotices = []
            params['UserNotices'].each do |i|
              usernotice_tmp = UserNotice.new
              usernotice_tmp.deserialize(i)
              @UserNotices << usernotice_tmp
            end
          end
          unless params['URLNotices'].nil?
            @URLNotices = []
            params['URLNotices'].each do |i|
              urlnotice_tmp = URLNotice.new
              urlnotice_tmp.deserialize(i)
              @URLNotices << urlnotice_tmp
            end
          end
          @IsPreset = params['IsPreset']
          @NoticeLanguage = params['NoticeLanguage']
          @PolicyIds = params['PolicyIds']
        end
      end

      # 告警策略详情
      class AlarmPolicy < TencentCloud::Common::AbstractModel
        # @param PolicyId: 告警策略 ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PolicyId: String
        # @param PolicyName: 告警策略名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PolicyName: String
        # @param Remark: 备注信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Remark: String
        # @param MonitorType: 监控类型 MT_QCE=云产品监控
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MonitorType: String
        # @param Enable: 启停状态 0=停用 1=启用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Enable: Integer
        # @param UseSum: 策略组绑定的实例数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UseSum: Integer
        # @param ProjectId: 项目 Id -1=无项目 0=默认项目
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectId: Integer
        # @param ProjectName: 项目名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectName: String
        # @param Namespace: 告警策略类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Namespace: String
        # @param ConditionTemplateId: 触发条件模板 Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConditionTemplateId: String
        # @param Condition: 指标触发条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Condition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyCondition`
        # @param EventCondition: 事件触发条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventCondition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyEventCondition`
        # @param NoticeIds: 通知规则 id 列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NoticeIds: Array
        # @param Notices: 通知规则 列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Notices: Array
        # @param TriggerTasks: 触发任务列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TriggerTasks: Array
        # @param ConditionsTemp: 模板策略组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConditionsTemp: :class:`Tencentcloud::Monitor.v20180724.models.ConditionsTemp`
        # @param LastEditUin: 最后编辑的用户uin
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LastEditUin: String
        # @param UpdateTime: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdateTime: Integer
        # @param InsertTime: 创建时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InsertTime: Integer
        # @param Region: 地域
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Region: Array
        # @param NamespaceShowName: namespace显示名字
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NamespaceShowName: String
        # @param IsDefault: 是否默认策略,1是,0否
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsDefault: Integer
        # @param CanSetDefault: 能否设置默认策略,1是,0否
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CanSetDefault: Integer
        # @param InstanceGroupId: 实例分组ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceGroupId: Integer
        # @param InstanceSum: 实例分组总实例数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceSum: Integer
        # @param InstanceGroupName: 实例分组名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceGroupName: String
        # @param RuleType: 触发条件类型 STATIC=静态阈值 DYNAMIC=动态类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RuleType: String
        # @param OriginId: 用于实例、实例组绑定和解绑接口(BindingPolicyObject、UnBindingAllPolicyObject、UnBindingPolicyObject)的策略 ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginId: String
        # @param TagInstances: 标签
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TagInstances: Array
        # @param FilterDimensionsParam: 策略关联的过滤维度信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FilterDimensionsParam: String

        attr_accessor :PolicyId, :PolicyName, :Remark, :MonitorType, :Enable, :UseSum, :ProjectId, :ProjectName, :Namespace, :ConditionTemplateId, :Condition, :EventCondition, :NoticeIds, :Notices, :TriggerTasks, :ConditionsTemp, :LastEditUin, :UpdateTime, :InsertTime, :Region, :NamespaceShowName, :IsDefault, :CanSetDefault, :InstanceGroupId, :InstanceSum, :InstanceGroupName, :RuleType, :OriginId, :TagInstances, :FilterDimensionsParam
        
        def initialize(policyid=nil, policyname=nil, remark=nil, monitortype=nil, enable=nil, usesum=nil, projectid=nil, projectname=nil, namespace=nil, conditiontemplateid=nil, condition=nil, eventcondition=nil, noticeids=nil, notices=nil, triggertasks=nil, conditionstemp=nil, lastedituin=nil, updatetime=nil, inserttime=nil, region=nil, namespaceshowname=nil, isdefault=nil, cansetdefault=nil, instancegroupid=nil, instancesum=nil, instancegroupname=nil, ruletype=nil, originid=nil, taginstances=nil, filterdimensionsparam=nil)
          @PolicyId = policyid
          @PolicyName = policyname
          @Remark = remark
          @MonitorType = monitortype
          @Enable = enable
          @UseSum = usesum
          @ProjectId = projectid
          @ProjectName = projectname
          @Namespace = namespace
          @ConditionTemplateId = conditiontemplateid
          @Condition = condition
          @EventCondition = eventcondition
          @NoticeIds = noticeids
          @Notices = notices
          @TriggerTasks = triggertasks
          @ConditionsTemp = conditionstemp
          @LastEditUin = lastedituin
          @UpdateTime = updatetime
          @InsertTime = inserttime
          @Region = region
          @NamespaceShowName = namespaceshowname
          @IsDefault = isdefault
          @CanSetDefault = cansetdefault
          @InstanceGroupId = instancegroupid
          @InstanceSum = instancesum
          @InstanceGroupName = instancegroupname
          @RuleType = ruletype
          @OriginId = originid
          @TagInstances = taginstances
          @FilterDimensionsParam = filterdimensionsparam
        end

        def deserialize(params)
          @PolicyId = params['PolicyId']
          @PolicyName = params['PolicyName']
          @Remark = params['Remark']
          @MonitorType = params['MonitorType']
          @Enable = params['Enable']
          @UseSum = params['UseSum']
          @ProjectId = params['ProjectId']
          @ProjectName = params['ProjectName']
          @Namespace = params['Namespace']
          @ConditionTemplateId = params['ConditionTemplateId']
          unless params['Condition'].nil?
            @Condition = AlarmPolicyCondition.new
            @Condition.deserialize(params['Condition'])
          end
          unless params['EventCondition'].nil?
            @EventCondition = AlarmPolicyEventCondition.new
            @EventCondition.deserialize(params['EventCondition'])
          end
          @NoticeIds = params['NoticeIds']
          unless params['Notices'].nil?
            @Notices = []
            params['Notices'].each do |i|
              alarmnotice_tmp = AlarmNotice.new
              alarmnotice_tmp.deserialize(i)
              @Notices << alarmnotice_tmp
            end
          end
          unless params['TriggerTasks'].nil?
            @TriggerTasks = []
            params['TriggerTasks'].each do |i|
              alarmpolicytriggertask_tmp = AlarmPolicyTriggerTask.new
              alarmpolicytriggertask_tmp.deserialize(i)
              @TriggerTasks << alarmpolicytriggertask_tmp
            end
          end
          unless params['ConditionsTemp'].nil?
            @ConditionsTemp = ConditionsTemp.new
            @ConditionsTemp.deserialize(params['ConditionsTemp'])
          end
          @LastEditUin = params['LastEditUin']
          @UpdateTime = params['UpdateTime']
          @InsertTime = params['InsertTime']
          @Region = params['Region']
          @NamespaceShowName = params['NamespaceShowName']
          @IsDefault = params['IsDefault']
          @CanSetDefault = params['CanSetDefault']
          @InstanceGroupId = params['InstanceGroupId']
          @InstanceSum = params['InstanceSum']
          @InstanceGroupName = params['InstanceGroupName']
          @RuleType = params['RuleType']
          @OriginId = params['OriginId']
          unless params['TagInstances'].nil?
            @TagInstances = []
            params['TagInstances'].each do |i|
              taginstance_tmp = TagInstance.new
              taginstance_tmp.deserialize(i)
              @TagInstances << taginstance_tmp
            end
          end
          @FilterDimensionsParam = params['FilterDimensionsParam']
        end
      end

      # 告警策略指标触发条件
      class AlarmPolicyCondition < TencentCloud::Common::AbstractModel
        # @param IsUnionRule: 指标触发与或条件,0=或,1=与
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsUnionRule: Integer
        # @param Rules: 告警触发条件列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Rules: Array

        attr_accessor :IsUnionRule, :Rules
        
        def initialize(isunionrule=nil, rules=nil)
          @IsUnionRule = isunionrule
          @Rules = rules
        end

        def deserialize(params)
          @IsUnionRule = params['IsUnionRule']
          unless params['Rules'].nil?
            @Rules = []
            params['Rules'].each do |i|
              alarmpolicyrule_tmp = AlarmPolicyRule.new
              alarmpolicyrule_tmp.deserialize(i)
              @Rules << alarmpolicyrule_tmp
            end
          end
        end
      end

      # 告警策略事件触发条件
      class AlarmPolicyEventCondition < TencentCloud::Common::AbstractModel
        # @param Rules: 告警触发条件列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Rules: Array

        attr_accessor :Rules
        
        def initialize(rules=nil)
          @Rules = rules
        end

        def deserialize(params)
          unless params['Rules'].nil?
            @Rules = []
            params['Rules'].each do |i|
              alarmpolicyrule_tmp = AlarmPolicyRule.new
              alarmpolicyrule_tmp.deserialize(i)
              @Rules << alarmpolicyrule_tmp
            end
          end
        end
      end

      # 告警策略过滤条件
      class AlarmPolicyFilter < TencentCloud::Common::AbstractModel
        # @param Type: 过滤条件类型 DIMENSION=使用 Dimensions 做过滤
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: String
        # @param Dimensions: AlarmPolicyDimension 二维数组序列化后的json字符串,一维数组之间互为或关系,一维数组内的元素互为与关系
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Dimensions: String

        attr_accessor :Type, :Dimensions
        
        def initialize(type=nil, dimensions=nil)
          @Type = type
          @Dimensions = dimensions
        end

        def deserialize(params)
          @Type = params['Type']
          @Dimensions = params['Dimensions']
        end
      end

      # 告警策略触发条件
      class AlarmPolicyRule < TencentCloud::Common::AbstractModel
        # @param MetricName: 指标名或事件名,支持的指标可以从 [DescribeAlarmMetrics](https://cloud.tencent.com/document/product/248/51283) 查询,支持的事件可以从 [DescribeAlarmEvents](https://cloud.tencent.com/document/product/248/51284) 查询 。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricName: String
        # @param Period: 秒数 统计周期,支持的值可以从 [DescribeAlarmMetrics](https://cloud.tencent.com/document/product/248/51283) 查询。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Period: Integer
        # @param Operator: 英文运算符
        # intelligent=无阈值智能检测
        # eq=等于
        # ge=大于等于
        # gt=大于
        # le=小于等于
        # lt=小于
        # ne=不等于
        # day_increase=天同比增长
        # day_decrease=天同比下降
        # day_wave=天同比波动
        # week_increase=周同比增长
        # week_decrease=周同比下降
        # week_wave=周同比波动
        # cycle_increase=环比增长
        # cycle_decrease=环比下降
        # cycle_wave=环比波动
        # re=正则匹配
        # 支持的值可以从 [DescribeAlarmMetrics](https://cloud.tencent.com/document/product/248/51283) 查询。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Operator: String
        # @param Value: 阈值,支持的范围可以从 [DescribeAlarmMetrics](https://cloud.tencent.com/document/product/248/51283) 查询。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Value: String
        # @param ContinuePeriod: 周期数 持续通知周期 1=持续1个周期 2=持续2个周期...,支持的值可以从 [DescribeAlarmMetrics](https://cloud.tencent.com/document/product/248/51283) 查询
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ContinuePeriod: Integer
        # @param NoticeFrequency: 秒数 告警间隔  0=不重复 300=每5分钟告警一次 600=每10分钟告警一次 900=每15分钟告警一次 1800=每30分钟告警一次 3600=每1小时告警一次 7200=每2小时告警一次 10800=每3小时告警一次 21600=每6小时告警一次 43200=每12小时告警一次 86400=每1天告警一次
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NoticeFrequency: Integer
        # @param IsPowerNotice: 告警频率是否指数增长 0=否 1=是
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsPowerNotice: Integer
        # @param Filter: 对于单个触发规则的过滤条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Filter: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyFilter`
        # @param Description: 指标展示名,用于出参
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Description: String
        # @param Unit: 单位,用于出参
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Unit: String
        # @param RuleType: 触发条件类型 STATIC=静态阈值 DYNAMIC=动态阈值。创建或编辑策略时,如不填则默认为 STATIC。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RuleType: String

        attr_accessor :MetricName, :Period, :Operator, :Value, :ContinuePeriod, :NoticeFrequency, :IsPowerNotice, :Filter, :Description, :Unit, :RuleType
        
        def initialize(metricname=nil, period=nil, operator=nil, value=nil, continueperiod=nil, noticefrequency=nil, ispowernotice=nil, filter=nil, description=nil, unit=nil, ruletype=nil)
          @MetricName = metricname
          @Period = period
          @Operator = operator
          @Value = value
          @ContinuePeriod = continueperiod
          @NoticeFrequency = noticefrequency
          @IsPowerNotice = ispowernotice
          @Filter = filter
          @Description = description
          @Unit = unit
          @RuleType = ruletype
        end

        def deserialize(params)
          @MetricName = params['MetricName']
          @Period = params['Period']
          @Operator = params['Operator']
          @Value = params['Value']
          @ContinuePeriod = params['ContinuePeriod']
          @NoticeFrequency = params['NoticeFrequency']
          @IsPowerNotice = params['IsPowerNotice']
          unless params['Filter'].nil?
            @Filter = AlarmPolicyFilter.new
            @Filter.deserialize(params['Filter'])
          end
          @Description = params['Description']
          @Unit = params['Unit']
          @RuleType = params['RuleType']
        end
      end

      # 告警策略触发任务
      class AlarmPolicyTriggerTask < TencentCloud::Common::AbstractModel
        # @param Type: 触发任务类型 AS=弹性伸缩
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: String
        # @param TaskConfig: 用 json 表示配置信息 {"Key1":"Value1","Key2":"Value2"}
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskConfig: String

        attr_accessor :Type, :TaskConfig
        
        def initialize(type=nil, taskconfig=nil)
          @Type = type
          @TaskConfig = taskconfig
        end

        def deserialize(params)
          @Type = params['Type']
          @TaskConfig = params['TaskConfig']
        end
      end

      # 策略绑定实例维度信息
      class BindingPolicyObjectDimension < TencentCloud::Common::AbstractModel
        # @param Region: 地域名
        # @type Region: String
        # @param RegionId: 地域ID
        # @type RegionId: Integer
        # @param Dimensions: 实例的维度信息,格式为
        # {"unInstanceId":"ins-00jvv9mo"}。不同云产品的维度信息不同,详见
        # [指标维度信息Dimensions列表](https://cloud.tencent.com/document/product/248/50397)
        # @type Dimensions: String
        # @param EventDimensions: 事件维度信息
        # @type EventDimensions: String

        attr_accessor :Region, :RegionId, :Dimensions, :EventDimensions
        
        def initialize(region=nil, regionid=nil, dimensions=nil, eventdimensions=nil)
          @Region = region
          @RegionId = regionid
          @Dimensions = dimensions
          @EventDimensions = eventdimensions
        end

        def deserialize(params)
          @Region = params['Region']
          @RegionId = params['RegionId']
          @Dimensions = params['Dimensions']
          @EventDimensions = params['EventDimensions']
        end
      end

      # BindingPolicyObject请求参数结构体
      class BindingPolicyObjectRequest < TencentCloud::Common::AbstractModel
        # @param Module: 必填。固定值"monitor"
        # @type Module: String
        # @param GroupId: 策略组id,例如 4739573。逐渐弃用,建议使用 PolicyId 参数
        # @type GroupId: Integer
        # @param PolicyId: 告警策略ID,例如“policy-gh892hg0”。PolicyId 参数与 GroupId 参数至少要填一个,否则会报参数错误,建议使用该参数。若两者同时存在则以该参数为准
        # @type PolicyId: String
        # @param InstanceGroupId: 实例分组ID
        # @type InstanceGroupId: Integer
        # @param Dimensions: 需要绑定的对象维度信息
        # @type Dimensions: Array

        attr_accessor :Module, :GroupId, :PolicyId, :InstanceGroupId, :Dimensions
        
        def initialize(_module=nil, groupid=nil, policyid=nil, instancegroupid=nil, dimensions=nil)
          @Module = _module
          @GroupId = groupid
          @PolicyId = policyid
          @InstanceGroupId = instancegroupid
          @Dimensions = dimensions
        end

        def deserialize(params)
          @Module = params['Module']
          @GroupId = params['GroupId']
          @PolicyId = params['PolicyId']
          @InstanceGroupId = params['InstanceGroupId']
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              bindingpolicyobjectdimension_tmp = BindingPolicyObjectDimension.new
              bindingpolicyobjectdimension_tmp.deserialize(i)
              @Dimensions << bindingpolicyobjectdimension_tmp
            end
          end
        end
      end

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

      # BindingPolicyTag请求参数结构体
      class BindingPolicyTagRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定取值 monitor
        # @type Module: String
        # @param PolicyId: 策略ID
        # @type PolicyId: String
        # @param GroupId: 用于实例、实例组绑定和解绑接口(BindingPolicyObject、UnBindingAllPolicyObject、UnBindingPolicyObject)的策略 ID
        # @type GroupId: String
        # @param Tag: 策略标签
        # @type Tag: :class:`Tencentcloud::Monitor.v20180724.models.PolicyTag`
        # @param ServiceType: 产品类型
        # @type ServiceType: String
        # @param InstanceGroupId: 实例分组ID
        # @type InstanceGroupId: Integer

        attr_accessor :Module, :PolicyId, :GroupId, :Tag, :ServiceType, :InstanceGroupId
        
        def initialize(_module=nil, policyid=nil, groupid=nil, tag=nil, servicetype=nil, instancegroupid=nil)
          @Module = _module
          @PolicyId = policyid
          @GroupId = groupid
          @Tag = tag
          @ServiceType = servicetype
          @InstanceGroupId = instancegroupid
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
          @GroupId = params['GroupId']
          unless params['Tag'].nil?
            @Tag = PolicyTag.new
            @Tag.deserialize(params['Tag'])
          end
          @ServiceType = params['ServiceType']
          @InstanceGroupId = params['InstanceGroupId']
        end
      end

      # BindingPolicyTag返回参数结构体
      class BindingPolicyTagResponse < 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 CommonNamespace < TencentCloud::Common::AbstractModel
        # @param Id: 命名空间标示
        # @type Id: String
        # @param Name: 命名空间名称
        # @type Name: String
        # @param Value: 命名空间值
        # @type Value: String
        # @param ProductName: 产品名称
        # @type ProductName: String
        # @param Config: 配置信息
        # @type Config: String
        # @param AvailableRegions: 支持地域列表
        # @type AvailableRegions: Array
        # @param SortId: 排序Id
        # @type SortId: Integer
        # @param DashboardId: Dashboard中的唯一表示
        # @type DashboardId: String

        attr_accessor :Id, :Name, :Value, :ProductName, :Config, :AvailableRegions, :SortId, :DashboardId
        
        def initialize(id=nil, name=nil, value=nil, productname=nil, config=nil, availableregions=nil, sortid=nil, dashboardid=nil)
          @Id = id
          @Name = name
          @Value = value
          @ProductName = productname
          @Config = config
          @AvailableRegions = availableregions
          @SortId = sortid
          @DashboardId = dashboardid
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          @Value = params['Value']
          @ProductName = params['ProductName']
          @Config = params['Config']
          @AvailableRegions = params['AvailableRegions']
          @SortId = params['SortId']
          @DashboardId = params['DashboardId']
        end
      end

      # 告警条件
      class Condition < TencentCloud::Common::AbstractModel
        # @param AlarmNotifyPeriod: 告警通知频率
        # @type AlarmNotifyPeriod: Integer
        # @param AlarmNotifyType: 重复通知策略预定义(0 - 只告警一次, 1 - 指数告警,2 - 连接告警)
        # @type AlarmNotifyType: Integer
        # @param CalcType: 检测方式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CalcType: String
        # @param CalcValue: 检测值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CalcValue: String
        # @param ContinueTime: 持续时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ContinueTime: String
        # @param MetricID: 指标ID
        # @type MetricID: Integer
        # @param MetricDisplayName: 指标展示名称(对外)
        # @type MetricDisplayName: String
        # @param Period: 周期
        # @type Period: Integer
        # @param RuleID: 规则ID
        # @type RuleID: Integer
        # @param Unit: 指标单位
        # @type Unit: String

        attr_accessor :AlarmNotifyPeriod, :AlarmNotifyType, :CalcType, :CalcValue, :ContinueTime, :MetricID, :MetricDisplayName, :Period, :RuleID, :Unit
        
        def initialize(alarmnotifyperiod=nil, alarmnotifytype=nil, calctype=nil, calcvalue=nil, continuetime=nil, metricid=nil, metricdisplayname=nil, period=nil, ruleid=nil, unit=nil)
          @AlarmNotifyPeriod = alarmnotifyperiod
          @AlarmNotifyType = alarmnotifytype
          @CalcType = calctype
          @CalcValue = calcvalue
          @ContinueTime = continuetime
          @MetricID = metricid
          @MetricDisplayName = metricdisplayname
          @Period = period
          @RuleID = ruleid
          @Unit = unit
        end

        def deserialize(params)
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @AlarmNotifyType = params['AlarmNotifyType']
          @CalcType = params['CalcType']
          @CalcValue = params['CalcValue']
          @ContinueTime = params['ContinueTime']
          @MetricID = params['MetricID']
          @MetricDisplayName = params['MetricDisplayName']
          @Period = params['Period']
          @RuleID = params['RuleID']
          @Unit = params['Unit']
        end
      end

      # 告警条件模版
      class ConditionsTemp < TencentCloud::Common::AbstractModel
        # @param TemplateName: 模版名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TemplateName: String
        # @param Condition: 指标触发条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Condition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyCondition`
        # @param EventCondition: 事件触发条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventCondition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyEventCondition`

        attr_accessor :TemplateName, :Condition, :EventCondition
        
        def initialize(templatename=nil, condition=nil, eventcondition=nil)
          @TemplateName = templatename
          @Condition = condition
          @EventCondition = eventcondition
        end

        def deserialize(params)
          @TemplateName = params['TemplateName']
          unless params['Condition'].nil?
            @Condition = AlarmPolicyCondition.new
            @Condition.deserialize(params['Condition'])
          end
          unless params['EventCondition'].nil?
            @EventCondition = AlarmPolicyEventCondition.new
            @EventCondition.deserialize(params['EventCondition'])
          end
        end
      end

      # CreateAlarmNotice请求参数结构体
      class CreateAlarmNoticeRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param Name: 通知模板名称 60字符以内
        # @type Name: String
        # @param NoticeType: 通知类型 ALARM=未恢复通知 OK=已恢复通知 ALL=都通知
        # @type NoticeType: String
        # @param NoticeLanguage: 通知语言 zh-CN=中文 en-US=英文
        # @type NoticeLanguage: String
        # @param UserNotices: 用户通知 最多5个
        # @type UserNotices: Array
        # @param URLNotices: 回调通知 最多3个
        # @type URLNotices: Array

        attr_accessor :Module, :Name, :NoticeType, :NoticeLanguage, :UserNotices, :URLNotices
        
        def initialize(_module=nil, name=nil, noticetype=nil, noticelanguage=nil, usernotices=nil, urlnotices=nil)
          @Module = _module
          @Name = name
          @NoticeType = noticetype
          @NoticeLanguage = noticelanguage
          @UserNotices = usernotices
          @URLNotices = urlnotices
        end

        def deserialize(params)
          @Module = params['Module']
          @Name = params['Name']
          @NoticeType = params['NoticeType']
          @NoticeLanguage = params['NoticeLanguage']
          unless params['UserNotices'].nil?
            @UserNotices = []
            params['UserNotices'].each do |i|
              usernotice_tmp = UserNotice.new
              usernotice_tmp.deserialize(i)
              @UserNotices << usernotice_tmp
            end
          end
          unless params['URLNotices'].nil?
            @URLNotices = []
            params['URLNotices'].each do |i|
              urlnotice_tmp = URLNotice.new
              urlnotice_tmp.deserialize(i)
              @URLNotices << urlnotice_tmp
            end
          end
        end
      end

      # CreateAlarmNotice返回参数结构体
      class CreateAlarmNoticeResponse < TencentCloud::Common::AbstractModel
        # @param NoticeId: 告警通知模板ID
        # @type NoticeId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :NoticeId, :RequestId
        
        def initialize(noticeid=nil, requestid=nil)
          @NoticeId = noticeid
          @RequestId = requestid
        end

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

      # CreateAlarmPolicy请求参数结构体
      class CreateAlarmPolicyRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param PolicyName: 策略名称,不超过20字符
        # @type PolicyName: String
        # @param MonitorType: 监控类型 MT_QCE=云产品监控
        # @type MonitorType: String
        # @param Namespace: 告警策略类型,由 [DescribeAllNamespaces](https://cloud.tencent.com/document/product/248/48683) 获得。对于云产品监控,取接口出参的 QceNamespacesNew.N.Id,例如 cvm_device
        # @type Namespace: String
        # @param Remark: 备注,不超过100字符,仅支持中英文、数字、下划线、-
        # @type Remark: String
        # @param Enable: 是否启用 0=停用 1=启用,可不传 默认为1
        # @type Enable: Integer
        # @param ProjectId: 项目 Id,对于区分项目的产品必须传入非 -1 的值。 -1=无项目 0=默认项目,如不传 默认为 -1。支持的项目 Id 可以在控制台 [账号中心-项目管理](https://console.cloud.tencent.com/project) 中查看。
        # @type ProjectId: Integer
        # @param ConditionTemplateId: 触发条件模板 Id,该参数与 Condition 参数二选一。如果策略绑定触发条件模板,则传该参数;否则不传该参数,而是传 Condition 参数。触发条件模板 Id 可以从 [DescribeConditionsTemplateList](https://cloud.tencent.com/document/api/248/70250) 接口获取。
        # @type ConditionTemplateId: Integer
        # @param Condition: 指标触发条件,支持的指标可以从 [DescribeAlarmMetrics](https://cloud.tencent.com/document/product/248/51283) 查询。
        # @type Condition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyCondition`
        # @param EventCondition: 事件触发条件,支持的事件可以从 [DescribeAlarmEvents](https://cloud.tencent.com/document/product/248/51284) 查询。
        # @type EventCondition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyEventCondition`
        # @param NoticeIds: 通知规则 Id 列表,由 [DescribeAlarmNotices](https://cloud.tencent.com/document/product/248/51280) 获得
        # @type NoticeIds: Array
        # @param TriggerTasks: 触发任务列表
        # @type TriggerTasks: Array
        # @param Filter: 全局过滤条件
        # @type Filter: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyFilter`
        # @param GroupBy: 聚合维度列表,指定按哪些维度 key 来做 group by
        # @type GroupBy: Array

        attr_accessor :Module, :PolicyName, :MonitorType, :Namespace, :Remark, :Enable, :ProjectId, :ConditionTemplateId, :Condition, :EventCondition, :NoticeIds, :TriggerTasks, :Filter, :GroupBy
        
        def initialize(_module=nil, policyname=nil, monitortype=nil, namespace=nil, remark=nil, enable=nil, projectid=nil, conditiontemplateid=nil, condition=nil, eventcondition=nil, noticeids=nil, triggertasks=nil, filter=nil, groupby=nil)
          @Module = _module
          @PolicyName = policyname
          @MonitorType = monitortype
          @Namespace = namespace
          @Remark = remark
          @Enable = enable
          @ProjectId = projectid
          @ConditionTemplateId = conditiontemplateid
          @Condition = condition
          @EventCondition = eventcondition
          @NoticeIds = noticeids
          @TriggerTasks = triggertasks
          @Filter = filter
          @GroupBy = groupby
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyName = params['PolicyName']
          @MonitorType = params['MonitorType']
          @Namespace = params['Namespace']
          @Remark = params['Remark']
          @Enable = params['Enable']
          @ProjectId = params['ProjectId']
          @ConditionTemplateId = params['ConditionTemplateId']
          unless params['Condition'].nil?
            @Condition = AlarmPolicyCondition.new
            @Condition.deserialize(params['Condition'])
          end
          unless params['EventCondition'].nil?
            @EventCondition = AlarmPolicyEventCondition.new
            @EventCondition.deserialize(params['EventCondition'])
          end
          @NoticeIds = params['NoticeIds']
          unless params['TriggerTasks'].nil?
            @TriggerTasks = []
            params['TriggerTasks'].each do |i|
              alarmpolicytriggertask_tmp = AlarmPolicyTriggerTask.new
              alarmpolicytriggertask_tmp.deserialize(i)
              @TriggerTasks << alarmpolicytriggertask_tmp
            end
          end
          unless params['Filter'].nil?
            @Filter = AlarmPolicyFilter.new
            @Filter.deserialize(params['Filter'])
          end
          @GroupBy = params['GroupBy']
        end
      end

      # CreateAlarmPolicy返回参数结构体
      class CreateAlarmPolicyResponse < TencentCloud::Common::AbstractModel
        # @param PolicyId: 告警策略 ID
        # @type PolicyId: String
        # @param OriginId: 可用于实例、实例组的绑定和解绑接口([BindingPolicyObject](https://cloud.tencent.com/document/product/248/40421)、[UnBindingAllPolicyObject](https://cloud.tencent.com/document/product/248/40568)、[UnBindingPolicyObject](https://cloud.tencent.com/document/product/248/40567))的策略 ID
        # @type OriginId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :PolicyId, :OriginId, :RequestId
        
        def initialize(policyid=nil, originid=nil, requestid=nil)
          @PolicyId = policyid
          @OriginId = originid
          @RequestId = requestid
        end

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

      # CreateAlertRule请求参数结构体
      class CreateAlertRuleRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param RuleName: 规则名称
        # @type RuleName: String
        # @param Expr: 规则表达式
        # @type Expr: String
        # @param Receivers: 告警通知模板 ID 列表
        # @type Receivers: Array
        # @param RuleState: 规则状态码,取值如下:
        # <li>2=RuleEnabled</li>
        # <li>3=RuleDisabled</li>
        # @type RuleState: Integer
        # @param Duration: 规则报警持续时间
        # @type Duration: String
        # @param Labels: 标签列表
        # @type Labels: Array
        # @param Annotations: 注释列表。

        # 告警对象和告警消息是 Prometheus Rule Annotations 的特殊字段,需要通过 annotations 来传递,对应的 Key 分别为summary/description。
        # @type Annotations: Array
        # @param Type: 报警策略模板分类
        # @type Type: String

        attr_accessor :InstanceId, :RuleName, :Expr, :Receivers, :RuleState, :Duration, :Labels, :Annotations, :Type
        
        def initialize(instanceid=nil, rulename=nil, expr=nil, receivers=nil, rulestate=nil, duration=nil, labels=nil, annotations=nil, type=nil)
          @InstanceId = instanceid
          @RuleName = rulename
          @Expr = expr
          @Receivers = receivers
          @RuleState = rulestate
          @Duration = duration
          @Labels = labels
          @Annotations = annotations
          @Type = type
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @RuleName = params['RuleName']
          @Expr = params['Expr']
          @Receivers = params['Receivers']
          @RuleState = params['RuleState']
          @Duration = params['Duration']
          unless params['Labels'].nil?
            @Labels = []
            params['Labels'].each do |i|
              prometheusrulekv_tmp = PrometheusRuleKV.new
              prometheusrulekv_tmp.deserialize(i)
              @Labels << prometheusrulekv_tmp
            end
          end
          unless params['Annotations'].nil?
            @Annotations = []
            params['Annotations'].each do |i|
              prometheusrulekv_tmp = PrometheusRuleKV.new
              prometheusrulekv_tmp.deserialize(i)
              @Annotations << prometheusrulekv_tmp
            end
          end
          @Type = params['Type']
        end
      end

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

        attr_accessor :RuleId, :RequestId
        
        def initialize(ruleid=nil, requestid=nil)
          @RuleId = ruleid
          @RequestId = requestid
        end

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

      # 创建策略传入的阈值告警条件
      class CreatePolicyGroupCondition < TencentCloud::Common::AbstractModel
        # @param MetricId: 指标Id
        # @type MetricId: Integer
        # @param AlarmNotifyType: 告警发送收敛类型。0连续告警,1指数告警
        # @type AlarmNotifyType: Integer
        # @param AlarmNotifyPeriod: 告警发送周期单位秒。<0 不触发, 0 只触发一次, >0 每隔triggerTime秒触发一次
        # @type AlarmNotifyPeriod: Integer
        # @param CalcType: 比较类型,1表示大于,2表示大于等于,3表示小于,4表示小于等于,5表示相等,6表示不相等。如果指标有配置默认比较类型值可以不填。
        # @type CalcType: Integer
        # @param CalcValue: 比较的值,如果指标不必须CalcValue可不填
        # @type CalcValue: Float
        # @param CalcPeriod: 数据聚合周期(单位秒),若指标有默认值可不填
        # @type CalcPeriod: Integer
        # @param ContinuePeriod: 持续几个检测周期触发规则会告警
        # @type ContinuePeriod: Integer
        # @param RuleId: 如果通过模版创建,需要传入模版中该指标的对应RuleId
        # @type RuleId: Integer

        attr_accessor :MetricId, :AlarmNotifyType, :AlarmNotifyPeriod, :CalcType, :CalcValue, :CalcPeriod, :ContinuePeriod, :RuleId
        
        def initialize(metricid=nil, alarmnotifytype=nil, alarmnotifyperiod=nil, calctype=nil, calcvalue=nil, calcperiod=nil, continueperiod=nil, ruleid=nil)
          @MetricId = metricid
          @AlarmNotifyType = alarmnotifytype
          @AlarmNotifyPeriod = alarmnotifyperiod
          @CalcType = calctype
          @CalcValue = calcvalue
          @CalcPeriod = calcperiod
          @ContinuePeriod = continueperiod
          @RuleId = ruleid
        end

        def deserialize(params)
          @MetricId = params['MetricId']
          @AlarmNotifyType = params['AlarmNotifyType']
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @CalcType = params['CalcType']
          @CalcValue = params['CalcValue']
          @CalcPeriod = params['CalcPeriod']
          @ContinuePeriod = params['ContinuePeriod']
          @RuleId = params['RuleId']
        end
      end

      # 创建策略传入的事件告警条件
      class CreatePolicyGroupEventCondition < TencentCloud::Common::AbstractModel
        # @param EventId: 告警事件的Id
        # @type EventId: Integer
        # @param AlarmNotifyType: 告警发送收敛类型。0连续告警,1指数告警
        # @type AlarmNotifyType: Integer
        # @param AlarmNotifyPeriod: 告警发送周期单位秒。<0 不触发, 0 只触发一次, >0 每隔triggerTime秒触发一次
        # @type AlarmNotifyPeriod: Integer
        # @param RuleId: 如果通过模版创建,需要传入模版中该指标的对应RuleId
        # @type RuleId: Integer

        attr_accessor :EventId, :AlarmNotifyType, :AlarmNotifyPeriod, :RuleId
        
        def initialize(eventid=nil, alarmnotifytype=nil, alarmnotifyperiod=nil, ruleid=nil)
          @EventId = eventid
          @AlarmNotifyType = alarmnotifytype
          @AlarmNotifyPeriod = alarmnotifyperiod
          @RuleId = ruleid
        end

        def deserialize(params)
          @EventId = params['EventId']
          @AlarmNotifyType = params['AlarmNotifyType']
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @RuleId = params['RuleId']
        end
      end

      # CreatePolicyGroup请求参数结构体
      class CreatePolicyGroupRequest < TencentCloud::Common::AbstractModel
        # @param GroupName: 组策略名称
        # @type GroupName: String
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param ViewName: 策略组所属视图的名称,若通过模版创建,可不传入
        # @type ViewName: String
        # @param ProjectId: 策略组所属项目Id,会进行鉴权操作
        # @type ProjectId: Integer
        # @param ConditionTempGroupId: 模版策略组Id, 通过模版创建时才需要传
        # @type ConditionTempGroupId: Integer
        # @param IsShielded: 是否屏蔽策略组,0表示不屏蔽,1表示屏蔽。不填默认为0
        # @type IsShielded: Integer
        # @param Remark: 策略组的备注信息
        # @type Remark: String
        # @param InsertTime: 插入时间,戳格式为Unix时间戳,不填则按后台处理时间填充
        # @type InsertTime: Integer
        # @param Conditions: 策略组中的阈值告警规则
        # @type Conditions: Array
        # @param EventConditions: 策略组中的事件告警规则
        # @type EventConditions: Array
        # @param BackEndCall: 是否为后端调用。当且仅当值为1时,后台拉取策略模版中的规则填充入Conditions以及EventConditions字段
        # @type BackEndCall: Integer
        # @param IsUnionRule: 指标告警规则的且或关系,0表示或规则(满足任意规则就告警),1表示且规则(满足所有规则才告警)
        # @type IsUnionRule: Integer

        attr_accessor :GroupName, :Module, :ViewName, :ProjectId, :ConditionTempGroupId, :IsShielded, :Remark, :InsertTime, :Conditions, :EventConditions, :BackEndCall, :IsUnionRule
        
        def initialize(groupname=nil, _module=nil, viewname=nil, projectid=nil, conditiontempgroupid=nil, isshielded=nil, remark=nil, inserttime=nil, conditions=nil, eventconditions=nil, backendcall=nil, isunionrule=nil)
          @GroupName = groupname
          @Module = _module
          @ViewName = viewname
          @ProjectId = projectid
          @ConditionTempGroupId = conditiontempgroupid
          @IsShielded = isshielded
          @Remark = remark
          @InsertTime = inserttime
          @Conditions = conditions
          @EventConditions = eventconditions
          @BackEndCall = backendcall
          @IsUnionRule = isunionrule
        end

        def deserialize(params)
          @GroupName = params['GroupName']
          @Module = params['Module']
          @ViewName = params['ViewName']
          @ProjectId = params['ProjectId']
          @ConditionTempGroupId = params['ConditionTempGroupId']
          @IsShielded = params['IsShielded']
          @Remark = params['Remark']
          @InsertTime = params['InsertTime']
          unless params['Conditions'].nil?
            @Conditions = []
            params['Conditions'].each do |i|
              createpolicygroupcondition_tmp = CreatePolicyGroupCondition.new
              createpolicygroupcondition_tmp.deserialize(i)
              @Conditions << createpolicygroupcondition_tmp
            end
          end
          unless params['EventConditions'].nil?
            @EventConditions = []
            params['EventConditions'].each do |i|
              createpolicygroupeventcondition_tmp = CreatePolicyGroupEventCondition.new
              createpolicygroupeventcondition_tmp.deserialize(i)
              @EventConditions << createpolicygroupeventcondition_tmp
            end
          end
          @BackEndCall = params['BackEndCall']
          @IsUnionRule = params['IsUnionRule']
        end
      end

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

        attr_accessor :GroupId, :RequestId
        
        def initialize(groupid=nil, requestid=nil)
          @GroupId = groupid
          @RequestId = requestid
        end

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

      # CreateServiceDiscovery请求参数结构体
      class CreateServiceDiscoveryRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param KubeClusterId: <li>类型为TKE:对应集成的腾讯云容器服务集群 ID</li>
        # @type KubeClusterId: String
        # @param KubeType: 用户 Kubernetes 集群类型:
        # <li> 1 = 容器服务集群(TKE) </li>
        # @type KubeType: Integer
        # @param Type: 服务发现类型,取值如下:
        # <li> 1 = ServiceMonitor</li>
        # <li> 2 = PodMonitor</li>
        # <li> 3 = JobMonitor</li>
        # @type Type: Integer
        # @param Yaml: 服务发现配置信息
        # @type Yaml: String

        attr_accessor :InstanceId, :KubeClusterId, :KubeType, :Type, :Yaml
        
        def initialize(instanceid=nil, kubeclusterid=nil, kubetype=nil, type=nil, yaml=nil)
          @InstanceId = instanceid
          @KubeClusterId = kubeclusterid
          @KubeType = kubetype
          @Type = type
          @Yaml = yaml
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @KubeClusterId = params['KubeClusterId']
          @KubeType = params['KubeType']
          @Type = params['Type']
          @Yaml = params['Yaml']
        end
      end

      # CreateServiceDiscovery返回参数结构体
      class CreateServiceDiscoveryResponse < TencentCloud::Common::AbstractModel
        # @param ServiceDiscovery: 创建成功之后,返回对应服务发现信息
        # @type ServiceDiscovery: :class:`Tencentcloud::Monitor.v20180724.models.ServiceDiscoveryItem`
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ServiceDiscovery, :RequestId
        
        def initialize(servicediscovery=nil, requestid=nil)
          @ServiceDiscovery = servicediscovery
          @RequestId = requestid
        end

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

      # 监控数据点
      class DataPoint < TencentCloud::Common::AbstractModel
        # @param Dimensions: 实例对象维度组合
        # @type Dimensions: Array
        # @param Timestamps: 时间戳数组,表示那些时间点有数据,缺失的时间戳,没有数据点,可以理解为掉点了
        # @type Timestamps: Array
        # @param Values: 监控值数组,该数组和Timestamps一一对应
        # @type Values: Array

        attr_accessor :Dimensions, :Timestamps, :Values
        
        def initialize(dimensions=nil, timestamps=nil, values=nil)
          @Dimensions = dimensions
          @Timestamps = timestamps
          @Values = values
        end

        def deserialize(params)
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              dimension_tmp = Dimension.new
              dimension_tmp.deserialize(i)
              @Dimensions << dimension_tmp
            end
          end
          @Timestamps = params['Timestamps']
          @Values = params['Values']
        end
      end

      # DeleteAlarmNotices请求参数结构体
      class DeleteAlarmNoticesRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param NoticeIds: 告警通知模板id列表
        # @type NoticeIds: Array

        attr_accessor :Module, :NoticeIds
        
        def initialize(_module=nil, noticeids=nil)
          @Module = _module
          @NoticeIds = noticeids
        end

        def deserialize(params)
          @Module = params['Module']
          @NoticeIds = params['NoticeIds']
        end
      end

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

      # DeleteAlarmPolicy请求参数结构体
      class DeleteAlarmPolicyRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,固定值 monitor
        # @type Module: String
        # @param PolicyIds: 告警策略 ID 列表
        # @type PolicyIds: Array

        attr_accessor :Module, :PolicyIds
        
        def initialize(_module=nil, policyids=nil)
          @Module = _module
          @PolicyIds = policyids
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyIds = params['PolicyIds']
        end
      end

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

      # DeleteAlertRules请求参数结构体
      class DeleteAlertRulesRequest < TencentCloud::Common::AbstractModel
        # @param RuleIds: 规则 ID 列表
        # @type RuleIds: Array
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String

        attr_accessor :RuleIds, :InstanceId
        
        def initialize(ruleids=nil, instanceid=nil)
          @RuleIds = ruleids
          @InstanceId = instanceid
        end

        def deserialize(params)
          @RuleIds = params['RuleIds']
          @InstanceId = params['InstanceId']
        end
      end

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

      # DeletePolicyGroup请求参数结构体
      class DeletePolicyGroupRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param GroupId: 策略组id
        # @type GroupId: Array

        attr_accessor :Module, :GroupId
        
        def initialize(_module=nil, groupid=nil)
          @Module = _module
          @GroupId = groupid
        end

        def deserialize(params)
          @Module = params['Module']
          @GroupId = params['GroupId']
        end
      end

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

      # DeleteServiceDiscovery请求参数结构体
      class DeleteServiceDiscoveryRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param KubeClusterId: <li>类型是 TKE,为对应的腾讯云容器服务集群 ID</li>
        # @type KubeClusterId: String
        # @param KubeType: 用户 Kubernetes 集群类型:
        # <li> 1 = 容器服务集群(TKE) </li>
        # @type KubeType: Integer
        # @param Type: 服务发现类型,取值如下:
        # <li> 1 = ServiceMonitor</li>
        # <li> 2 = PodMonitor</li>
        # <li> 3 = PodMonitor</li>
        # @type Type: Integer
        # @param Yaml: 服务发现配置信息
        # @type Yaml: String

        attr_accessor :InstanceId, :KubeClusterId, :KubeType, :Type, :Yaml
        
        def initialize(instanceid=nil, kubeclusterid=nil, kubetype=nil, type=nil, yaml=nil)
          @InstanceId = instanceid
          @KubeClusterId = kubeclusterid
          @KubeType = kubetype
          @Type = type
          @Yaml = yaml
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @KubeClusterId = params['KubeClusterId']
          @KubeType = params['KubeType']
          @Type = params['Type']
          @Yaml = params['Yaml']
        end
      end

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

      # DescribeAccidentEventList接口的出参类型
      class DescribeAccidentEventListAlarms < TencentCloud::Common::AbstractModel
        # @param BusinessTypeDesc: 事件分类
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type BusinessTypeDesc: String
        # @param AccidentTypeDesc: 事件类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AccidentTypeDesc: String
        # @param BusinessID: 事件分类的ID,1表示服务问题,2表示其他订阅
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type BusinessID: Integer
        # @param EventStatus: 事件状态的ID,0表示已恢复,1表示未恢复
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventStatus: Integer
        # @param AffectResource: 影响的对象
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AffectResource: String
        # @param Region: 事件的地域
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Region: String
        # @param OccurTime: 事件发生的时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OccurTime: String
        # @param UpdateTime: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdateTime: String

        attr_accessor :BusinessTypeDesc, :AccidentTypeDesc, :BusinessID, :EventStatus, :AffectResource, :Region, :OccurTime, :UpdateTime
        
        def initialize(businesstypedesc=nil, accidenttypedesc=nil, businessid=nil, eventstatus=nil, affectresource=nil, region=nil, occurtime=nil, updatetime=nil)
          @BusinessTypeDesc = businesstypedesc
          @AccidentTypeDesc = accidenttypedesc
          @BusinessID = businessid
          @EventStatus = eventstatus
          @AffectResource = affectresource
          @Region = region
          @OccurTime = occurtime
          @UpdateTime = updatetime
        end

        def deserialize(params)
          @BusinessTypeDesc = params['BusinessTypeDesc']
          @AccidentTypeDesc = params['AccidentTypeDesc']
          @BusinessID = params['BusinessID']
          @EventStatus = params['EventStatus']
          @AffectResource = params['AffectResource']
          @Region = params['Region']
          @OccurTime = params['OccurTime']
          @UpdateTime = params['UpdateTime']
        end
      end

      # DescribeAccidentEventList请求参数结构体
      class DescribeAccidentEventListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 接口模块名,当前接口取值monitor
        # @type Module: String
        # @param StartTime: 起始时间,默认一天前的时间戳
        # @type StartTime: Integer
        # @param EndTime: 结束时间,默认当前时间戳
        # @type EndTime: Integer
        # @param Limit: 分页参数,每页返回的数量,取值1~100,默认20
        # @type Limit: Integer
        # @param Offset: 分页参数,页偏移量,从0开始计数,默认0
        # @type Offset: Integer
        # @param UpdateTimeOrder: 根据UpdateTime排序的规则,取值asc或desc
        # @type UpdateTimeOrder: String
        # @param OccurTimeOrder: 根据OccurTime排序的规则,取值asc或desc(优先根据UpdateTimeOrder排序)
        # @type OccurTimeOrder: String
        # @param AccidentType: 根据事件类型过滤,1表示服务问题,2表示其他订阅
        # @type AccidentType: Array
        # @param AccidentEvent: 根据事件过滤,1表示云服务器存储问题,2表示云服务器网络连接问题,3表示云服务器运行异常,202表示运营商网络抖动
        # @type AccidentEvent: Array
        # @param AccidentStatus: 根据事件状态过滤,0表示已恢复,1表示未恢复
        # @type AccidentStatus: Array
        # @param AccidentRegion: 根据事件地域过滤,gz表示广州,sh表示上海等
        # @type AccidentRegion: Array
        # @param AffectResource: 根据影响资源过滤,比如ins-19a06bka
        # @type AffectResource: String

        attr_accessor :Module, :StartTime, :EndTime, :Limit, :Offset, :UpdateTimeOrder, :OccurTimeOrder, :AccidentType, :AccidentEvent, :AccidentStatus, :AccidentRegion, :AffectResource
        
        def initialize(_module=nil, starttime=nil, endtime=nil, limit=nil, offset=nil, updatetimeorder=nil, occurtimeorder=nil, accidenttype=nil, accidentevent=nil, accidentstatus=nil, accidentregion=nil, affectresource=nil)
          @Module = _module
          @StartTime = starttime
          @EndTime = endtime
          @Limit = limit
          @Offset = offset
          @UpdateTimeOrder = updatetimeorder
          @OccurTimeOrder = occurtimeorder
          @AccidentType = accidenttype
          @AccidentEvent = accidentevent
          @AccidentStatus = accidentstatus
          @AccidentRegion = accidentregion
          @AffectResource = affectresource
        end

        def deserialize(params)
          @Module = params['Module']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @UpdateTimeOrder = params['UpdateTimeOrder']
          @OccurTimeOrder = params['OccurTimeOrder']
          @AccidentType = params['AccidentType']
          @AccidentEvent = params['AccidentEvent']
          @AccidentStatus = params['AccidentStatus']
          @AccidentRegion = params['AccidentRegion']
          @AffectResource = params['AffectResource']
        end
      end

      # DescribeAccidentEventList返回参数结构体
      class DescribeAccidentEventListResponse < TencentCloud::Common::AbstractModel
        # @param Alarms: 平台事件列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Alarms: Array
        # @param Total: 平台事件的总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Alarms, :Total, :RequestId
        
        def initialize(alarms=nil, total=nil, requestid=nil)
          @Alarms = alarms
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Alarms'].nil?
            @Alarms = []
            params['Alarms'].each do |i|
              describeaccidenteventlistalarms_tmp = DescribeAccidentEventListAlarms.new
              describeaccidenteventlistalarms_tmp.deserialize(i)
              @Alarms << describeaccidenteventlistalarms_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeAlarmEvents请求参数结构体
      class DescribeAlarmEventsRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,固定值 monitor
        # @type Module: String
        # @param Namespace: 告警策略类型,由 DescribeAllNamespaces 获得,例如 cvm_device
        # @type Namespace: String
        # @param MonitorType: 监控类型,如 MT_QCE。如果不填默认为 MT_QCE。
        # @type MonitorType: String

        attr_accessor :Module, :Namespace, :MonitorType
        
        def initialize(_module=nil, namespace=nil, monitortype=nil)
          @Module = _module
          @Namespace = namespace
          @MonitorType = monitortype
        end

        def deserialize(params)
          @Module = params['Module']
          @Namespace = params['Namespace']
          @MonitorType = params['MonitorType']
        end
      end

      # DescribeAlarmEvents返回参数结构体
      class DescribeAlarmEventsResponse < TencentCloud::Common::AbstractModel
        # @param Events: 告警事件列表
        # @type Events: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Events, :RequestId
        
        def initialize(events=nil, requestid=nil)
          @Events = events
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Events'].nil?
            @Events = []
            params['Events'].each do |i|
              alarmevent_tmp = AlarmEvent.new
              alarmevent_tmp.deserialize(i)
              @Events << alarmevent_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeAlarmHistories请求参数结构体
      class DescribeAlarmHistoriesRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param PageNumber: 页数,从 1 开始计数,默认 1
        # @type PageNumber: Integer
        # @param PageSize: 每页的数量,取值1~100,默认20
        # @type PageSize: Integer
        # @param Order: 默认按首次出现时间倒序排列 "ASC"=正序 "DESC"=逆序
        # @type Order: String
        # @param StartTime: 起始时间,默认一天前的时间戳。对应 `FirstOccurTime` 告警首次出现时间,告警历史的 `FirstOccurTime` 晚于 `StartTime` 才可能被搜索到。
        # @type StartTime: Integer
        # @param EndTime: 结束时间,默认当前时间戳。对应 `FirstOccurTime` 告警首次出现时间,告警历史的 `FirstOccurTime` 早于 `EndTime` 才可能被搜索到。
        # @type EndTime: Integer
        # @param MonitorTypes: 根据监控类型过滤 不选默认查所有类型 "MT_QCE"=云产品监控
        # @type MonitorTypes: Array
        # @param AlarmObject: 根据告警对象过滤 字符串模糊搜索
        # @type AlarmObject: String
        # @param AlarmStatus: 根据告警状态过滤 ALARM=未恢复 OK=已恢复 NO_CONF=已失效 NO_DATA=数据不足,不选默认查所有
        # @type AlarmStatus: Array
        # @param ProjectIds: 根据项目ID过滤,-1=无项目 0=默认项目
        # 可在此页面查询 [项目管理](https://console.cloud.tencent.com/project)
        # @type ProjectIds: Array
        # @param InstanceGroupIds: 根据实例组ID过滤
        # @type InstanceGroupIds: Array
        # @param Namespaces: 根据策略类型过滤,策略类型是监控类型之下的概念,在这里两者都需要传入,例如 `[{"MonitorType": "MT_QCE", "Namespace": "cvm_device"}]`
        # 可使用 [查询所有名字空间 DescribeAllNamespaces](https://cloud.tencent.com/document/product/248/48683) 接口查询
        # @type Namespaces: Array
        # @param MetricNames: 根据指标名过滤
        # @type MetricNames: Array
        # @param PolicyName: 根据策略名称模糊搜索
        # @type PolicyName: String
        # @param Content: 根据告警内容模糊搜索
        # @type Content: String
        # @param ReceiverUids: 根据接收人搜索,可以使用“访问管理”的 [拉取子用户 ListUsers](https://cloud.tencent.com/document/product/598/34587) 接口获取用户列表 或 [查询子用户 GetUser](https://cloud.tencent.com/document/product/598/34590) 接口查询子用户详情,此处填入返回结果中的 `Uid` 字段
        # @type ReceiverUids: Array
        # @param ReceiverGroups: 根据接收组搜索,可以使用“访问管理”的 [查询用户组列表 ListGroups](https://cloud.tencent.com/document/product/598/34589) 接口获取用户组列表 或 [列出用户关联的用户组 ListGroupsForUser](https://cloud.tencent.com/document/product/598/34588) 查询某个子用户所在的用户组列表 ,此处填入返回结果中的 `GroupId ` 字段
        # @type ReceiverGroups: Array
        # @param PolicyIds: 根据告警策略 Id 列表搜索
        # @type PolicyIds: Array

        attr_accessor :Module, :PageNumber, :PageSize, :Order, :StartTime, :EndTime, :MonitorTypes, :AlarmObject, :AlarmStatus, :ProjectIds, :InstanceGroupIds, :Namespaces, :MetricNames, :PolicyName, :Content, :ReceiverUids, :ReceiverGroups, :PolicyIds
        
        def initialize(_module=nil, pagenumber=nil, pagesize=nil, order=nil, starttime=nil, endtime=nil, monitortypes=nil, alarmobject=nil, alarmstatus=nil, projectids=nil, instancegroupids=nil, namespaces=nil, metricnames=nil, policyname=nil, content=nil, receiveruids=nil, receivergroups=nil, policyids=nil)
          @Module = _module
          @PageNumber = pagenumber
          @PageSize = pagesize
          @Order = order
          @StartTime = starttime
          @EndTime = endtime
          @MonitorTypes = monitortypes
          @AlarmObject = alarmobject
          @AlarmStatus = alarmstatus
          @ProjectIds = projectids
          @InstanceGroupIds = instancegroupids
          @Namespaces = namespaces
          @MetricNames = metricnames
          @PolicyName = policyname
          @Content = content
          @ReceiverUids = receiveruids
          @ReceiverGroups = receivergroups
          @PolicyIds = policyids
        end

        def deserialize(params)
          @Module = params['Module']
          @PageNumber = params['PageNumber']
          @PageSize = params['PageSize']
          @Order = params['Order']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @MonitorTypes = params['MonitorTypes']
          @AlarmObject = params['AlarmObject']
          @AlarmStatus = params['AlarmStatus']
          @ProjectIds = params['ProjectIds']
          @InstanceGroupIds = params['InstanceGroupIds']
          unless params['Namespaces'].nil?
            @Namespaces = []
            params['Namespaces'].each do |i|
              monitortypenamespace_tmp = MonitorTypeNamespace.new
              monitortypenamespace_tmp.deserialize(i)
              @Namespaces << monitortypenamespace_tmp
            end
          end
          @MetricNames = params['MetricNames']
          @PolicyName = params['PolicyName']
          @Content = params['Content']
          @ReceiverUids = params['ReceiverUids']
          @ReceiverGroups = params['ReceiverGroups']
          @PolicyIds = params['PolicyIds']
        end
      end

      # DescribeAlarmHistories返回参数结构体
      class DescribeAlarmHistoriesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 总数
        # @type TotalCount: Integer
        # @param Histories: 告警历史列表
        # @type Histories: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :Histories, :RequestId
        
        def initialize(totalcount=nil, histories=nil, requestid=nil)
          @TotalCount = totalcount
          @Histories = histories
          @RequestId = requestid
        end

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

      # DescribeAlarmMetrics请求参数结构体
      class DescribeAlarmMetricsRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param MonitorType: 监控类型过滤 "MT_QCE"=云产品监控
        # @type MonitorType: String
        # @param Namespace: 告警策略类型,由 DescribeAllNamespaces 获得,例如 cvm_device
        # @type Namespace: String

        attr_accessor :Module, :MonitorType, :Namespace
        
        def initialize(_module=nil, monitortype=nil, namespace=nil)
          @Module = _module
          @MonitorType = monitortype
          @Namespace = namespace
        end

        def deserialize(params)
          @Module = params['Module']
          @MonitorType = params['MonitorType']
          @Namespace = params['Namespace']
        end
      end

      # DescribeAlarmMetrics返回参数结构体
      class DescribeAlarmMetricsResponse < TencentCloud::Common::AbstractModel
        # @param Metrics: 告警指标列表
        # @type Metrics: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Metrics, :RequestId
        
        def initialize(metrics=nil, requestid=nil)
          @Metrics = metrics
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Metrics'].nil?
            @Metrics = []
            params['Metrics'].each do |i|
              metric_tmp = Metric.new
              metric_tmp.deserialize(i)
              @Metrics << metric_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeAlarmNoticeCallbacks请求参数结构体
      class DescribeAlarmNoticeCallbacksRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String

        attr_accessor :Module
        
        def initialize(_module=nil)
          @Module = _module
        end

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

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

        attr_accessor :URLNotices, :RequestId
        
        def initialize(urlnotices=nil, requestid=nil)
          @URLNotices = urlnotices
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['URLNotices'].nil?
            @URLNotices = []
            params['URLNotices'].each do |i|
              urlnotice_tmp = URLNotice.new
              urlnotice_tmp.deserialize(i)
              @URLNotices << urlnotice_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeAlarmNotice请求参数结构体
      class DescribeAlarmNoticeRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param NoticeId: 告警通知模板 id
        # @type NoticeId: String

        attr_accessor :Module, :NoticeId
        
        def initialize(_module=nil, noticeid=nil)
          @Module = _module
          @NoticeId = noticeid
        end

        def deserialize(params)
          @Module = params['Module']
          @NoticeId = params['NoticeId']
        end
      end

      # DescribeAlarmNotice返回参数结构体
      class DescribeAlarmNoticeResponse < TencentCloud::Common::AbstractModel
        # @param Notice: 告警通知模板详细信息
        # @type Notice: :class:`Tencentcloud::Monitor.v20180724.models.AlarmNotice`
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Notice, :RequestId
        
        def initialize(notice=nil, requestid=nil)
          @Notice = notice
          @RequestId = requestid
        end

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

      # DescribeAlarmNotices请求参数结构体
      class DescribeAlarmNoticesRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param PageNumber: 页码 最小为1
        # @type PageNumber: Integer
        # @param PageSize: 分页大小 1~200
        # @type PageSize: Integer
        # @param Order: 按更新时间排序方式 ASC=正序 DESC=倒序
        # @type Order: String
        # @param OwnerUid: 主账号 uid 用于创建预设通知
        # @type OwnerUid: Integer
        # @param Name: 告警通知模板名称 用来模糊搜索
        # @type Name: String
        # @param ReceiverType: 根据接收人过滤告警通知模板需要选定通知用户类型 USER=用户 GROUP=用户组 传空=不按接收人过滤
        # @type ReceiverType: String
        # @param UserIds: 接收对象列表
        # @type UserIds: Array
        # @param GroupIds: 接收组列表
        # @type GroupIds: Array
        # @param NoticeIds: 根据通知模板 id 过滤,空数组/不传则不过滤
        # @type NoticeIds: Array

        attr_accessor :Module, :PageNumber, :PageSize, :Order, :OwnerUid, :Name, :ReceiverType, :UserIds, :GroupIds, :NoticeIds
        
        def initialize(_module=nil, pagenumber=nil, pagesize=nil, order=nil, owneruid=nil, name=nil, receivertype=nil, userids=nil, groupids=nil, noticeids=nil)
          @Module = _module
          @PageNumber = pagenumber
          @PageSize = pagesize
          @Order = order
          @OwnerUid = owneruid
          @Name = name
          @ReceiverType = receivertype
          @UserIds = userids
          @GroupIds = groupids
          @NoticeIds = noticeids
        end

        def deserialize(params)
          @Module = params['Module']
          @PageNumber = params['PageNumber']
          @PageSize = params['PageSize']
          @Order = params['Order']
          @OwnerUid = params['OwnerUid']
          @Name = params['Name']
          @ReceiverType = params['ReceiverType']
          @UserIds = params['UserIds']
          @GroupIds = params['GroupIds']
          @NoticeIds = params['NoticeIds']
        end
      end

      # DescribeAlarmNotices返回参数结构体
      class DescribeAlarmNoticesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 告警通知模板总数
        # @type TotalCount: Integer
        # @param Notices: 告警通知模板列表
        # @type Notices: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :Notices, :RequestId
        
        def initialize(totalcount=nil, notices=nil, requestid=nil)
          @TotalCount = totalcount
          @Notices = notices
          @RequestId = requestid
        end

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

      # DescribeAlarmPolicies请求参数结构体
      class DescribeAlarmPoliciesRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param PageNumber: 页数,从 1 开始计数,默认 1
        # @type PageNumber: Integer
        # @param PageSize: 每页的数量,取值1~100,默认20
        # @type PageSize: Integer
        # @param PolicyName: 按策略名称模糊搜索
        # @type PolicyName: String
        # @param MonitorTypes: 根据监控类型过滤 不选默认查所有类型 "MT_QCE"=云产品监控
        # @type MonitorTypes: Array
        # @param Namespaces: 根据命名空间过滤,不同策略类型的值详见
        # [策略类型列表](https://cloud.tencent.com/document/product/248/50397)
        # @type Namespaces: Array
        # @param Dimensions: 告警对象列表,JSON 字符串。外层数组,对应多个实例,内层为对象的维度。例如“云服务器-基础监控”可写为:
        # `[ {"Dimensions": {"unInstanceId": "ins-qr8d555g"}}, {"Dimensions": {"unInstanceId": "ins-qr8d555h"}} ]`
        # 具体也可以参考下方的示例 2。

        # 不同云产品参数示例详见 [维度信息Dimensions列表](https://cloud.tencent.com/document/product/248/50397)

        # 注意:如果NeedCorrespondence传入1,即需要返回策略与实例对应关系,请传入不多于20个告警对象维度,否则容易请求超时
        # @type Dimensions: String
        # @param ReceiverUids: 根据接收人搜索,可以使用“访问管理”的 [拉取子用户 ListUsers](https://cloud.tencent.com/document/product/598/34587) 接口获取用户列表 或 [查询子用户 GetUser](https://cloud.tencent.com/document/product/598/34590) 接口查询子用户详情,此处填入返回结果中的 `Uid` 字段
        # @type ReceiverUids: Array
        # @param ReceiverGroups: 根据接收组搜索,可以使用“访问管理”的 [查询用户组列表 ListGroups](https://cloud.tencent.com/document/product/598/34589) 接口获取用户组列表 或 [列出用户关联的用户组 ListGroupsForUser](https://cloud.tencent.com/document/product/598/34588) 查询某个子用户所在的用户组列表 ,此处填入返回结果中的 `GroupId ` 字段
        # @type ReceiverGroups: Array
        # @param PolicyType: 根据默认策略筛选 不传展示全部策略 DEFAULT=展示默认策略 NOT_DEFAULT=展示非默认策略
        # @type PolicyType: Array
        # @param Field: 排序字段,例如按照最后修改时间排序,Field: "UpdateTime"
        # @type Field: String
        # @param Order: 排序顺序:升序:ASC  降序:DESC
        # @type Order: String
        # @param ProjectIds: 策略所属项目的id数组,可在此页面查看
        # [项目管理](https://console.cloud.tencent.com/project)
        # @type ProjectIds: Array
        # @param NoticeIds: 通知模版的id列表,可查询通知模版列表获取。
        # 可使用 [查询通知模板列表](https://cloud.tencent.com/document/product/248/51280) 接口查询。
        # @type NoticeIds: Array
        # @param RuleTypes: 根据触发条件筛选 不传展示全部策略 STATIC=展示静态阈值策略 DYNAMIC=展示动态阈值策略
        # @type RuleTypes: Array
        # @param Enable: 告警启停筛选,[1]:启用   [0]:停止,全部[0, 1]
        # @type Enable: Array
        # @param NotBindingNoticeRule: 传 1 查询未配置通知规则的告警策略;不传或传其他数值,查询所有策略。
        # @type NotBindingNoticeRule: Integer
        # @param InstanceGroupId: 实例分组id
        # @type InstanceGroupId: Integer
        # @param NeedCorrespondence: 是否需要策略与入参过滤维度参数的对应关系,1:是  0:否,默认为0
        # @type NeedCorrespondence: Integer

        attr_accessor :Module, :PageNumber, :PageSize, :PolicyName, :MonitorTypes, :Namespaces, :Dimensions, :ReceiverUids, :ReceiverGroups, :PolicyType, :Field, :Order, :ProjectIds, :NoticeIds, :RuleTypes, :Enable, :NotBindingNoticeRule, :InstanceGroupId, :NeedCorrespondence
        
        def initialize(_module=nil, pagenumber=nil, pagesize=nil, policyname=nil, monitortypes=nil, namespaces=nil, dimensions=nil, receiveruids=nil, receivergroups=nil, policytype=nil, field=nil, order=nil, projectids=nil, noticeids=nil, ruletypes=nil, enable=nil, notbindingnoticerule=nil, instancegroupid=nil, needcorrespondence=nil)
          @Module = _module
          @PageNumber = pagenumber
          @PageSize = pagesize
          @PolicyName = policyname
          @MonitorTypes = monitortypes
          @Namespaces = namespaces
          @Dimensions = dimensions
          @ReceiverUids = receiveruids
          @ReceiverGroups = receivergroups
          @PolicyType = policytype
          @Field = field
          @Order = order
          @ProjectIds = projectids
          @NoticeIds = noticeids
          @RuleTypes = ruletypes
          @Enable = enable
          @NotBindingNoticeRule = notbindingnoticerule
          @InstanceGroupId = instancegroupid
          @NeedCorrespondence = needcorrespondence
        end

        def deserialize(params)
          @Module = params['Module']
          @PageNumber = params['PageNumber']
          @PageSize = params['PageSize']
          @PolicyName = params['PolicyName']
          @MonitorTypes = params['MonitorTypes']
          @Namespaces = params['Namespaces']
          @Dimensions = params['Dimensions']
          @ReceiverUids = params['ReceiverUids']
          @ReceiverGroups = params['ReceiverGroups']
          @PolicyType = params['PolicyType']
          @Field = params['Field']
          @Order = params['Order']
          @ProjectIds = params['ProjectIds']
          @NoticeIds = params['NoticeIds']
          @RuleTypes = params['RuleTypes']
          @Enable = params['Enable']
          @NotBindingNoticeRule = params['NotBindingNoticeRule']
          @InstanceGroupId = params['InstanceGroupId']
          @NeedCorrespondence = params['NeedCorrespondence']
        end
      end

      # DescribeAlarmPolicies返回参数结构体
      class DescribeAlarmPoliciesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 策略总数
        # @type TotalCount: Integer
        # @param Policies: 策略数组
        # @type Policies: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :Policies, :RequestId
        
        def initialize(totalcount=nil, policies=nil, requestid=nil)
          @TotalCount = totalcount
          @Policies = policies
          @RequestId = requestid
        end

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

      # DescribeAlarmPolicy请求参数结构体
      class DescribeAlarmPolicyRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param PolicyId: 告警策略ID
        # @type PolicyId: String

        attr_accessor :Module, :PolicyId
        
        def initialize(_module=nil, policyid=nil)
          @Module = _module
          @PolicyId = policyid
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
        end
      end

      # DescribeAlarmPolicy返回参数结构体
      class DescribeAlarmPolicyResponse < TencentCloud::Common::AbstractModel
        # @param Policy: 策略详情
        # @type Policy: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicy`
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Policy, :RequestId
        
        def initialize(policy=nil, requestid=nil)
          @Policy = policy
          @RequestId = requestid
        end

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

      # DescribeAlertRules请求参数结构体
      class DescribeAlertRulesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param Limit: 返回数量,默认为 20,最大值为 100
        # @type Limit: Integer
        # @param Offset: 偏移量,默认为 0
        # @type Offset: Integer
        # @param RuleId: 规则 ID
        # @type RuleId: String
        # @param RuleState: 规则状态码,取值如下:
        # <li>2=RuleEnabled</li>
        # <li>3=RuleDisabled</li>
        # @type RuleState: Integer
        # @param RuleName: 规则名称
        # @type RuleName: String
        # @param Type: 报警策略模板分类
        # @type Type: String

        attr_accessor :InstanceId, :Limit, :Offset, :RuleId, :RuleState, :RuleName, :Type
        
        def initialize(instanceid=nil, limit=nil, offset=nil, ruleid=nil, rulestate=nil, rulename=nil, type=nil)
          @InstanceId = instanceid
          @Limit = limit
          @Offset = offset
          @RuleId = ruleid
          @RuleState = rulestate
          @RuleName = rulename
          @Type = type
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @RuleId = params['RuleId']
          @RuleState = params['RuleState']
          @RuleName = params['RuleName']
          @Type = params['Type']
        end
      end

      # DescribeAlertRules返回参数结构体
      class DescribeAlertRulesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 报警规则数量
        # @type TotalCount: Integer
        # @param AlertRuleSet: 报警规则详情
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlertRuleSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :AlertRuleSet, :RequestId
        
        def initialize(totalcount=nil, alertruleset=nil, requestid=nil)
          @TotalCount = totalcount
          @AlertRuleSet = alertruleset
          @RequestId = requestid
        end

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

      # DescribeAllNamespaces请求参数结构体
      class DescribeAllNamespacesRequest < TencentCloud::Common::AbstractModel
        # @param SceneType: 根据使用场景过滤 目前仅有"ST_ALARM"=告警类型
        # @type SceneType: String
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param MonitorTypes: 根据监控类型过滤 不填默认查所有类型 "MT_QCE"=云产品监控
        # @type MonitorTypes: Array
        # @param Ids: 根据namespace的Id过滤 不填默认查询所有
        # @type Ids: Array

        attr_accessor :SceneType, :Module, :MonitorTypes, :Ids
        
        def initialize(scenetype=nil, _module=nil, monitortypes=nil, ids=nil)
          @SceneType = scenetype
          @Module = _module
          @MonitorTypes = monitortypes
          @Ids = ids
        end

        def deserialize(params)
          @SceneType = params['SceneType']
          @Module = params['Module']
          @MonitorTypes = params['MonitorTypes']
          @Ids = params['Ids']
        end
      end

      # DescribeAllNamespaces返回参数结构体
      class DescribeAllNamespacesResponse < TencentCloud::Common::AbstractModel
        # @param QceNamespaces: 云产品的告警策略类型,已废弃
        # @type QceNamespaces: :class:`Tencentcloud::Monitor.v20180724.models.CommonNamespace`
        # @param CustomNamespaces: 其他告警策略类型,已废弃
        # @type CustomNamespaces: :class:`Tencentcloud::Monitor.v20180724.models.CommonNamespace`
        # @param QceNamespacesNew: 云产品的告警策略类型
        # @type QceNamespacesNew: Array
        # @param CustomNamespacesNew: 其他告警策略类型,暂不支持
        # @type CustomNamespacesNew: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :QceNamespaces, :CustomNamespaces, :QceNamespacesNew, :CustomNamespacesNew, :RequestId
        
        def initialize(qcenamespaces=nil, customnamespaces=nil, qcenamespacesnew=nil, customnamespacesnew=nil, requestid=nil)
          @QceNamespaces = qcenamespaces
          @CustomNamespaces = customnamespaces
          @QceNamespacesNew = qcenamespacesnew
          @CustomNamespacesNew = customnamespacesnew
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['QceNamespaces'].nil?
            @QceNamespaces = CommonNamespace.new
            @QceNamespaces.deserialize(params['QceNamespaces'])
          end
          unless params['CustomNamespaces'].nil?
            @CustomNamespaces = CommonNamespace.new
            @CustomNamespaces.deserialize(params['CustomNamespaces'])
          end
          unless params['QceNamespacesNew'].nil?
            @QceNamespacesNew = []
            params['QceNamespacesNew'].each do |i|
              commonnamespace_tmp = CommonNamespace.new
              commonnamespace_tmp.deserialize(i)
              @QceNamespacesNew << commonnamespace_tmp
            end
          end
          unless params['CustomNamespacesNew'].nil?
            @CustomNamespacesNew = []
            params['CustomNamespacesNew'].each do |i|
              commonnamespace_tmp = CommonNamespace.new
              commonnamespace_tmp.deserialize(i)
              @CustomNamespacesNew << commonnamespace_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeBaseMetrics请求参数结构体
      class DescribeBaseMetricsRequest < TencentCloud::Common::AbstractModel
        # @param Namespace: 业务命名空间,各个云产品的业务命名空间不同。如需获取业务命名空间,请前往各产品监控指标文档,例如云服务器的命名空间,可参见 [云服务器监控指标](https://cloud.tencent.com/document/product/248/6843)
        # @type Namespace: String
        # @param MetricName: 指标名,各个云产品的指标名不同。如需获取指标名,请前往各产品监控指标文档,例如云服务器的指标名,可参见 [云服务器监控指标](https://cloud.tencent.com/document/product/248/6843)
        # @type MetricName: String
        # @param Dimensions: 可选参数,按照维度过滤
        # @type Dimensions: Array

        attr_accessor :Namespace, :MetricName, :Dimensions
        
        def initialize(namespace=nil, metricname=nil, dimensions=nil)
          @Namespace = namespace
          @MetricName = metricname
          @Dimensions = dimensions
        end

        def deserialize(params)
          @Namespace = params['Namespace']
          @MetricName = params['MetricName']
          @Dimensions = params['Dimensions']
        end
      end

      # DescribeBaseMetrics返回参数结构体
      class DescribeBaseMetricsResponse < TencentCloud::Common::AbstractModel
        # @param MetricSet: 查询得到的指标描述列表
        # @type MetricSet: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :MetricSet, :RequestId
        
        def initialize(metricset=nil, requestid=nil)
          @MetricSet = metricset
          @RequestId = requestid
        end

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

      # DescribeBasicAlarmList返回的Alarms
      class DescribeBasicAlarmListAlarms < TencentCloud::Common::AbstractModel
        # @param Id: 该条告警的ID
        # @type Id: Integer
        # @param ProjectId: 项目ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectId: Integer
        # @param ProjectName: 项目名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectName: String
        # @param Status: 告警状态ID,0表示未恢复;1表示已恢复;2,3,5表示数据不足;4表示已失效
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: Integer
        # @param AlarmStatus: 告警状态,ALARM表示未恢复;OK表示已恢复;NO_DATA表示数据不足;NO_CONF表示已失效
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlarmStatus: String
        # @param GroupId: 策略组ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupId: Integer
        # @param GroupName: 策略组名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupName: String
        # @param FirstOccurTime: 发生时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FirstOccurTime: String
        # @param Duration: 持续时间,单位s
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Duration: Integer
        # @param LastOccurTime: 结束时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LastOccurTime: String
        # @param Content: 告警内容
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Content: String
        # @param ObjName: 告警对象
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ObjName: String
        # @param ObjId: 告警对象ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ObjId: String
        # @param ViewName: 策略类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ViewName: String
        # @param Vpc: VPC,只有CVM有
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Vpc: String
        # @param MetricId: 指标ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricId: Integer
        # @param MetricName: 指标名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricName: String
        # @param AlarmType: 告警类型,0表示指标告警,2表示产品事件告警,3表示平台事件告警
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlarmType: Integer
        # @param Region: 地域
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Region: String
        # @param Dimensions: 告警对象维度信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Dimensions: String
        # @param NotifyWay: 通知方式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NotifyWay: Array
        # @param InstanceGroup: 所属实例组信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceGroup: Array

        attr_accessor :Id, :ProjectId, :ProjectName, :Status, :AlarmStatus, :GroupId, :GroupName, :FirstOccurTime, :Duration, :LastOccurTime, :Content, :ObjName, :ObjId, :ViewName, :Vpc, :MetricId, :MetricName, :AlarmType, :Region, :Dimensions, :NotifyWay, :InstanceGroup
        
        def initialize(id=nil, projectid=nil, projectname=nil, status=nil, alarmstatus=nil, groupid=nil, groupname=nil, firstoccurtime=nil, duration=nil, lastoccurtime=nil, content=nil, objname=nil, objid=nil, viewname=nil, vpc=nil, metricid=nil, metricname=nil, alarmtype=nil, region=nil, dimensions=nil, notifyway=nil, instancegroup=nil)
          @Id = id
          @ProjectId = projectid
          @ProjectName = projectname
          @Status = status
          @AlarmStatus = alarmstatus
          @GroupId = groupid
          @GroupName = groupname
          @FirstOccurTime = firstoccurtime
          @Duration = duration
          @LastOccurTime = lastoccurtime
          @Content = content
          @ObjName = objname
          @ObjId = objid
          @ViewName = viewname
          @Vpc = vpc
          @MetricId = metricid
          @MetricName = metricname
          @AlarmType = alarmtype
          @Region = region
          @Dimensions = dimensions
          @NotifyWay = notifyway
          @InstanceGroup = instancegroup
        end

        def deserialize(params)
          @Id = params['Id']
          @ProjectId = params['ProjectId']
          @ProjectName = params['ProjectName']
          @Status = params['Status']
          @AlarmStatus = params['AlarmStatus']
          @GroupId = params['GroupId']
          @GroupName = params['GroupName']
          @FirstOccurTime = params['FirstOccurTime']
          @Duration = params['Duration']
          @LastOccurTime = params['LastOccurTime']
          @Content = params['Content']
          @ObjName = params['ObjName']
          @ObjId = params['ObjId']
          @ViewName = params['ViewName']
          @Vpc = params['Vpc']
          @MetricId = params['MetricId']
          @MetricName = params['MetricName']
          @AlarmType = params['AlarmType']
          @Region = params['Region']
          @Dimensions = params['Dimensions']
          @NotifyWay = params['NotifyWay']
          unless params['InstanceGroup'].nil?
            @InstanceGroup = []
            params['InstanceGroup'].each do |i|
              instancegroup_tmp = InstanceGroup.new
              instancegroup_tmp.deserialize(i)
              @InstanceGroup << instancegroup_tmp
            end
          end
        end
      end

      # DescribeBasicAlarmList请求参数结构体
      class DescribeBasicAlarmListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 接口模块名,当前取值monitor
        # @type Module: String
        # @param StartTime: 起始时间,默认一天前的时间戳
        # @type StartTime: Integer
        # @param EndTime: 结束时间,默认当前时间戳
        # @type EndTime: Integer
        # @param Limit: 分页参数,每页返回的数量,取值1~100,默认20
        # @type Limit: Integer
        # @param Offset: 分页参数,页偏移量,从0开始计数,默认0
        # @type Offset: Integer
        # @param OccurTimeOrder: 根据发生时间排序,取值ASC或DESC
        # @type OccurTimeOrder: String
        # @param ProjectIds: 根据项目ID过滤
        # @type ProjectIds: Array
        # @param ViewNames: 根据策略类型过滤
        # @type ViewNames: Array
        # @param AlarmStatus: 根据告警状态过滤
        # @type AlarmStatus: Array
        # @param ObjLike: 根据告警对象过滤
        # @type ObjLike: String
        # @param InstanceGroupIds: 根据实例组ID过滤
        # @type InstanceGroupIds: Array
        # @param MetricNames: 根据指标名过滤
        # @type MetricNames: Array

        attr_accessor :Module, :StartTime, :EndTime, :Limit, :Offset, :OccurTimeOrder, :ProjectIds, :ViewNames, :AlarmStatus, :ObjLike, :InstanceGroupIds, :MetricNames
        
        def initialize(_module=nil, starttime=nil, endtime=nil, limit=nil, offset=nil, occurtimeorder=nil, projectids=nil, viewnames=nil, alarmstatus=nil, objlike=nil, instancegroupids=nil, metricnames=nil)
          @Module = _module
          @StartTime = starttime
          @EndTime = endtime
          @Limit = limit
          @Offset = offset
          @OccurTimeOrder = occurtimeorder
          @ProjectIds = projectids
          @ViewNames = viewnames
          @AlarmStatus = alarmstatus
          @ObjLike = objlike
          @InstanceGroupIds = instancegroupids
          @MetricNames = metricnames
        end

        def deserialize(params)
          @Module = params['Module']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @OccurTimeOrder = params['OccurTimeOrder']
          @ProjectIds = params['ProjectIds']
          @ViewNames = params['ViewNames']
          @AlarmStatus = params['AlarmStatus']
          @ObjLike = params['ObjLike']
          @InstanceGroupIds = params['InstanceGroupIds']
          @MetricNames = params['MetricNames']
        end
      end

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

        attr_accessor :Alarms, :Total, :RequestId
        
        def initialize(alarms=nil, total=nil, requestid=nil)
          @Alarms = alarms
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Alarms'].nil?
            @Alarms = []
            params['Alarms'].each do |i|
              describebasicalarmlistalarms_tmp = DescribeBasicAlarmListAlarms.new
              describebasicalarmlistalarms_tmp.deserialize(i)
              @Alarms << describebasicalarmlistalarms_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeBindingPolicyObjectList接口的Dimension
      class DescribeBindingPolicyObjectListDimension < TencentCloud::Common::AbstractModel
        # @param RegionId: 地域id
        # @type RegionId: Integer
        # @param Region: 地域简称
        # @type Region: String
        # @param Dimensions: 维度组合json字符串
        # @type Dimensions: String
        # @param EventDimensions: 事件维度组合json字符串
        # @type EventDimensions: String

        attr_accessor :RegionId, :Region, :Dimensions, :EventDimensions
        
        def initialize(regionid=nil, region=nil, dimensions=nil, eventdimensions=nil)
          @RegionId = regionid
          @Region = region
          @Dimensions = dimensions
          @EventDimensions = eventdimensions
        end

        def deserialize(params)
          @RegionId = params['RegionId']
          @Region = params['Region']
          @Dimensions = params['Dimensions']
          @EventDimensions = params['EventDimensions']
        end
      end

      # 查询策略绑定对象列表接口返回的对象实例信息
      class DescribeBindingPolicyObjectListInstance < TencentCloud::Common::AbstractModel
        # @param UniqueId: 对象唯一id
        # @type UniqueId: String
        # @param Dimensions: 表示对象实例的维度集合,jsonObj字符串
        # @type Dimensions: String
        # @param IsShielded: 对象是否被屏蔽,0表示未屏蔽,1表示被屏蔽
        # @type IsShielded: Integer
        # @param Region: 对象所在的地域
        # @type Region: String

        attr_accessor :UniqueId, :Dimensions, :IsShielded, :Region
        
        def initialize(uniqueid=nil, dimensions=nil, isshielded=nil, region=nil)
          @UniqueId = uniqueid
          @Dimensions = dimensions
          @IsShielded = isshielded
          @Region = region
        end

        def deserialize(params)
          @UniqueId = params['UniqueId']
          @Dimensions = params['Dimensions']
          @IsShielded = params['IsShielded']
          @Region = params['Region']
        end
      end

      # DescribeBindingPolicyObjectList返回的是实例分组信息
      class DescribeBindingPolicyObjectListInstanceGroup < TencentCloud::Common::AbstractModel
        # @param InstanceGroupId: 实例分组id
        # @type InstanceGroupId: Integer
        # @param ViewName: 告警策略类型名称
        # @type ViewName: String
        # @param LastEditUin: 最后编辑uin
        # @type LastEditUin: String
        # @param GroupName: 实例分组名称
        # @type GroupName: String
        # @param InstanceSum: 实例数量
        # @type InstanceSum: Integer
        # @param UpdateTime: 更新时间
        # @type UpdateTime: Integer
        # @param InsertTime: 创建时间
        # @type InsertTime: Integer
        # @param Regions: 实例所在的地域集合
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Regions: Array

        attr_accessor :InstanceGroupId, :ViewName, :LastEditUin, :GroupName, :InstanceSum, :UpdateTime, :InsertTime, :Regions
        
        def initialize(instancegroupid=nil, viewname=nil, lastedituin=nil, groupname=nil, instancesum=nil, updatetime=nil, inserttime=nil, regions=nil)
          @InstanceGroupId = instancegroupid
          @ViewName = viewname
          @LastEditUin = lastedituin
          @GroupName = groupname
          @InstanceSum = instancesum
          @UpdateTime = updatetime
          @InsertTime = inserttime
          @Regions = regions
        end

        def deserialize(params)
          @InstanceGroupId = params['InstanceGroupId']
          @ViewName = params['ViewName']
          @LastEditUin = params['LastEditUin']
          @GroupName = params['GroupName']
          @InstanceSum = params['InstanceSum']
          @UpdateTime = params['UpdateTime']
          @InsertTime = params['InsertTime']
          @Regions = params['Regions']
        end
      end

      # DescribeBindingPolicyObjectList请求参数结构体
      class DescribeBindingPolicyObjectListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param GroupId: 策略组id,如果有形如 policy-xxxx 的 id,请填到 PolicyId 字段中,本字段填 0
        # @type GroupId: Integer
        # @param PolicyId: 告警策略id,形如 policy-xxxx,如果填入,则GroupId可以填0
        # @type PolicyId: String
        # @param Limit: 每次返回的数量,取值1~100,默认20
        # @type Limit: Integer
        # @param Offset: 偏移量,从0开始计数,默认0。举例来说,参数 Offset=0&Limit=20 返回第 0 到 19 项,Offset=20&Limit=20 返回第 20 到 39 项,以此类推
        # @type Offset: Integer
        # @param Dimensions: 筛选对象的维度信息
        # @type Dimensions: Array

        attr_accessor :Module, :GroupId, :PolicyId, :Limit, :Offset, :Dimensions
        
        def initialize(_module=nil, groupid=nil, policyid=nil, limit=nil, offset=nil, dimensions=nil)
          @Module = _module
          @GroupId = groupid
          @PolicyId = policyid
          @Limit = limit
          @Offset = offset
          @Dimensions = dimensions
        end

        def deserialize(params)
          @Module = params['Module']
          @GroupId = params['GroupId']
          @PolicyId = params['PolicyId']
          @Limit = params['Limit']
          @Offset = params['Offset']
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              describebindingpolicyobjectlistdimension_tmp = DescribeBindingPolicyObjectListDimension.new
              describebindingpolicyobjectlistdimension_tmp.deserialize(i)
              @Dimensions << describebindingpolicyobjectlistdimension_tmp
            end
          end
        end
      end

      # DescribeBindingPolicyObjectList返回参数结构体
      class DescribeBindingPolicyObjectListResponse < TencentCloud::Common::AbstractModel
        # @param List: 绑定的对象实例列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type List: Array
        # @param Total: 绑定的对象实例总数
        # @type Total: Integer
        # @param NoShieldedSum: 未屏蔽的对象实例数
        # @type NoShieldedSum: Integer
        # @param InstanceGroup: 绑定的实例分组信息,没有绑定实例分组则为空
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceGroup: :class:`Tencentcloud::Monitor.v20180724.models.DescribeBindingPolicyObjectListInstanceGroup`
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :List, :Total, :NoShieldedSum, :InstanceGroup, :RequestId
        
        def initialize(list=nil, total=nil, noshieldedsum=nil, instancegroup=nil, requestid=nil)
          @List = list
          @Total = total
          @NoShieldedSum = noshieldedsum
          @InstanceGroup = instancegroup
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['List'].nil?
            @List = []
            params['List'].each do |i|
              describebindingpolicyobjectlistinstance_tmp = DescribeBindingPolicyObjectListInstance.new
              describebindingpolicyobjectlistinstance_tmp.deserialize(i)
              @List << describebindingpolicyobjectlistinstance_tmp
            end
          end
          @Total = params['Total']
          @NoShieldedSum = params['NoShieldedSum']
          unless params['InstanceGroup'].nil?
            @InstanceGroup = DescribeBindingPolicyObjectListInstanceGroup.new
            @InstanceGroup.deserialize(params['InstanceGroup'])
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeConditionsTemplateList请求参数结构体
      class DescribeConditionsTemplateListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param ViewName: 视图名,由 [DescribeAllNamespaces](https://cloud.tencent.com/document/product/248/48683) 获得。对于云产品监控,取接口出参的 QceNamespacesNew.N.Id,例如 cvm_device
        # @type ViewName: String
        # @param GroupName: 根据触发条件模板名称过滤查询
        # @type GroupName: String
        # @param GroupID: 根据触发条件模板ID过滤查询
        # @type GroupID: String
        # @param Limit: 分页参数,每页返回的数量,取值1~100,默认20
        # @type Limit: Integer
        # @param Offset: 分页参数,页偏移量,从0开始计数,默认0
        # @type Offset: Integer
        # @param UpdateTimeOrder: 指定按更新时间的排序方式,asc=升序, desc=降序
        # @type UpdateTimeOrder: String

        attr_accessor :Module, :ViewName, :GroupName, :GroupID, :Limit, :Offset, :UpdateTimeOrder
        
        def initialize(_module=nil, viewname=nil, groupname=nil, groupid=nil, limit=nil, offset=nil, updatetimeorder=nil)
          @Module = _module
          @ViewName = viewname
          @GroupName = groupname
          @GroupID = groupid
          @Limit = limit
          @Offset = offset
          @UpdateTimeOrder = updatetimeorder
        end

        def deserialize(params)
          @Module = params['Module']
          @ViewName = params['ViewName']
          @GroupName = params['GroupName']
          @GroupID = params['GroupID']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @UpdateTimeOrder = params['UpdateTimeOrder']
        end
      end

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

        attr_accessor :Total, :TemplateGroupList, :RequestId
        
        def initialize(total=nil, templategrouplist=nil, requestid=nil)
          @Total = total
          @TemplateGroupList = templategrouplist
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['TemplateGroupList'].nil?
            @TemplateGroupList = []
            params['TemplateGroupList'].each do |i|
              templategroup_tmp = TemplateGroup.new
              templategroup_tmp.deserialize(i)
              @TemplateGroupList << templategroup_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeMonitorTypes请求参数结构体
      class DescribeMonitorTypesRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,固定值 monitor
        # @type Module: String

        attr_accessor :Module
        
        def initialize(_module=nil)
          @Module = _module
        end

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

      # DescribeMonitorTypes返回参数结构体
      class DescribeMonitorTypesResponse < TencentCloud::Common::AbstractModel
        # @param MonitorTypes: 监控类型,云产品监控为 MT_QCE
        # @type MonitorTypes: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :MonitorTypes, :RequestId
        
        def initialize(monitortypes=nil, requestid=nil)
          @MonitorTypes = monitortypes
          @RequestId = requestid
        end

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

      # DescribePolicyConditionList策略条件
      class DescribePolicyConditionListCondition < TencentCloud::Common::AbstractModel
        # @param PolicyViewName: 策略视图名称
        # @type PolicyViewName: String
        # @param EventMetrics: 事件告警条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventMetrics: Array
        # @param IsSupportMultiRegion: 是否支持多地域
        # @type IsSupportMultiRegion: Boolean
        # @param Metrics: 指标告警条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Metrics: Array
        # @param Name: 策略类型名称
        # @type Name: String
        # @param SortId: 排序id
        # @type SortId: Integer
        # @param SupportDefault: 是否支持默认策略
        # @type SupportDefault: Boolean
        # @param SupportRegions: 支持该策略类型的地域列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SupportRegions: Array

        attr_accessor :PolicyViewName, :EventMetrics, :IsSupportMultiRegion, :Metrics, :Name, :SortId, :SupportDefault, :SupportRegions
        
        def initialize(policyviewname=nil, eventmetrics=nil, issupportmultiregion=nil, metrics=nil, name=nil, sortid=nil, supportdefault=nil, supportregions=nil)
          @PolicyViewName = policyviewname
          @EventMetrics = eventmetrics
          @IsSupportMultiRegion = issupportmultiregion
          @Metrics = metrics
          @Name = name
          @SortId = sortid
          @SupportDefault = supportdefault
          @SupportRegions = supportregions
        end

        def deserialize(params)
          @PolicyViewName = params['PolicyViewName']
          unless params['EventMetrics'].nil?
            @EventMetrics = []
            params['EventMetrics'].each do |i|
              describepolicyconditionlisteventmetric_tmp = DescribePolicyConditionListEventMetric.new
              describepolicyconditionlisteventmetric_tmp.deserialize(i)
              @EventMetrics << describepolicyconditionlisteventmetric_tmp
            end
          end
          @IsSupportMultiRegion = params['IsSupportMultiRegion']
          unless params['Metrics'].nil?
            @Metrics = []
            params['Metrics'].each do |i|
              describepolicyconditionlistmetric_tmp = DescribePolicyConditionListMetric.new
              describepolicyconditionlistmetric_tmp.deserialize(i)
              @Metrics << describepolicyconditionlistmetric_tmp
            end
          end
          @Name = params['Name']
          @SortId = params['SortId']
          @SupportDefault = params['SupportDefault']
          @SupportRegions = params['SupportRegions']
        end
      end

      # DescribePolicyConditionList.ConfigManual
      class DescribePolicyConditionListConfigManual < TencentCloud::Common::AbstractModel
        # @param CalcType: 检测方式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CalcType: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyConditionListConfigManualCalcType`
        # @param CalcValue: 检测阈值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CalcValue: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyConditionListConfigManualCalcValue`
        # @param ContinueTime: 持续时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ContinueTime: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyConditionListConfigManualContinueTime`
        # @param Period: 数据周期
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Period: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyConditionListConfigManualPeriod`
        # @param PeriodNum: 持续周期个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PeriodNum: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyConditionListConfigManualPeriodNum`
        # @param StatType: 聚合方式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StatType: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyConditionListConfigManualStatType`

        attr_accessor :CalcType, :CalcValue, :ContinueTime, :Period, :PeriodNum, :StatType
        
        def initialize(calctype=nil, calcvalue=nil, continuetime=nil, period=nil, periodnum=nil, stattype=nil)
          @CalcType = calctype
          @CalcValue = calcvalue
          @ContinueTime = continuetime
          @Period = period
          @PeriodNum = periodnum
          @StatType = stattype
        end

        def deserialize(params)
          unless params['CalcType'].nil?
            @CalcType = DescribePolicyConditionListConfigManualCalcType.new
            @CalcType.deserialize(params['CalcType'])
          end
          unless params['CalcValue'].nil?
            @CalcValue = DescribePolicyConditionListConfigManualCalcValue.new
            @CalcValue.deserialize(params['CalcValue'])
          end
          unless params['ContinueTime'].nil?
            @ContinueTime = DescribePolicyConditionListConfigManualContinueTime.new
            @ContinueTime.deserialize(params['ContinueTime'])
          end
          unless params['Period'].nil?
            @Period = DescribePolicyConditionListConfigManualPeriod.new
            @Period.deserialize(params['Period'])
          end
          unless params['PeriodNum'].nil?
            @PeriodNum = DescribePolicyConditionListConfigManualPeriodNum.new
            @PeriodNum.deserialize(params['PeriodNum'])
          end
          unless params['StatType'].nil?
            @StatType = DescribePolicyConditionListConfigManualStatType.new
            @StatType.deserialize(params['StatType'])
          end
        end
      end

      # DescribePolicyConditionList.ConfigManual.CalcType
      class DescribePolicyConditionListConfigManualCalcType < TencentCloud::Common::AbstractModel
        # @param Keys: CalcType 取值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Keys: Array
        # @param Need: 是否必须
        # @type Need: Boolean

        attr_accessor :Keys, :Need
        
        def initialize(keys=nil, need=nil)
          @Keys = keys
          @Need = need
        end

        def deserialize(params)
          @Keys = params['Keys']
          @Need = params['Need']
        end
      end

      # DescribePolicyConditionList.ConfigManual.CalcValue
      class DescribePolicyConditionListConfigManualCalcValue < TencentCloud::Common::AbstractModel
        # @param Default: 默认值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Default: String
        # @param Fixed: 固定值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Fixed: String
        # @param Max: 最大值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Max: String
        # @param Min: 最小值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Min: String
        # @param Need: 是否必须
        # @type Need: Boolean

        attr_accessor :Default, :Fixed, :Max, :Min, :Need
        
        def initialize(default=nil, fixed=nil, max=nil, min=nil, need=nil)
          @Default = default
          @Fixed = fixed
          @Max = max
          @Min = min
          @Need = need
        end

        def deserialize(params)
          @Default = params['Default']
          @Fixed = params['Fixed']
          @Max = params['Max']
          @Min = params['Min']
          @Need = params['Need']
        end
      end

      # DescribePolicyConditionList.ConfigManual.ContinueTime
      class DescribePolicyConditionListConfigManualContinueTime < TencentCloud::Common::AbstractModel
        # @param Default: 默认持续时间,单位:秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Default: Integer
        # @param Keys: 可选持续时间,单位:秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Keys: Array
        # @param Need: 是否必须
        # @type Need: Boolean

        attr_accessor :Default, :Keys, :Need
        
        def initialize(default=nil, keys=nil, need=nil)
          @Default = default
          @Keys = keys
          @Need = need
        end

        def deserialize(params)
          @Default = params['Default']
          @Keys = params['Keys']
          @Need = params['Need']
        end
      end

      # DescribePolicyConditionList.ConfigManual.Period
      class DescribePolicyConditionListConfigManualPeriod < TencentCloud::Common::AbstractModel
        # @param Default: 默认周期,单位:秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Default: Integer
        # @param Keys: 可选周期,单位:秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Keys: Array
        # @param Need: 是否必须
        # @type Need: Boolean

        attr_accessor :Default, :Keys, :Need
        
        def initialize(default=nil, keys=nil, need=nil)
          @Default = default
          @Keys = keys
          @Need = need
        end

        def deserialize(params)
          @Default = params['Default']
          @Keys = params['Keys']
          @Need = params['Need']
        end
      end

      # DescribePolicyConditionList.ConfigManual.PeriodNum
      class DescribePolicyConditionListConfigManualPeriodNum < TencentCloud::Common::AbstractModel
        # @param Default: 默认周期数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Default: Integer
        # @param Keys: 可选周期数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Keys: Array
        # @param Need: 是否必须
        # @type Need: Boolean

        attr_accessor :Default, :Keys, :Need
        
        def initialize(default=nil, keys=nil, need=nil)
          @Default = default
          @Keys = keys
          @Need = need
        end

        def deserialize(params)
          @Default = params['Default']
          @Keys = params['Keys']
          @Need = params['Need']
        end
      end

      # DescribePolicyConditionList.ConfigManual.StatType
      class DescribePolicyConditionListConfigManualStatType < TencentCloud::Common::AbstractModel
        # @param P5: 数据聚合方式,周期5秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P5: String
        # @param P10: 数据聚合方式,周期10秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P10: String
        # @param P60: 数据聚合方式,周期1分钟
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P60: String
        # @param P300: 数据聚合方式,周期5分钟
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P300: String
        # @param P600: 数据聚合方式,周期10分钟
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P600: String
        # @param P1800: 数据聚合方式,周期30分钟
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P1800: String
        # @param P3600: 数据聚合方式,周期1小时
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P3600: String
        # @param P86400: 数据聚合方式,周期1天
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type P86400: String

        attr_accessor :P5, :P10, :P60, :P300, :P600, :P1800, :P3600, :P86400
        
        def initialize(p5=nil, p10=nil, p60=nil, p300=nil, p600=nil, p1800=nil, p3600=nil, p86400=nil)
          @P5 = p5
          @P10 = p10
          @P60 = p60
          @P300 = p300
          @P600 = p600
          @P1800 = p1800
          @P3600 = p3600
          @P86400 = p86400
        end

        def deserialize(params)
          @P5 = params['P5']
          @P10 = params['P10']
          @P60 = params['P60']
          @P300 = params['P300']
          @P600 = params['P600']
          @P1800 = params['P1800']
          @P3600 = params['P3600']
          @P86400 = params['P86400']
        end
      end

      # DescribePolicyConditionList.EventMetric
      class DescribePolicyConditionListEventMetric < TencentCloud::Common::AbstractModel
        # @param EventId: 事件id
        # @type EventId: Integer
        # @param EventShowName: 事件名称
        # @type EventShowName: String
        # @param NeedRecovered: 是否需要恢复
        # @type NeedRecovered: Boolean
        # @param Type: 事件类型,预留字段,当前固定取值为2
        # @type Type: Integer

        attr_accessor :EventId, :EventShowName, :NeedRecovered, :Type
        
        def initialize(eventid=nil, eventshowname=nil, needrecovered=nil, type=nil)
          @EventId = eventid
          @EventShowName = eventshowname
          @NeedRecovered = needrecovered
          @Type = type
        end

        def deserialize(params)
          @EventId = params['EventId']
          @EventShowName = params['EventShowName']
          @NeedRecovered = params['NeedRecovered']
          @Type = params['Type']
        end
      end

      # 指标告警配置
      class DescribePolicyConditionListMetric < TencentCloud::Common::AbstractModel
        # @param ConfigManual: 指标配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConfigManual: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyConditionListConfigManual`
        # @param MetricId: 指标id
        # @type MetricId: Integer
        # @param MetricShowName: 指标名称
        # @type MetricShowName: String
        # @param MetricUnit: 指标单位
        # @type MetricUnit: String

        attr_accessor :ConfigManual, :MetricId, :MetricShowName, :MetricUnit
        
        def initialize(configmanual=nil, metricid=nil, metricshowname=nil, metricunit=nil)
          @ConfigManual = configmanual
          @MetricId = metricid
          @MetricShowName = metricshowname
          @MetricUnit = metricunit
        end

        def deserialize(params)
          unless params['ConfigManual'].nil?
            @ConfigManual = DescribePolicyConditionListConfigManual.new
            @ConfigManual.deserialize(params['ConfigManual'])
          end
          @MetricId = params['MetricId']
          @MetricShowName = params['MetricShowName']
          @MetricUnit = params['MetricUnit']
        end
      end

      # DescribePolicyConditionList请求参数结构体
      class DescribePolicyConditionListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String

        attr_accessor :Module
        
        def initialize(_module=nil)
          @Module = _module
        end

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

      # DescribePolicyConditionList返回参数结构体
      class DescribePolicyConditionListResponse < TencentCloud::Common::AbstractModel
        # @param Conditions: 告警策略条件列表
        # @type Conditions: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Conditions, :RequestId
        
        def initialize(conditions=nil, requestid=nil)
          @Conditions = conditions
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Conditions'].nil?
            @Conditions = []
            params['Conditions'].each do |i|
              describepolicyconditionlistcondition_tmp = DescribePolicyConditionListCondition.new
              describepolicyconditionlistcondition_tmp.deserialize(i)
              @Conditions << describepolicyconditionlistcondition_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 查询策略输出的用户回调信息
      class DescribePolicyGroupInfoCallback < TencentCloud::Common::AbstractModel
        # @param CallbackUrl: 用户回调接口地址
        # @type CallbackUrl: String
        # @param ValidFlag: 用户回调接口状态,0表示未验证,1表示已验证,2表示存在url但没有通过验证
        # @type ValidFlag: Integer
        # @param VerifyCode: 用户回调接口验证码
        # @type VerifyCode: String

        attr_accessor :CallbackUrl, :ValidFlag, :VerifyCode
        
        def initialize(callbackurl=nil, validflag=nil, verifycode=nil)
          @CallbackUrl = callbackurl
          @ValidFlag = validflag
          @VerifyCode = verifycode
        end

        def deserialize(params)
          @CallbackUrl = params['CallbackUrl']
          @ValidFlag = params['ValidFlag']
          @VerifyCode = params['VerifyCode']
        end
      end

      # 查询策略输出的阈值告警条件
      class DescribePolicyGroupInfoCondition < TencentCloud::Common::AbstractModel
        # @param MetricShowName: 指标名称
        # @type MetricShowName: String
        # @param Period: 数据聚合周期(单位秒)
        # @type Period: Integer
        # @param MetricId: 指标id
        # @type MetricId: Integer
        # @param RuleId: 阈值规则id
        # @type RuleId: Integer
        # @param Unit: 指标单位
        # @type Unit: String
        # @param AlarmNotifyType: 告警发送收敛类型。0连续告警,1指数告警
        # @type AlarmNotifyType: Integer
        # @param AlarmNotifyPeriod: 告警发送周期单位秒。<0 不触发, 0 只触发一次, >0 每隔triggerTime秒触发一次
        # @type AlarmNotifyPeriod: Integer
        # @param CalcType: 比较类型,1表示大于,2表示大于等于,3表示小于,4表示小于等于,5表示相等,6表示不相等,7表示日同比上涨,8表示日同比下降,9表示周同比上涨,10表示周同比下降,11表示周期环比上涨,12表示周期环比下降
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CalcType: Integer
        # @param CalcValue: 检测阈值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CalcValue: String
        # @param ContinueTime: 持续多长时间触发规则会告警(单位秒)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ContinueTime: Integer
        # @param MetricName: 告警指标名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricName: String

        attr_accessor :MetricShowName, :Period, :MetricId, :RuleId, :Unit, :AlarmNotifyType, :AlarmNotifyPeriod, :CalcType, :CalcValue, :ContinueTime, :MetricName
        
        def initialize(metricshowname=nil, period=nil, metricid=nil, ruleid=nil, unit=nil, alarmnotifytype=nil, alarmnotifyperiod=nil, calctype=nil, calcvalue=nil, continuetime=nil, metricname=nil)
          @MetricShowName = metricshowname
          @Period = period
          @MetricId = metricid
          @RuleId = ruleid
          @Unit = unit
          @AlarmNotifyType = alarmnotifytype
          @AlarmNotifyPeriod = alarmnotifyperiod
          @CalcType = calctype
          @CalcValue = calcvalue
          @ContinueTime = continuetime
          @MetricName = metricname
        end

        def deserialize(params)
          @MetricShowName = params['MetricShowName']
          @Period = params['Period']
          @MetricId = params['MetricId']
          @RuleId = params['RuleId']
          @Unit = params['Unit']
          @AlarmNotifyType = params['AlarmNotifyType']
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @CalcType = params['CalcType']
          @CalcValue = params['CalcValue']
          @ContinueTime = params['ContinueTime']
          @MetricName = params['MetricName']
        end
      end

      # 查询策略输出的模板策略组信息
      class DescribePolicyGroupInfoConditionTpl < TencentCloud::Common::AbstractModel
        # @param GroupId: 策略组id
        # @type GroupId: Integer
        # @param GroupName: 策略组名称
        # @type GroupName: String
        # @param ViewName: 策略类型
        # @type ViewName: String
        # @param Remark: 策略组说明
        # @type Remark: String
        # @param LastEditUin: 最后编辑的用户uin
        # @type LastEditUin: String
        # @param UpdateTime: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdateTime: Integer
        # @param InsertTime: 创建时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InsertTime: Integer
        # @param IsUnionRule: 是否且规则
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsUnionRule: Integer

        attr_accessor :GroupId, :GroupName, :ViewName, :Remark, :LastEditUin, :UpdateTime, :InsertTime, :IsUnionRule
        
        def initialize(groupid=nil, groupname=nil, viewname=nil, remark=nil, lastedituin=nil, updatetime=nil, inserttime=nil, isunionrule=nil)
          @GroupId = groupid
          @GroupName = groupname
          @ViewName = viewname
          @Remark = remark
          @LastEditUin = lastedituin
          @UpdateTime = updatetime
          @InsertTime = inserttime
          @IsUnionRule = isunionrule
        end

        def deserialize(params)
          @GroupId = params['GroupId']
          @GroupName = params['GroupName']
          @ViewName = params['ViewName']
          @Remark = params['Remark']
          @LastEditUin = params['LastEditUin']
          @UpdateTime = params['UpdateTime']
          @InsertTime = params['InsertTime']
          @IsUnionRule = params['IsUnionRule']
        end
      end

      # 查询策略输出的事件告警条件
      class DescribePolicyGroupInfoEventCondition < TencentCloud::Common::AbstractModel
        # @param EventId: 事件id
        # @type EventId: Integer
        # @param RuleId: 事件告警规则id
        # @type RuleId: Integer
        # @param EventShowName: 事件名称
        # @type EventShowName: String
        # @param AlarmNotifyPeriod: 告警发送周期单位秒。<0 不触发, 0 只触发一次, >0 每隔triggerTime秒触发一次
        # @type AlarmNotifyPeriod: Integer
        # @param AlarmNotifyType: 告警发送收敛类型。0连续告警,1指数告警
        # @type AlarmNotifyType: Integer

        attr_accessor :EventId, :RuleId, :EventShowName, :AlarmNotifyPeriod, :AlarmNotifyType
        
        def initialize(eventid=nil, ruleid=nil, eventshowname=nil, alarmnotifyperiod=nil, alarmnotifytype=nil)
          @EventId = eventid
          @RuleId = ruleid
          @EventShowName = eventshowname
          @AlarmNotifyPeriod = alarmnotifyperiod
          @AlarmNotifyType = alarmnotifytype
        end

        def deserialize(params)
          @EventId = params['EventId']
          @RuleId = params['RuleId']
          @EventShowName = params['EventShowName']
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @AlarmNotifyType = params['AlarmNotifyType']
        end
      end

      # 查询策略输出的告警接收人信息
      class DescribePolicyGroupInfoReceiverInfo < TencentCloud::Common::AbstractModel
        # @param ReceiverGroupList: 告警接收组id列表
        # @type ReceiverGroupList: Array
        # @param ReceiverUserList: 告警接收人id列表
        # @type ReceiverUserList: Array
        # @param StartTime: 告警时间段开始时间。范围[0,86400),作为unix时间戳转成北京时间后去掉日期,例如7200表示"10:0:0"
        # @type StartTime: Integer
        # @param EndTime: 告警时间段结束时间。含义同StartTime
        # @type EndTime: Integer
        # @param ReceiverType: 接收类型。“group”(接收组)或“user”(接收人)
        # @type ReceiverType: String
        # @param NotifyWay: 告警通知方式。可选 "SMS","SITE","EMAIL","CALL","WECHAT"
        # @type NotifyWay: Array
        # @param UidList: 电话告警接收者uid
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UidList: Array
        # @param RoundNumber: 电话告警轮数
        # @type RoundNumber: Integer
        # @param RoundInterval: 电话告警每轮间隔(秒)
        # @type RoundInterval: Integer
        # @param PersonInterval: 电话告警对个人间隔(秒)
        # @type PersonInterval: Integer
        # @param NeedSendNotice: 是否需要电话告警触达提示。0不需要,1需要
        # @type NeedSendNotice: Integer
        # @param SendFor: 电话告警通知时机。可选"OCCUR"(告警时通知),"RECOVER"(恢复时通知)
        # @type SendFor: Array
        # @param RecoverNotify: 恢复通知方式。可选"SMS"
        # @type RecoverNotify: Array
        # @param ReceiveLanguage: 告警发送语言
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReceiveLanguage: String

        attr_accessor :ReceiverGroupList, :ReceiverUserList, :StartTime, :EndTime, :ReceiverType, :NotifyWay, :UidList, :RoundNumber, :RoundInterval, :PersonInterval, :NeedSendNotice, :SendFor, :RecoverNotify, :ReceiveLanguage
        
        def initialize(receivergrouplist=nil, receiveruserlist=nil, starttime=nil, endtime=nil, receivertype=nil, notifyway=nil, uidlist=nil, roundnumber=nil, roundinterval=nil, personinterval=nil, needsendnotice=nil, sendfor=nil, recovernotify=nil, receivelanguage=nil)
          @ReceiverGroupList = receivergrouplist
          @ReceiverUserList = receiveruserlist
          @StartTime = starttime
          @EndTime = endtime
          @ReceiverType = receivertype
          @NotifyWay = notifyway
          @UidList = uidlist
          @RoundNumber = roundnumber
          @RoundInterval = roundinterval
          @PersonInterval = personinterval
          @NeedSendNotice = needsendnotice
          @SendFor = sendfor
          @RecoverNotify = recovernotify
          @ReceiveLanguage = receivelanguage
        end

        def deserialize(params)
          @ReceiverGroupList = params['ReceiverGroupList']
          @ReceiverUserList = params['ReceiverUserList']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @ReceiverType = params['ReceiverType']
          @NotifyWay = params['NotifyWay']
          @UidList = params['UidList']
          @RoundNumber = params['RoundNumber']
          @RoundInterval = params['RoundInterval']
          @PersonInterval = params['PersonInterval']
          @NeedSendNotice = params['NeedSendNotice']
          @SendFor = params['SendFor']
          @RecoverNotify = params['RecoverNotify']
          @ReceiveLanguage = params['ReceiveLanguage']
        end
      end

      # DescribePolicyGroupInfo请求参数结构体
      class DescribePolicyGroupInfoRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param GroupId: 策略组id
        # @type GroupId: Integer

        attr_accessor :Module, :GroupId
        
        def initialize(_module=nil, groupid=nil)
          @Module = _module
          @GroupId = groupid
        end

        def deserialize(params)
          @Module = params['Module']
          @GroupId = params['GroupId']
        end
      end

      # DescribePolicyGroupInfo返回参数结构体
      class DescribePolicyGroupInfoResponse < TencentCloud::Common::AbstractModel
        # @param GroupName: 策略组名称
        # @type GroupName: String
        # @param ProjectId: 策略组所属的项目id
        # @type ProjectId: Integer
        # @param IsDefault: 是否为默认策略,0表示非默认策略,1表示默认策略
        # @type IsDefault: Integer
        # @param ViewName: 策略类型
        # @type ViewName: String
        # @param Remark: 策略说明
        # @type Remark: String
        # @param ShowName: 策略类型名称
        # @type ShowName: String
        # @param LastEditUin: 最近编辑的用户uin
        # @type LastEditUin: String
        # @param UpdateTime: 最近编辑时间
        # @type UpdateTime: String
        # @param Region: 该策略支持的地域
        # @type Region: Array
        # @param DimensionGroup: 策略类型的维度列表
        # @type DimensionGroup: Array
        # @param ConditionsConfig: 阈值规则列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConditionsConfig: Array
        # @param EventConfig: 产品事件规则列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventConfig: Array
        # @param ReceiverInfos: 用户接收人列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReceiverInfos: Array
        # @param Callback: 用户回调信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Callback: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyGroupInfoCallback`
        # @param ConditionsTemp: 模板策略组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConditionsTemp: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyGroupInfoConditionTpl`
        # @param CanSetDefault: 是否可以设置成默认策略
        # @type CanSetDefault: Boolean
        # @param IsUnionRule: 是否且规则
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsUnionRule: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :GroupName, :ProjectId, :IsDefault, :ViewName, :Remark, :ShowName, :LastEditUin, :UpdateTime, :Region, :DimensionGroup, :ConditionsConfig, :EventConfig, :ReceiverInfos, :Callback, :ConditionsTemp, :CanSetDefault, :IsUnionRule, :RequestId
        
        def initialize(groupname=nil, projectid=nil, isdefault=nil, viewname=nil, remark=nil, showname=nil, lastedituin=nil, updatetime=nil, region=nil, dimensiongroup=nil, conditionsconfig=nil, eventconfig=nil, receiverinfos=nil, callback=nil, conditionstemp=nil, cansetdefault=nil, isunionrule=nil, requestid=nil)
          @GroupName = groupname
          @ProjectId = projectid
          @IsDefault = isdefault
          @ViewName = viewname
          @Remark = remark
          @ShowName = showname
          @LastEditUin = lastedituin
          @UpdateTime = updatetime
          @Region = region
          @DimensionGroup = dimensiongroup
          @ConditionsConfig = conditionsconfig
          @EventConfig = eventconfig
          @ReceiverInfos = receiverinfos
          @Callback = callback
          @ConditionsTemp = conditionstemp
          @CanSetDefault = cansetdefault
          @IsUnionRule = isunionrule
          @RequestId = requestid
        end

        def deserialize(params)
          @GroupName = params['GroupName']
          @ProjectId = params['ProjectId']
          @IsDefault = params['IsDefault']
          @ViewName = params['ViewName']
          @Remark = params['Remark']
          @ShowName = params['ShowName']
          @LastEditUin = params['LastEditUin']
          @UpdateTime = params['UpdateTime']
          @Region = params['Region']
          @DimensionGroup = params['DimensionGroup']
          unless params['ConditionsConfig'].nil?
            @ConditionsConfig = []
            params['ConditionsConfig'].each do |i|
              describepolicygroupinfocondition_tmp = DescribePolicyGroupInfoCondition.new
              describepolicygroupinfocondition_tmp.deserialize(i)
              @ConditionsConfig << describepolicygroupinfocondition_tmp
            end
          end
          unless params['EventConfig'].nil?
            @EventConfig = []
            params['EventConfig'].each do |i|
              describepolicygroupinfoeventcondition_tmp = DescribePolicyGroupInfoEventCondition.new
              describepolicygroupinfoeventcondition_tmp.deserialize(i)
              @EventConfig << describepolicygroupinfoeventcondition_tmp
            end
          end
          unless params['ReceiverInfos'].nil?
            @ReceiverInfos = []
            params['ReceiverInfos'].each do |i|
              describepolicygroupinforeceiverinfo_tmp = DescribePolicyGroupInfoReceiverInfo.new
              describepolicygroupinforeceiverinfo_tmp.deserialize(i)
              @ReceiverInfos << describepolicygroupinforeceiverinfo_tmp
            end
          end
          unless params['Callback'].nil?
            @Callback = DescribePolicyGroupInfoCallback.new
            @Callback.deserialize(params['Callback'])
          end
          unless params['ConditionsTemp'].nil?
            @ConditionsTemp = DescribePolicyGroupInfoConditionTpl.new
            @ConditionsTemp.deserialize(params['ConditionsTemp'])
          end
          @CanSetDefault = params['CanSetDefault']
          @IsUnionRule = params['IsUnionRule']
          @RequestId = params['RequestId']
        end
      end

      # DescribePolicyGroupList.Group
      class DescribePolicyGroupListGroup < TencentCloud::Common::AbstractModel
        # @param GroupId: 策略组id
        # @type GroupId: Integer
        # @param GroupName: 策略组名称
        # @type GroupName: String
        # @param IsOpen: 是否开启
        # @type IsOpen: Boolean
        # @param ViewName: 策略视图名称
        # @type ViewName: String
        # @param LastEditUin: 最近编辑的用户uin
        # @type LastEditUin: String
        # @param UpdateTime: 最后修改时间
        # @type UpdateTime: Integer
        # @param InsertTime: 创建时间
        # @type InsertTime: Integer
        # @param UseSum: 策略组绑定的实例数
        # @type UseSum: Integer
        # @param NoShieldedSum: 策略组绑定的未屏蔽实例数
        # @type NoShieldedSum: Integer
        # @param IsDefault: 是否为默认策略,0表示非默认策略,1表示默认策略
        # @type IsDefault: Integer
        # @param CanSetDefault: 是否可以设置成默认策略
        # @type CanSetDefault: Boolean
        # @param ParentGroupId: 父策略组id
        # @type ParentGroupId: Integer
        # @param Remark: 策略组备注
        # @type Remark: String
        # @param ProjectId: 策略组所属项目id
        # @type ProjectId: Integer
        # @param Conditions: 阈值规则列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Conditions: Array
        # @param EventConditions: 产品事件规则列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventConditions: Array
        # @param ReceiverInfos: 用户接收人列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReceiverInfos: Array
        # @param ConditionsTemp: 模板策略组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConditionsTemp: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyGroupInfoConditionTpl`
        # @param InstanceGroup: 策略组绑定的实例组信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceGroup: :class:`Tencentcloud::Monitor.v20180724.models.DescribePolicyGroupListGroupInstanceGroup`
        # @param IsUnionRule: 且或规则标识, 0表示或规则(任意一条规则满足阈值条件就告警), 1表示且规则(所有规则都满足阈值条件才告警)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsUnionRule: Integer

        attr_accessor :GroupId, :GroupName, :IsOpen, :ViewName, :LastEditUin, :UpdateTime, :InsertTime, :UseSum, :NoShieldedSum, :IsDefault, :CanSetDefault, :ParentGroupId, :Remark, :ProjectId, :Conditions, :EventConditions, :ReceiverInfos, :ConditionsTemp, :InstanceGroup, :IsUnionRule
        
        def initialize(groupid=nil, groupname=nil, isopen=nil, viewname=nil, lastedituin=nil, updatetime=nil, inserttime=nil, usesum=nil, noshieldedsum=nil, isdefault=nil, cansetdefault=nil, parentgroupid=nil, remark=nil, projectid=nil, conditions=nil, eventconditions=nil, receiverinfos=nil, conditionstemp=nil, instancegroup=nil, isunionrule=nil)
          @GroupId = groupid
          @GroupName = groupname
          @IsOpen = isopen
          @ViewName = viewname
          @LastEditUin = lastedituin
          @UpdateTime = updatetime
          @InsertTime = inserttime
          @UseSum = usesum
          @NoShieldedSum = noshieldedsum
          @IsDefault = isdefault
          @CanSetDefault = cansetdefault
          @ParentGroupId = parentgroupid
          @Remark = remark
          @ProjectId = projectid
          @Conditions = conditions
          @EventConditions = eventconditions
          @ReceiverInfos = receiverinfos
          @ConditionsTemp = conditionstemp
          @InstanceGroup = instancegroup
          @IsUnionRule = isunionrule
        end

        def deserialize(params)
          @GroupId = params['GroupId']
          @GroupName = params['GroupName']
          @IsOpen = params['IsOpen']
          @ViewName = params['ViewName']
          @LastEditUin = params['LastEditUin']
          @UpdateTime = params['UpdateTime']
          @InsertTime = params['InsertTime']
          @UseSum = params['UseSum']
          @NoShieldedSum = params['NoShieldedSum']
          @IsDefault = params['IsDefault']
          @CanSetDefault = params['CanSetDefault']
          @ParentGroupId = params['ParentGroupId']
          @Remark = params['Remark']
          @ProjectId = params['ProjectId']
          unless params['Conditions'].nil?
            @Conditions = []
            params['Conditions'].each do |i|
              describepolicygroupinfocondition_tmp = DescribePolicyGroupInfoCondition.new
              describepolicygroupinfocondition_tmp.deserialize(i)
              @Conditions << describepolicygroupinfocondition_tmp
            end
          end
          unless params['EventConditions'].nil?
            @EventConditions = []
            params['EventConditions'].each do |i|
              describepolicygroupinfoeventcondition_tmp = DescribePolicyGroupInfoEventCondition.new
              describepolicygroupinfoeventcondition_tmp.deserialize(i)
              @EventConditions << describepolicygroupinfoeventcondition_tmp
            end
          end
          unless params['ReceiverInfos'].nil?
            @ReceiverInfos = []
            params['ReceiverInfos'].each do |i|
              describepolicygroupinforeceiverinfo_tmp = DescribePolicyGroupInfoReceiverInfo.new
              describepolicygroupinforeceiverinfo_tmp.deserialize(i)
              @ReceiverInfos << describepolicygroupinforeceiverinfo_tmp
            end
          end
          unless params['ConditionsTemp'].nil?
            @ConditionsTemp = DescribePolicyGroupInfoConditionTpl.new
            @ConditionsTemp.deserialize(params['ConditionsTemp'])
          end
          unless params['InstanceGroup'].nil?
            @InstanceGroup = DescribePolicyGroupListGroupInstanceGroup.new
            @InstanceGroup.deserialize(params['InstanceGroup'])
          end
          @IsUnionRule = params['IsUnionRule']
        end
      end

      # DescribePolicyGroupList接口策略组绑定的实例分组信息
      class DescribePolicyGroupListGroupInstanceGroup < TencentCloud::Common::AbstractModel
        # @param InstanceGroupId: 实例分组名称id
        # @type InstanceGroupId: Integer
        # @param ViewName: 策略类型视图名称
        # @type ViewName: String
        # @param LastEditUin: 最近编辑的用户uin
        # @type LastEditUin: String
        # @param GroupName: 实例分组名称
        # @type GroupName: String
        # @param InstanceSum: 实例数量
        # @type InstanceSum: Integer
        # @param UpdateTime: 更新时间
        # @type UpdateTime: Integer
        # @param InsertTime: 创建时间
        # @type InsertTime: Integer

        attr_accessor :InstanceGroupId, :ViewName, :LastEditUin, :GroupName, :InstanceSum, :UpdateTime, :InsertTime
        
        def initialize(instancegroupid=nil, viewname=nil, lastedituin=nil, groupname=nil, instancesum=nil, updatetime=nil, inserttime=nil)
          @InstanceGroupId = instancegroupid
          @ViewName = viewname
          @LastEditUin = lastedituin
          @GroupName = groupname
          @InstanceSum = instancesum
          @UpdateTime = updatetime
          @InsertTime = inserttime
        end

        def deserialize(params)
          @InstanceGroupId = params['InstanceGroupId']
          @ViewName = params['ViewName']
          @LastEditUin = params['LastEditUin']
          @GroupName = params['GroupName']
          @InstanceSum = params['InstanceSum']
          @UpdateTime = params['UpdateTime']
          @InsertTime = params['InsertTime']
        end
      end

      # DescribePolicyGroupList请求参数结构体
      class DescribePolicyGroupListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param Limit: 分页参数,每页返回的数量,取值1~100
        # @type Limit: Integer
        # @param Offset: 分页参数,页偏移量,从0开始计数
        # @type Offset: Integer
        # @param Like: 按策略名搜索
        # @type Like: String
        # @param InstanceGroupId: 实例分组id
        # @type InstanceGroupId: Integer
        # @param UpdateTimeOrder: 按更新时间排序, asc 或者 desc
        # @type UpdateTimeOrder: String
        # @param ProjectIds: 项目id列表
        # @type ProjectIds: Array
        # @param ViewNames: 告警策略类型列表
        # @type ViewNames: Array
        # @param FilterUnuseReceiver: 是否过滤无接收人策略组, 1表示过滤, 0表示不过滤
        # @type FilterUnuseReceiver: Integer
        # @param Receivers: 过滤条件, 接收组列表
        # @type Receivers: Array
        # @param ReceiverUserList: 过滤条件, 接收人列表
        # @type ReceiverUserList: Array
        # @param Dimensions: 维度组合字段(json字符串), 例如[[{"name":"unInstanceId","value":"ins-6e4b2aaa"}]]
        # @type Dimensions: String
        # @param ConditionTempGroupId: 模板策略组id, 多个id用逗号分隔
        # @type ConditionTempGroupId: String
        # @param ReceiverType: 过滤条件, 接收人或者接收组, user表示接收人, group表示接收组
        # @type ReceiverType: String
        # @param IsOpen: 过滤条件,告警策略是否已启动或停止
        # @type IsOpen: Boolean

        attr_accessor :Module, :Limit, :Offset, :Like, :InstanceGroupId, :UpdateTimeOrder, :ProjectIds, :ViewNames, :FilterUnuseReceiver, :Receivers, :ReceiverUserList, :Dimensions, :ConditionTempGroupId, :ReceiverType, :IsOpen
        
        def initialize(_module=nil, limit=nil, offset=nil, like=nil, instancegroupid=nil, updatetimeorder=nil, projectids=nil, viewnames=nil, filterunusereceiver=nil, receivers=nil, receiveruserlist=nil, dimensions=nil, conditiontempgroupid=nil, receivertype=nil, isopen=nil)
          @Module = _module
          @Limit = limit
          @Offset = offset
          @Like = like
          @InstanceGroupId = instancegroupid
          @UpdateTimeOrder = updatetimeorder
          @ProjectIds = projectids
          @ViewNames = viewnames
          @FilterUnuseReceiver = filterunusereceiver
          @Receivers = receivers
          @ReceiverUserList = receiveruserlist
          @Dimensions = dimensions
          @ConditionTempGroupId = conditiontempgroupid
          @ReceiverType = receivertype
          @IsOpen = isopen
        end

        def deserialize(params)
          @Module = params['Module']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @Like = params['Like']
          @InstanceGroupId = params['InstanceGroupId']
          @UpdateTimeOrder = params['UpdateTimeOrder']
          @ProjectIds = params['ProjectIds']
          @ViewNames = params['ViewNames']
          @FilterUnuseReceiver = params['FilterUnuseReceiver']
          @Receivers = params['Receivers']
          @ReceiverUserList = params['ReceiverUserList']
          @Dimensions = params['Dimensions']
          @ConditionTempGroupId = params['ConditionTempGroupId']
          @ReceiverType = params['ReceiverType']
          @IsOpen = params['IsOpen']
        end
      end

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

        attr_accessor :GroupList, :Total, :RequestId
        
        def initialize(grouplist=nil, total=nil, requestid=nil)
          @GroupList = grouplist
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['GroupList'].nil?
            @GroupList = []
            params['GroupList'].each do |i|
              describepolicygrouplistgroup_tmp = DescribePolicyGroupListGroup.new
              describepolicygrouplistgroup_tmp.deserialize(i)
              @GroupList << describepolicygrouplistgroup_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeProductEventList的入参Dimensions
      class DescribeProductEventListDimensions < TencentCloud::Common::AbstractModel
        # @param Name: 维度名
        # @type Name: String
        # @param Value: 维度值
        # @type Value: String

        attr_accessor :Name, :Value
        
        def initialize(name=nil, value=nil)
          @Name = name
          @Value = value
        end

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

      # DescribeProductEventList返回的Events
      class DescribeProductEventListEvents < TencentCloud::Common::AbstractModel
        # @param EventId: 事件ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventId: Integer
        # @param EventCName: 事件中文名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventCName: String
        # @param EventEName: 事件英文名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventEName: String
        # @param EventName: 事件简称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventName: String
        # @param ProductCName: 产品中文名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProductCName: String
        # @param ProductEName: 产品英文名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProductEName: String
        # @param ProductName: 产品简称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProductName: String
        # @param InstanceId: 实例ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceId: String
        # @param InstanceName: 实例名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceName: String
        # @param ProjectId: 项目ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectId: String
        # @param Region: 地域
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Region: String
        # @param Status: 状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: String
        # @param SupportAlarm: 是否支持告警
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SupportAlarm: Integer
        # @param Type: 事件类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: String
        # @param StartTime: 开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartTime: Integer
        # @param UpdateTime: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdateTime: Integer
        # @param Dimensions: 实例对象信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Dimensions: Array
        # @param AdditionMsg: 实例对象附加信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AdditionMsg: Array
        # @param IsAlarmConfig: 是否配置告警
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsAlarmConfig: Integer
        # @param GroupInfo: 策略信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupInfo: Array
        # @param ViewName: 显示名称ViewName
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ViewName: String

        attr_accessor :EventId, :EventCName, :EventEName, :EventName, :ProductCName, :ProductEName, :ProductName, :InstanceId, :InstanceName, :ProjectId, :Region, :Status, :SupportAlarm, :Type, :StartTime, :UpdateTime, :Dimensions, :AdditionMsg, :IsAlarmConfig, :GroupInfo, :ViewName
        
        def initialize(eventid=nil, eventcname=nil, eventename=nil, eventname=nil, productcname=nil, productename=nil, productname=nil, instanceid=nil, instancename=nil, projectid=nil, region=nil, status=nil, supportalarm=nil, type=nil, starttime=nil, updatetime=nil, dimensions=nil, additionmsg=nil, isalarmconfig=nil, groupinfo=nil, viewname=nil)
          @EventId = eventid
          @EventCName = eventcname
          @EventEName = eventename
          @EventName = eventname
          @ProductCName = productcname
          @ProductEName = productename
          @ProductName = productname
          @InstanceId = instanceid
          @InstanceName = instancename
          @ProjectId = projectid
          @Region = region
          @Status = status
          @SupportAlarm = supportalarm
          @Type = type
          @StartTime = starttime
          @UpdateTime = updatetime
          @Dimensions = dimensions
          @AdditionMsg = additionmsg
          @IsAlarmConfig = isalarmconfig
          @GroupInfo = groupinfo
          @ViewName = viewname
        end

        def deserialize(params)
          @EventId = params['EventId']
          @EventCName = params['EventCName']
          @EventEName = params['EventEName']
          @EventName = params['EventName']
          @ProductCName = params['ProductCName']
          @ProductEName = params['ProductEName']
          @ProductName = params['ProductName']
          @InstanceId = params['InstanceId']
          @InstanceName = params['InstanceName']
          @ProjectId = params['ProjectId']
          @Region = params['Region']
          @Status = params['Status']
          @SupportAlarm = params['SupportAlarm']
          @Type = params['Type']
          @StartTime = params['StartTime']
          @UpdateTime = params['UpdateTime']
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              describeproducteventlisteventsdimensions_tmp = DescribeProductEventListEventsDimensions.new
              describeproducteventlisteventsdimensions_tmp.deserialize(i)
              @Dimensions << describeproducteventlisteventsdimensions_tmp
            end
          end
          unless params['AdditionMsg'].nil?
            @AdditionMsg = []
            params['AdditionMsg'].each do |i|
              describeproducteventlisteventsdimensions_tmp = DescribeProductEventListEventsDimensions.new
              describeproducteventlisteventsdimensions_tmp.deserialize(i)
              @AdditionMsg << describeproducteventlisteventsdimensions_tmp
            end
          end
          @IsAlarmConfig = params['IsAlarmConfig']
          unless params['GroupInfo'].nil?
            @GroupInfo = []
            params['GroupInfo'].each do |i|
              describeproducteventlisteventsgroupinfo_tmp = DescribeProductEventListEventsGroupInfo.new
              describeproducteventlisteventsgroupinfo_tmp.deserialize(i)
              @GroupInfo << describeproducteventlisteventsgroupinfo_tmp
            end
          end
          @ViewName = params['ViewName']
        end
      end

      # DescribeProductEventList返回的Events的Dimensions
      class DescribeProductEventListEventsDimensions < TencentCloud::Common::AbstractModel
        # @param Key: 维度名(英文)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Key: String
        # @param Name: 维度名(中文)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Name: String
        # @param Value: 维度值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Value: String

        attr_accessor :Key, :Name, :Value
        
        def initialize(key=nil, name=nil, value=nil)
          @Key = key
          @Name = name
          @Value = value
        end

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

      # DescribeProductEventList返回的Events里的GroupInfo
      class DescribeProductEventListEventsGroupInfo < TencentCloud::Common::AbstractModel
        # @param GroupId: 策略ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupId: Integer
        # @param GroupName: 策略名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupName: String

        attr_accessor :GroupId, :GroupName
        
        def initialize(groupid=nil, groupname=nil)
          @GroupId = groupid
          @GroupName = groupname
        end

        def deserialize(params)
          @GroupId = params['GroupId']
          @GroupName = params['GroupName']
        end
      end

      # DescribeProductEventList返回的OverView对象
      class DescribeProductEventListOverView < TencentCloud::Common::AbstractModel
        # @param StatusChangeAmount: 状态变更的事件数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StatusChangeAmount: Integer
        # @param UnConfigAlarmAmount: 告警状态未配置的事件数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UnConfigAlarmAmount: Integer
        # @param UnNormalEventAmount: 异常事件数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UnNormalEventAmount: Integer
        # @param UnRecoverAmount: 未恢复的事件数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UnRecoverAmount: Integer

        attr_accessor :StatusChangeAmount, :UnConfigAlarmAmount, :UnNormalEventAmount, :UnRecoverAmount
        
        def initialize(statuschangeamount=nil, unconfigalarmamount=nil, unnormaleventamount=nil, unrecoveramount=nil)
          @StatusChangeAmount = statuschangeamount
          @UnConfigAlarmAmount = unconfigalarmamount
          @UnNormalEventAmount = unnormaleventamount
          @UnRecoverAmount = unrecoveramount
        end

        def deserialize(params)
          @StatusChangeAmount = params['StatusChangeAmount']
          @UnConfigAlarmAmount = params['UnConfigAlarmAmount']
          @UnNormalEventAmount = params['UnNormalEventAmount']
          @UnRecoverAmount = params['UnRecoverAmount']
        end
      end

      # DescribeProductEventList请求参数结构体
      class DescribeProductEventListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 接口模块名,固定值"monitor"
        # @type Module: String
        # @param ProductName: 产品类型过滤,比如"cvm"表示云服务器
        # @type ProductName: Array
        # @param EventName: 事件名称过滤,比如"guest_reboot"表示机器重启
        # @type EventName: Array
        # @param InstanceId: 影响对象,比如"ins-19708ino"
        # @type InstanceId: Array
        # @param Dimensions: 维度过滤,比如外网IP:10.0.0.1
        # @type Dimensions: Array
        # @param RegionList: 产品事件地域过滤参数,比如gz,各地域缩写可参见[地域列表](https://cloud.tencent.com/document/product/248/50863)
        # @type RegionList: Array
        # @param Type: 事件类型过滤,取值范围["status_change","abnormal"],分别表示状态变更、异常事件
        # @type Type: Array
        # @param Status: 事件状态过滤,取值范围["recover","alarm","-"],分别表示已恢复、未恢复、无状态
        # @type Status: Array
        # @param Project: 项目ID过滤
        # @type Project: Array
        # @param IsAlarmConfig: 告警状态配置过滤,1表示已配置,0表示未配置
        # @type IsAlarmConfig: Integer
        # @param TimeOrder: 按更新时间排序,ASC表示升序,DESC表示降序,默认DESC
        # @type TimeOrder: String
        # @param StartTime: 起始时间,默认一天前的时间戳
        # @type StartTime: Integer
        # @param EndTime: 结束时间,默认当前时间戳
        # @type EndTime: Integer
        # @param Offset: 页偏移量,默认0
        # @type Offset: Integer
        # @param Limit: 每页返回的数量,默认20
        # @type Limit: Integer

        attr_accessor :Module, :ProductName, :EventName, :InstanceId, :Dimensions, :RegionList, :Type, :Status, :Project, :IsAlarmConfig, :TimeOrder, :StartTime, :EndTime, :Offset, :Limit
        
        def initialize(_module=nil, productname=nil, eventname=nil, instanceid=nil, dimensions=nil, regionlist=nil, type=nil, status=nil, project=nil, isalarmconfig=nil, timeorder=nil, starttime=nil, endtime=nil, offset=nil, limit=nil)
          @Module = _module
          @ProductName = productname
          @EventName = eventname
          @InstanceId = instanceid
          @Dimensions = dimensions
          @RegionList = regionlist
          @Type = type
          @Status = status
          @Project = project
          @IsAlarmConfig = isalarmconfig
          @TimeOrder = timeorder
          @StartTime = starttime
          @EndTime = endtime
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @Module = params['Module']
          @ProductName = params['ProductName']
          @EventName = params['EventName']
          @InstanceId = params['InstanceId']
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              describeproducteventlistdimensions_tmp = DescribeProductEventListDimensions.new
              describeproducteventlistdimensions_tmp.deserialize(i)
              @Dimensions << describeproducteventlistdimensions_tmp
            end
          end
          @RegionList = params['RegionList']
          @Type = params['Type']
          @Status = params['Status']
          @Project = params['Project']
          @IsAlarmConfig = params['IsAlarmConfig']
          @TimeOrder = params['TimeOrder']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # DescribeProductEventList返回参数结构体
      class DescribeProductEventListResponse < TencentCloud::Common::AbstractModel
        # @param Events: 事件列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Events: Array
        # @param OverView: 事件统计
        # @type OverView: :class:`Tencentcloud::Monitor.v20180724.models.DescribeProductEventListOverView`
        # @param Total: 事件总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Events, :OverView, :Total, :RequestId
        
        def initialize(events=nil, overview=nil, total=nil, requestid=nil)
          @Events = events
          @OverView = overview
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Events'].nil?
            @Events = []
            params['Events'].each do |i|
              describeproducteventlistevents_tmp = DescribeProductEventListEvents.new
              describeproducteventlistevents_tmp.deserialize(i)
              @Events << describeproducteventlistevents_tmp
            end
          end
          unless params['OverView'].nil?
            @OverView = DescribeProductEventListOverView.new
            @OverView.deserialize(params['OverView'])
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeProductList请求参数结构体
      class DescribeProductListRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定传值monitor
        # @type Module: String
        # @param Order: 排序方式:DESC/ASC(区分大小写),默认值DESC
        # @type Order: String
        # @param Offset: 分页查询的偏移量,默认值0
        # @type Offset: Integer
        # @param Limit: 分页查询的每页数据量,默认值20
        # @type Limit: Integer

        attr_accessor :Module, :Order, :Offset, :Limit
        
        def initialize(_module=nil, order=nil, offset=nil, limit=nil)
          @Module = _module
          @Order = order
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @Module = params['Module']
          @Order = params['Order']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

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

        attr_accessor :ProductList, :TotalCount, :RequestId
        
        def initialize(productlist=nil, totalcount=nil, requestid=nil)
          @ProductList = productlist
          @TotalCount = totalcount
          @RequestId = requestid
        end

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

      # DescribePrometheusInstances请求参数结构体
      class DescribePrometheusInstancesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceIds: 按照一个或者多个实例ID查询。实例ID形如:prom-xxxxxxxx。请求的实例的上限为100。
        # @type InstanceIds: Array
        # @param InstanceStatus: 按照【实例状态】进行过滤。
        # <ul>
        # <li>1:正在创建</li>
        # <li>2:运行中</li>
        # <li>3:异常</li>
        # <li>4:重建中</li>
        # <li>5:销毁中</li>
        # <li>6:已停服</li>
        # <li>8:欠费停服中</li>
        # <li>9:欠费已停服</li>
        # </ul>
        # @type InstanceStatus: Array
        # @param InstanceName: 按照【实例名称】进行过滤。
        # @type InstanceName: String
        # @param Zones: 按照【可用区】进行过滤。可用区形如:ap-guangzhou-1。
        # @type Zones: Array
        # @param TagFilters: 按照【标签键值对】进行过滤。tag-key使用具体的标签键进行替换。
        # @type TagFilters: Array
        # @param IPv4Address: 按照【实例的IPv4地址】进行过滤。
        # @type IPv4Address: Array
        # @param Limit: 返回数量,默认为20,最大值为100。
        # @type Limit: Integer
        # @param Offset: 偏移量,默认为0。
        # @type Offset: Integer
        # @param InstanceChargeType: 按照【计费类型】进行过滤。
        # <li>2:包年包月</li>
        # <li>3:按量</li>
        # @type InstanceChargeType: Integer

        attr_accessor :InstanceIds, :InstanceStatus, :InstanceName, :Zones, :TagFilters, :IPv4Address, :Limit, :Offset, :InstanceChargeType
        
        def initialize(instanceids=nil, instancestatus=nil, instancename=nil, zones=nil, tagfilters=nil, ipv4address=nil, limit=nil, offset=nil, instancechargetype=nil)
          @InstanceIds = instanceids
          @InstanceStatus = instancestatus
          @InstanceName = instancename
          @Zones = zones
          @TagFilters = tagfilters
          @IPv4Address = ipv4address
          @Limit = limit
          @Offset = offset
          @InstanceChargeType = instancechargetype
        end

        def deserialize(params)
          @InstanceIds = params['InstanceIds']
          @InstanceStatus = params['InstanceStatus']
          @InstanceName = params['InstanceName']
          @Zones = params['Zones']
          unless params['TagFilters'].nil?
            @TagFilters = []
            params['TagFilters'].each do |i|
              prometheustag_tmp = PrometheusTag.new
              prometheustag_tmp.deserialize(i)
              @TagFilters << prometheustag_tmp
            end
          end
          @IPv4Address = params['IPv4Address']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @InstanceChargeType = params['InstanceChargeType']
        end
      end

      # DescribePrometheusInstances返回参数结构体
      class DescribePrometheusInstancesResponse < TencentCloud::Common::AbstractModel
        # @param InstanceSet: 实例详细信息列表。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceSet: Array
        # @param TotalCount: 符合条件的实例数量。
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :InstanceSet, :TotalCount, :RequestId
        
        def initialize(instanceset=nil, totalcount=nil, requestid=nil)
          @InstanceSet = instanceset
          @TotalCount = totalcount
          @RequestId = requestid
        end

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

      # DescribeServiceDiscovery请求参数结构体
      class DescribeServiceDiscoveryRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param KubeClusterId: <li>类型是 TKE,为对应的腾讯云容器服务集群 ID</li>
        # @type KubeClusterId: String
        # @param KubeType: 用户 Kubernetes 集群类型:
        # <li> 1 = 容器服务集群(TKE) </li>
        # @type KubeType: Integer

        attr_accessor :InstanceId, :KubeClusterId, :KubeType
        
        def initialize(instanceid=nil, kubeclusterid=nil, kubetype=nil)
          @InstanceId = instanceid
          @KubeClusterId = kubeclusterid
          @KubeType = kubetype
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @KubeClusterId = params['KubeClusterId']
          @KubeType = params['KubeType']
        end
      end

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

        attr_accessor :ServiceDiscoverySet, :RequestId
        
        def initialize(servicediscoveryset=nil, requestid=nil)
          @ServiceDiscoverySet = servicediscoveryset
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['ServiceDiscoverySet'].nil?
            @ServiceDiscoverySet = []
            params['ServiceDiscoverySet'].each do |i|
              servicediscoveryitem_tmp = ServiceDiscoveryItem.new
              servicediscoveryitem_tmp.deserialize(i)
              @ServiceDiscoverySet << servicediscoveryitem_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeStatisticData请求参数结构体
      class DescribeStatisticDataRequest < TencentCloud::Common::AbstractModel
        # @param Module: 所属模块,固定值,为monitor
        # @type Module: String
        # @param Namespace: 命名空间,目前只支持QCE/TKE
        # @type Namespace: String
        # @param MetricNames: 指标名列表
        # @type MetricNames: Array
        # @param Conditions: 维度条件,操作符支持=、in
        # @type Conditions: Array
        # @param Period: 统计粒度。默认取值为300,单位为s
        # @type Period: Integer
        # @param StartTime: 起始时间,默认为当前时间,如2020-12-08T19:51:23+08:00
        # @type StartTime: String
        # @param EndTime: 结束时间,默认为当前时间,如2020-12-08T19:51:23+08:00
        # @type EndTime: String
        # @param GroupBys: 按指定维度groupBy
        # @type GroupBys: Array

        attr_accessor :Module, :Namespace, :MetricNames, :Conditions, :Period, :StartTime, :EndTime, :GroupBys
        
        def initialize(_module=nil, namespace=nil, metricnames=nil, conditions=nil, period=nil, starttime=nil, endtime=nil, groupbys=nil)
          @Module = _module
          @Namespace = namespace
          @MetricNames = metricnames
          @Conditions = conditions
          @Period = period
          @StartTime = starttime
          @EndTime = endtime
          @GroupBys = groupbys
        end

        def deserialize(params)
          @Module = params['Module']
          @Namespace = params['Namespace']
          @MetricNames = params['MetricNames']
          unless params['Conditions'].nil?
            @Conditions = []
            params['Conditions'].each do |i|
              midquerycondition_tmp = MidQueryCondition.new
              midquerycondition_tmp.deserialize(i)
              @Conditions << midquerycondition_tmp
            end
          end
          @Period = params['Period']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @GroupBys = params['GroupBys']
        end
      end

      # DescribeStatisticData返回参数结构体
      class DescribeStatisticDataResponse < TencentCloud::Common::AbstractModel
        # @param Period: 统计周期
        # @type Period: Integer
        # @param StartTime: 开始时间
        # @type StartTime: String
        # @param EndTime: 结束时间
        # @type EndTime: String
        # @param Data: 监控数据
        # @type Data: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Period, :StartTime, :EndTime, :Data, :RequestId
        
        def initialize(period=nil, starttime=nil, endtime=nil, data=nil, requestid=nil)
          @Period = period
          @StartTime = starttime
          @EndTime = endtime
          @Data = data
          @RequestId = requestid
        end

        def deserialize(params)
          @Period = params['Period']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          unless params['Data'].nil?
            @Data = []
            params['Data'].each do |i|
              metricdata_tmp = MetricData.new
              metricdata_tmp.deserialize(i)
              @Data << metricdata_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 实例对象的维度组合
      class Dimension < TencentCloud::Common::AbstractModel
        # @param Name: 实例维度名称
        # @type Name: String
        # @param Value: 实例维度值
        # @type Value: String

        attr_accessor :Name, :Value
        
        def initialize(name=nil, value=nil)
          @Name = name
          @Value = value
        end

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

      # 维度信息
      class DimensionsDesc < TencentCloud::Common::AbstractModel
        # @param Dimensions: 维度名数组
        # @type Dimensions: Array

        attr_accessor :Dimensions
        
        def initialize(dimensions=nil)
          @Dimensions = dimensions
        end

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

      # 事件告警条件
      class EventCondition < TencentCloud::Common::AbstractModel
        # @param AlarmNotifyPeriod: 告警通知频率
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlarmNotifyPeriod: String
        # @param AlarmNotifyType: 重复通知策略预定义(0 - 只告警一次, 1 - 指数告警,2 - 连接告警)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlarmNotifyType: String
        # @param EventID: 事件ID
        # @type EventID: String
        # @param EventDisplayName: 事件展示名称(对外)
        # @type EventDisplayName: String
        # @param RuleID: 规则ID
        # @type RuleID: String

        attr_accessor :AlarmNotifyPeriod, :AlarmNotifyType, :EventID, :EventDisplayName, :RuleID
        
        def initialize(alarmnotifyperiod=nil, alarmnotifytype=nil, eventid=nil, eventdisplayname=nil, ruleid=nil)
          @AlarmNotifyPeriod = alarmnotifyperiod
          @AlarmNotifyType = alarmnotifytype
          @EventID = eventid
          @EventDisplayName = eventdisplayname
          @RuleID = ruleid
        end

        def deserialize(params)
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @AlarmNotifyType = params['AlarmNotifyType']
          @EventID = params['EventID']
          @EventDisplayName = params['EventDisplayName']
          @RuleID = params['RuleID']
        end
      end

      # GetMonitorData请求参数结构体
      class GetMonitorDataRequest < TencentCloud::Common::AbstractModel
        # @param Namespace: 命名空间,如QCE/CVM。各个云产品的详细命名空间说明请参阅各个产品[监控指标](https://cloud.tencent.com/document/product/248/6140)文档
        # @type Namespace: String
        # @param MetricName: 指标名称,如CPUUsage,仅支持单指标拉取。各个云产品的详细指标说明请参阅各个产品[监控指标](https://cloud.tencent.com/document/product/248/6140)文档,对应的指标英文名即为MetricName
        # @type MetricName: String
        # @param Instances: 实例对象的维度组合,格式为key-value键值对形式的集合。不同类型的实例字段完全不同,如CVM为[{"Name":"InstanceId","Value":"ins-j0hk02zo"}],Ckafka为[{"Name":"instanceId","Value":"ckafka-l49k54dd"}],COS为[{"Name":"appid","Value":"1258344699"},{"Name":"bucket","Value":"rig-1258344699"}]。各个云产品的维度请参阅各个产品[监控指标](https://cloud.tencent.com/document/product/248/6140)文档,对应的维度列即为维度组合的key,value为key对应的值。单请求最多支持批量拉取10个实例的监控数据。
        # @type Instances: Array
        # @param Period: 监控统计周期,如60。默认为取值为300,单位为s。每个指标支持的统计周期不一定相同,各个云产品支持的统计周期请参阅各个产品[监控指标](https://cloud.tencent.com/document/product/248/6140)文档,对应的统计周期列即为支持的统计周期。单请求的数据点数限制为1440个。
        # @type Period: Integer
        # @param StartTime: 起始时间,如2018-09-22T19:51:23+08:00
        # @type StartTime: String
        # @param EndTime: 结束时间,如2018-09-22T20:51:23+08:00,默认为当前时间。 EndTime不能小于StartTime
        # @type EndTime: String

        attr_accessor :Namespace, :MetricName, :Instances, :Period, :StartTime, :EndTime
        
        def initialize(namespace=nil, metricname=nil, instances=nil, period=nil, starttime=nil, endtime=nil)
          @Namespace = namespace
          @MetricName = metricname
          @Instances = instances
          @Period = period
          @StartTime = starttime
          @EndTime = endtime
        end

        def deserialize(params)
          @Namespace = params['Namespace']
          @MetricName = params['MetricName']
          unless params['Instances'].nil?
            @Instances = []
            params['Instances'].each do |i|
              instance_tmp = Instance.new
              instance_tmp.deserialize(i)
              @Instances << instance_tmp
            end
          end
          @Period = params['Period']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
        end
      end

      # GetMonitorData返回参数结构体
      class GetMonitorDataResponse < TencentCloud::Common::AbstractModel
        # @param Period: 统计周期
        # @type Period: Integer
        # @param MetricName: 指标名
        # @type MetricName: String
        # @param DataPoints: 数据点数组
        # @type DataPoints: Array
        # @param StartTime: 开始时间
        # @type StartTime: String
        # @param EndTime: 结束时间
        # @type EndTime: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Period, :MetricName, :DataPoints, :StartTime, :EndTime, :RequestId
        
        def initialize(period=nil, metricname=nil, datapoints=nil, starttime=nil, endtime=nil, requestid=nil)
          @Period = period
          @MetricName = metricname
          @DataPoints = datapoints
          @StartTime = starttime
          @EndTime = endtime
          @RequestId = requestid
        end

        def deserialize(params)
          @Period = params['Period']
          @MetricName = params['MetricName']
          unless params['DataPoints'].nil?
            @DataPoints = []
            params['DataPoints'].each do |i|
              datapoint_tmp = DataPoint.new
              datapoint_tmp.deserialize(i)
              @DataPoints << datapoint_tmp
            end
          end
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @RequestId = params['RequestId']
        end
      end

      # 实例维度组合数组
      class Instance < TencentCloud::Common::AbstractModel
        # @param Dimensions: 实例的维度组合
        # @type Dimensions: Array

        attr_accessor :Dimensions
        
        def initialize(dimensions=nil)
          @Dimensions = dimensions
        end

        def deserialize(params)
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              dimension_tmp = Dimension.new
              dimension_tmp.deserialize(i)
              @Dimensions << dimension_tmp
            end
          end
        end
      end

      # DescribeBasicAlarmList返回的Alarms里的InstanceGroup
      class InstanceGroup < TencentCloud::Common::AbstractModel
        # @param InstanceGroupId: 实例组ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceGroupId: Integer
        # @param InstanceGroupName: 实例组名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceGroupName: String

        attr_accessor :InstanceGroupId, :InstanceGroupName
        
        def initialize(instancegroupid=nil, instancegroupname=nil)
          @InstanceGroupId = instancegroupid
          @InstanceGroupName = instancegroupname
        end

        def deserialize(params)
          @InstanceGroupId = params['InstanceGroupId']
          @InstanceGroupName = params['InstanceGroupName']
        end
      end

      # 告警对象所属实例组
      class InstanceGroups < TencentCloud::Common::AbstractModel
        # @param Id: 实例组 Id
        # @type Id: Integer
        # @param Name: 实例组名称
        # @type Name: String

        attr_accessor :Id, :Name
        
        def initialize(id=nil, name=nil)
          @Id = id
          @Name = name
        end

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

      # 指标,可用于设置告警、查询数据
      class Metric < TencentCloud::Common::AbstractModel
        # @param Namespace: 告警策略类型
        # @type Namespace: String
        # @param MetricName: 指标名
        # @type MetricName: String
        # @param Description: 指标展示名
        # @type Description: String
        # @param Min: 最小值
        # @type Min: Float
        # @param Max: 最大值
        # @type Max: Float
        # @param Dimensions: 维度列表
        # @type Dimensions: Array
        # @param Unit: 单位
        # @type Unit: String
        # @param MetricConfig: 指标配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricConfig: :class:`Tencentcloud::Monitor.v20180724.models.MetricConfig`

        attr_accessor :Namespace, :MetricName, :Description, :Min, :Max, :Dimensions, :Unit, :MetricConfig
        
        def initialize(namespace=nil, metricname=nil, description=nil, min=nil, max=nil, dimensions=nil, unit=nil, metricconfig=nil)
          @Namespace = namespace
          @MetricName = metricname
          @Description = description
          @Min = min
          @Max = max
          @Dimensions = dimensions
          @Unit = unit
          @MetricConfig = metricconfig
        end

        def deserialize(params)
          @Namespace = params['Namespace']
          @MetricName = params['MetricName']
          @Description = params['Description']
          @Min = params['Min']
          @Max = params['Max']
          @Dimensions = params['Dimensions']
          @Unit = params['Unit']
          unless params['MetricConfig'].nil?
            @MetricConfig = MetricConfig.new
            @MetricConfig.deserialize(params['MetricConfig'])
          end
        end
      end

      # 指标配置
      class MetricConfig < TencentCloud::Common::AbstractModel
        # @param Operator: 允许使用的运算符
        # @type Operator: Array
        # @param Period: 允许配置的数据周期,以秒为单位
        # @type Period: Array
        # @param ContinuePeriod: 允许配置的持续周期个数
        # @type ContinuePeriod: Array

        attr_accessor :Operator, :Period, :ContinuePeriod
        
        def initialize(operator=nil, period=nil, continueperiod=nil)
          @Operator = operator
          @Period = period
          @ContinuePeriod = continueperiod
        end

        def deserialize(params)
          @Operator = params['Operator']
          @Period = params['Period']
          @ContinuePeriod = params['ContinuePeriod']
        end
      end

      # DescribeMetricData接口出参
      class MetricData < TencentCloud::Common::AbstractModel
        # @param MetricName: 指标名
        # @type MetricName: String
        # @param Points: 监控数据点
        # @type Points: Array

        attr_accessor :MetricName, :Points
        
        def initialize(metricname=nil, points=nil)
          @MetricName = metricname
          @Points = points
        end

        def deserialize(params)
          @MetricName = params['MetricName']
          unless params['Points'].nil?
            @Points = []
            params['Points'].each do |i|
              metricdatapoint_tmp = MetricDataPoint.new
              metricdatapoint_tmp.deserialize(i)
              @Points << metricdatapoint_tmp
            end
          end
        end
      end

      # DescribeMetricData出参
      class MetricDataPoint < TencentCloud::Common::AbstractModel
        # @param Dimensions: 实例对象维度组合
        # @type Dimensions: Array
        # @param Values: 数据点列表
        # @type Values: Array

        attr_accessor :Dimensions, :Values
        
        def initialize(dimensions=nil, values=nil)
          @Dimensions = dimensions
          @Values = values
        end

        def deserialize(params)
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              dimension_tmp = Dimension.new
              dimension_tmp.deserialize(i)
              @Dimensions << dimension_tmp
            end
          end
          unless params['Values'].nil?
            @Values = []
            params['Values'].each do |i|
              point_tmp = Point.new
              point_tmp.deserialize(i)
              @Values << point_tmp
            end
          end
        end
      end

      # 指标名称和值的封装
      class MetricDatum < TencentCloud::Common::AbstractModel
        # @param MetricName: 指标名称
        # @type MetricName: String
        # @param Value: 指标的值
        # @type Value: Integer

        attr_accessor :MetricName, :Value
        
        def initialize(metricname=nil, value=nil)
          @MetricName = metricname
          @Value = value
        end

        def deserialize(params)
          @MetricName = params['MetricName']
          @Value = params['Value']
        end
      end

      # 指标数据的解释
      class MetricObjectMeaning < TencentCloud::Common::AbstractModel
        # @param En: 指标英文解释
        # @type En: String
        # @param Zh: 指标中文解释
        # @type Zh: String

        attr_accessor :En, :Zh
        
        def initialize(en=nil, zh=nil)
          @En = en
          @Zh = zh
        end

        def deserialize(params)
          @En = params['En']
          @Zh = params['Zh']
        end
      end

      # 对业务指标的单位及支持统计周期的描述
      class MetricSet < TencentCloud::Common::AbstractModel
        # @param Namespace: 命名空间,每个云产品会有一个命名空间
        # @type Namespace: String
        # @param MetricName: 指标名称
        # @type MetricName: String
        # @param Unit: 指标使用的单位
        # @type Unit: String
        # @param UnitCname: 指标使用的单位
        # @type UnitCname: String
        # @param Period: 指标支持的统计周期,单位是秒,如60、300
        # @type Period: Array
        # @param Periods: 统计周期内指标方式
        # @type Periods: Array
        # @param Meaning: 统计指标含义解释
        # @type Meaning: :class:`Tencentcloud::Monitor.v20180724.models.MetricObjectMeaning`
        # @param Dimensions: 维度描述信息
        # @type Dimensions: Array
        # @param MetricCName: 指标中文名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricCName: String
        # @param MetricEName: 指标英文名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricEName: String

        attr_accessor :Namespace, :MetricName, :Unit, :UnitCname, :Period, :Periods, :Meaning, :Dimensions, :MetricCName, :MetricEName
        
        def initialize(namespace=nil, metricname=nil, unit=nil, unitcname=nil, period=nil, periods=nil, meaning=nil, dimensions=nil, metriccname=nil, metricename=nil)
          @Namespace = namespace
          @MetricName = metricname
          @Unit = unit
          @UnitCname = unitcname
          @Period = period
          @Periods = periods
          @Meaning = meaning
          @Dimensions = dimensions
          @MetricCName = metriccname
          @MetricEName = metricename
        end

        def deserialize(params)
          @Namespace = params['Namespace']
          @MetricName = params['MetricName']
          @Unit = params['Unit']
          @UnitCname = params['UnitCname']
          @Period = params['Period']
          unless params['Periods'].nil?
            @Periods = []
            params['Periods'].each do |i|
              periodsst_tmp = PeriodsSt.new
              periodsst_tmp.deserialize(i)
              @Periods << periodsst_tmp
            end
          end
          unless params['Meaning'].nil?
            @Meaning = MetricObjectMeaning.new
            @Meaning.deserialize(params['Meaning'])
          end
          unless params['Dimensions'].nil?
            @Dimensions = []
            params['Dimensions'].each do |i|
              dimensionsdesc_tmp = DimensionsDesc.new
              dimensionsdesc_tmp.deserialize(i)
              @Dimensions << dimensionsdesc_tmp
            end
          end
          @MetricCName = params['MetricCName']
          @MetricEName = params['MetricEName']
        end
      end

      # DescribeMidDimensionValueList的查询条件
      class MidQueryCondition < TencentCloud::Common::AbstractModel
        # @param Key: 维度
        # @type Key: String
        # @param Operator: 操作符,支持等于(eq)、不等于(ne),以及in
        # @type Operator: String
        # @param Value: 维度值,当Op是eq、ne时,只使用第一个元素
        # @type Value: Array

        attr_accessor :Key, :Operator, :Value
        
        def initialize(key=nil, operator=nil, value=nil)
          @Key = key
          @Operator = operator
          @Value = value
        end

        def deserialize(params)
          @Key = params['Key']
          @Operator = params['Operator']
          @Value = params['Value']
        end
      end

      # ModifyAlarmNotice请求参数结构体
      class ModifyAlarmNoticeRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param Name: 告警通知规则名称 60字符以内
        # @type Name: String
        # @param NoticeType: 通知类型 ALARM=未恢复通知 OK=已恢复通知 ALL=都通知
        # @type NoticeType: String
        # @param NoticeLanguage: 通知语言 zh-CN=中文 en-US=英文
        # @type NoticeLanguage: String
        # @param NoticeId: 告警通知模板 ID
        # @type NoticeId: String
        # @param UserNotices: 用户通知 最多5个
        # @type UserNotices: Array
        # @param URLNotices: 回调通知 最多3个
        # @type URLNotices: Array

        attr_accessor :Module, :Name, :NoticeType, :NoticeLanguage, :NoticeId, :UserNotices, :URLNotices
        
        def initialize(_module=nil, name=nil, noticetype=nil, noticelanguage=nil, noticeid=nil, usernotices=nil, urlnotices=nil)
          @Module = _module
          @Name = name
          @NoticeType = noticetype
          @NoticeLanguage = noticelanguage
          @NoticeId = noticeid
          @UserNotices = usernotices
          @URLNotices = urlnotices
        end

        def deserialize(params)
          @Module = params['Module']
          @Name = params['Name']
          @NoticeType = params['NoticeType']
          @NoticeLanguage = params['NoticeLanguage']
          @NoticeId = params['NoticeId']
          unless params['UserNotices'].nil?
            @UserNotices = []
            params['UserNotices'].each do |i|
              usernotice_tmp = UserNotice.new
              usernotice_tmp.deserialize(i)
              @UserNotices << usernotice_tmp
            end
          end
          unless params['URLNotices'].nil?
            @URLNotices = []
            params['URLNotices'].each do |i|
              urlnotice_tmp = URLNotice.new
              urlnotice_tmp.deserialize(i)
              @URLNotices << urlnotice_tmp
            end
          end
        end
      end

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

      # ModifyAlarmPolicyCondition请求参数结构体
      class ModifyAlarmPolicyConditionRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,固定值 monitor
        # @type Module: String
        # @param PolicyId: 告警策略 ID
        # @type PolicyId: String
        # @param ConditionTemplateId: 触发条件模板 Id,可不传
        # @type ConditionTemplateId: Integer
        # @param Condition: 指标触发条件
        # @type Condition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyCondition`
        # @param EventCondition: 事件触发条件
        # @type EventCondition: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyEventCondition`
        # @param Filter: 全局过滤条件
        # @type Filter: :class:`Tencentcloud::Monitor.v20180724.models.AlarmPolicyFilter`
        # @param GroupBy: 聚合维度列表,指定按哪些维度 key 来做 group by
        # @type GroupBy: Array

        attr_accessor :Module, :PolicyId, :ConditionTemplateId, :Condition, :EventCondition, :Filter, :GroupBy
        
        def initialize(_module=nil, policyid=nil, conditiontemplateid=nil, condition=nil, eventcondition=nil, filter=nil, groupby=nil)
          @Module = _module
          @PolicyId = policyid
          @ConditionTemplateId = conditiontemplateid
          @Condition = condition
          @EventCondition = eventcondition
          @Filter = filter
          @GroupBy = groupby
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
          @ConditionTemplateId = params['ConditionTemplateId']
          unless params['Condition'].nil?
            @Condition = AlarmPolicyCondition.new
            @Condition.deserialize(params['Condition'])
          end
          unless params['EventCondition'].nil?
            @EventCondition = AlarmPolicyEventCondition.new
            @EventCondition.deserialize(params['EventCondition'])
          end
          unless params['Filter'].nil?
            @Filter = AlarmPolicyFilter.new
            @Filter.deserialize(params['Filter'])
          end
          @GroupBy = params['GroupBy']
        end
      end

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

      # ModifyAlarmPolicyInfo请求参数结构体
      class ModifyAlarmPolicyInfoRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param PolicyId: 告警策略 ID
        # @type PolicyId: String
        # @param Key: 要修改的字段 NAME=策略名称 REMARK=策略备注
        # @type Key: String
        # @param Value: 修改后的值
        # @type Value: String

        attr_accessor :Module, :PolicyId, :Key, :Value
        
        def initialize(_module=nil, policyid=nil, key=nil, value=nil)
          @Module = _module
          @PolicyId = policyid
          @Key = key
          @Value = value
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
          @Key = params['Key']
          @Value = params['Value']
        end
      end

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

      # ModifyAlarmPolicyNotice请求参数结构体
      class ModifyAlarmPolicyNoticeRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param PolicyId: 告警策略 ID
        # @type PolicyId: String
        # @param NoticeIds: 告警通知模板 ID 列表
        # @type NoticeIds: Array

        attr_accessor :Module, :PolicyId, :NoticeIds
        
        def initialize(_module=nil, policyid=nil, noticeids=nil)
          @Module = _module
          @PolicyId = policyid
          @NoticeIds = noticeids
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
          @NoticeIds = params['NoticeIds']
        end
      end

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

      # ModifyAlarmPolicyStatus请求参数结构体
      class ModifyAlarmPolicyStatusRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,固定值 monitor
        # @type Module: String
        # @param PolicyId: 告警策略 ID
        # @type PolicyId: String
        # @param Enable: 启停状态 0=停用 1=启用
        # @type Enable: Integer

        attr_accessor :Module, :PolicyId, :Enable
        
        def initialize(_module=nil, policyid=nil, enable=nil)
          @Module = _module
          @PolicyId = policyid
          @Enable = enable
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
          @Enable = params['Enable']
        end
      end

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

      # ModifyAlarmPolicyTasks请求参数结构体
      class ModifyAlarmPolicyTasksRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,这里填“monitor”
        # @type Module: String
        # @param PolicyId: 告警策略 ID
        # @type PolicyId: String
        # @param TriggerTasks: 告警策略触发任务列表,空数据代表解绑
        # @type TriggerTasks: Array

        attr_accessor :Module, :PolicyId, :TriggerTasks
        
        def initialize(_module=nil, policyid=nil, triggertasks=nil)
          @Module = _module
          @PolicyId = policyid
          @TriggerTasks = triggertasks
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
          unless params['TriggerTasks'].nil?
            @TriggerTasks = []
            params['TriggerTasks'].each do |i|
              alarmpolicytriggertask_tmp = AlarmPolicyTriggerTask.new
              alarmpolicytriggertask_tmp.deserialize(i)
              @TriggerTasks << alarmpolicytriggertask_tmp
            end
          end
        end
      end

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

      # ModifyAlarmReceivers请求参数结构体
      class ModifyAlarmReceiversRequest < TencentCloud::Common::AbstractModel
        # @param GroupId: 需要修改接收人的策略组Id
        # @type GroupId: Integer
        # @param Module: 必填。固定为“monitor”
        # @type Module: String
        # @param ReceiverInfos: 新接收人信息, 没有填写则删除所有接收人
        # @type ReceiverInfos: Array

        attr_accessor :GroupId, :Module, :ReceiverInfos
        
        def initialize(groupid=nil, _module=nil, receiverinfos=nil)
          @GroupId = groupid
          @Module = _module
          @ReceiverInfos = receiverinfos
        end

        def deserialize(params)
          @GroupId = params['GroupId']
          @Module = params['Module']
          unless params['ReceiverInfos'].nil?
            @ReceiverInfos = []
            params['ReceiverInfos'].each do |i|
              receiverinfo_tmp = ReceiverInfo.new
              receiverinfo_tmp.deserialize(i)
              @ReceiverInfos << receiverinfo_tmp
            end
          end
        end
      end

      # ModifyAlarmReceivers返回参数结构体
      class ModifyAlarmReceiversResponse < 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 ModifyPolicyGroupCondition < TencentCloud::Common::AbstractModel
        # @param MetricId: 指标id
        # @type MetricId: Integer
        # @param CalcType: 比较类型,1表示大于,2表示大于等于,3表示小于,4表示小于等于,5表示相等,6表示不相等
        # @type CalcType: Integer
        # @param CalcValue: 检测阈值
        # @type CalcValue: String
        # @param CalcPeriod: 检测指标的数据周期
        # @type CalcPeriod: Integer
        # @param ContinuePeriod: 持续周期个数
        # @type ContinuePeriod: Integer
        # @param AlarmNotifyType: 告警发送收敛类型。0连续告警,1指数告警
        # @type AlarmNotifyType: Integer
        # @param AlarmNotifyPeriod: 告警发送周期单位秒。<0 不触发, 0 只触发一次, >0 每隔triggerTime秒触发一次
        # @type AlarmNotifyPeriod: Integer
        # @param RuleId: 规则id,不填表示新增,填写了ruleId表示在已存在的规则基础上进行修改
        # @type RuleId: Integer

        attr_accessor :MetricId, :CalcType, :CalcValue, :CalcPeriod, :ContinuePeriod, :AlarmNotifyType, :AlarmNotifyPeriod, :RuleId
        
        def initialize(metricid=nil, calctype=nil, calcvalue=nil, calcperiod=nil, continueperiod=nil, alarmnotifytype=nil, alarmnotifyperiod=nil, ruleid=nil)
          @MetricId = metricid
          @CalcType = calctype
          @CalcValue = calcvalue
          @CalcPeriod = calcperiod
          @ContinuePeriod = continueperiod
          @AlarmNotifyType = alarmnotifytype
          @AlarmNotifyPeriod = alarmnotifyperiod
          @RuleId = ruleid
        end

        def deserialize(params)
          @MetricId = params['MetricId']
          @CalcType = params['CalcType']
          @CalcValue = params['CalcValue']
          @CalcPeriod = params['CalcPeriod']
          @ContinuePeriod = params['ContinuePeriod']
          @AlarmNotifyType = params['AlarmNotifyType']
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @RuleId = params['RuleId']
        end
      end

      # 修改告警策略组传入的事件告警条件
      class ModifyPolicyGroupEventCondition < TencentCloud::Common::AbstractModel
        # @param EventId: 事件id
        # @type EventId: Integer
        # @param AlarmNotifyType: 告警发送收敛类型。0连续告警,1指数告警
        # @type AlarmNotifyType: Integer
        # @param AlarmNotifyPeriod: 告警发送周期单位秒。<0 不触发, 0 只触发一次, >0 每隔triggerTime秒触发一次
        # @type AlarmNotifyPeriod: Integer
        # @param RuleId: 规则id,不填表示新增,填写了ruleId表示在已存在的规则基础上进行修改
        # @type RuleId: Integer

        attr_accessor :EventId, :AlarmNotifyType, :AlarmNotifyPeriod, :RuleId
        
        def initialize(eventid=nil, alarmnotifytype=nil, alarmnotifyperiod=nil, ruleid=nil)
          @EventId = eventid
          @AlarmNotifyType = alarmnotifytype
          @AlarmNotifyPeriod = alarmnotifyperiod
          @RuleId = ruleid
        end

        def deserialize(params)
          @EventId = params['EventId']
          @AlarmNotifyType = params['AlarmNotifyType']
          @AlarmNotifyPeriod = params['AlarmNotifyPeriod']
          @RuleId = params['RuleId']
        end
      end

      # ModifyPolicyGroup请求参数结构体
      class ModifyPolicyGroupRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param GroupId: 策略组id
        # @type GroupId: Integer
        # @param ViewName: 告警类型
        # @type ViewName: String
        # @param GroupName: 策略组名称
        # @type GroupName: String
        # @param IsUnionRule: 指标告警条件的且或关系,1表示且告警,所有指标告警条件都达到才告警,0表示或告警,任意指标告警条件达到都告警
        # @type IsUnionRule: Integer
        # @param Conditions: 指标告警条件规则,不填表示删除已有的所有指标告警条件规则
        # @type Conditions: Array
        # @param EventConditions: 事件告警条件,不填表示删除已有的事件告警条件
        # @type EventConditions: Array
        # @param ConditionTempGroupId: 模板策略组id
        # @type ConditionTempGroupId: Integer

        attr_accessor :Module, :GroupId, :ViewName, :GroupName, :IsUnionRule, :Conditions, :EventConditions, :ConditionTempGroupId
        
        def initialize(_module=nil, groupid=nil, viewname=nil, groupname=nil, isunionrule=nil, conditions=nil, eventconditions=nil, conditiontempgroupid=nil)
          @Module = _module
          @GroupId = groupid
          @ViewName = viewname
          @GroupName = groupname
          @IsUnionRule = isunionrule
          @Conditions = conditions
          @EventConditions = eventconditions
          @ConditionTempGroupId = conditiontempgroupid
        end

        def deserialize(params)
          @Module = params['Module']
          @GroupId = params['GroupId']
          @ViewName = params['ViewName']
          @GroupName = params['GroupName']
          @IsUnionRule = params['IsUnionRule']
          unless params['Conditions'].nil?
            @Conditions = []
            params['Conditions'].each do |i|
              modifypolicygroupcondition_tmp = ModifyPolicyGroupCondition.new
              modifypolicygroupcondition_tmp.deserialize(i)
              @Conditions << modifypolicygroupcondition_tmp
            end
          end
          unless params['EventConditions'].nil?
            @EventConditions = []
            params['EventConditions'].each do |i|
              modifypolicygroupeventcondition_tmp = ModifyPolicyGroupEventCondition.new
              modifypolicygroupeventcondition_tmp.deserialize(i)
              @EventConditions << modifypolicygroupeventcondition_tmp
            end
          end
          @ConditionTempGroupId = params['ConditionTempGroupId']
        end
      end

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

        attr_accessor :GroupId, :RequestId
        
        def initialize(groupid=nil, requestid=nil)
          @GroupId = groupid
          @RequestId = requestid
        end

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

      # 策略类型
      class MonitorTypeNamespace < TencentCloud::Common::AbstractModel
        # @param MonitorType: 监控类型
        # @type MonitorType: String
        # @param Namespace: 策略类型值
        # @type Namespace: String

        attr_accessor :MonitorType, :Namespace
        
        def initialize(monitortype=nil, namespace=nil)
          @MonitorType = monitortype
          @Namespace = namespace
        end

        def deserialize(params)
          @MonitorType = params['MonitorType']
          @Namespace = params['Namespace']
        end
      end

      # 周期内的统计方式
      class PeriodsSt < TencentCloud::Common::AbstractModel
        # @param Period: 周期
        # @type Period: String
        # @param StatType: 统计方式
        # @type StatType: Array

        attr_accessor :Period, :StatType
        
        def initialize(period=nil, stattype=nil)
          @Period = period
          @StatType = stattype
        end

        def deserialize(params)
          @Period = params['Period']
          @StatType = params['StatType']
        end
      end

      # 监控数据点
      class Point < TencentCloud::Common::AbstractModel
        # @param Timestamp: 该监控数据点生成的时间点
        # @type Timestamp: Integer
        # @param Value: 监控数据点的值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Value: Float

        attr_accessor :Timestamp, :Value
        
        def initialize(timestamp=nil, value=nil)
          @Timestamp = timestamp
          @Value = value
        end

        def deserialize(params)
          @Timestamp = params['Timestamp']
          @Value = params['Value']
        end
      end

      # 策略组信息
      class PolicyGroup < TencentCloud::Common::AbstractModel
        # @param CanSetDefault: 是否可设为默认告警策略
        # @type CanSetDefault: Boolean
        # @param GroupID: 告警策略组ID
        # @type GroupID: Integer
        # @param GroupName: 告警策略组名称
        # @type GroupName: String
        # @param InsertTime: 创建时间
        # @type InsertTime: Integer
        # @param IsDefault: 是否为默认告警策略
        # @type IsDefault: Integer
        # @param Enable: 告警策略启用状态
        # @type Enable: Boolean
        # @param LastEditUin: 最后修改人UIN
        # @type LastEditUin: Integer
        # @param NoShieldedInstanceCount: 未屏蔽的实例数
        # @type NoShieldedInstanceCount: Integer
        # @param ParentGroupID: 父策略组ID
        # @type ParentGroupID: Integer
        # @param ProjectID: 所属项目ID
        # @type ProjectID: Integer
        # @param ReceiverInfos: 告警接收对象信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReceiverInfos: Array
        # @param Remark: 备注信息
        # @type Remark: String
        # @param UpdateTime: 修改时间
        # @type UpdateTime: Integer
        # @param TotalInstanceCount: 总绑定实例数
        # @type TotalInstanceCount: Integer
        # @param ViewName: 视图
        # @type ViewName: String
        # @param IsUnionRule: 是否为与关系规则
        # @type IsUnionRule: Integer

        attr_accessor :CanSetDefault, :GroupID, :GroupName, :InsertTime, :IsDefault, :Enable, :LastEditUin, :NoShieldedInstanceCount, :ParentGroupID, :ProjectID, :ReceiverInfos, :Remark, :UpdateTime, :TotalInstanceCount, :ViewName, :IsUnionRule
        
        def initialize(cansetdefault=nil, groupid=nil, groupname=nil, inserttime=nil, isdefault=nil, enable=nil, lastedituin=nil, noshieldedinstancecount=nil, parentgroupid=nil, projectid=nil, receiverinfos=nil, remark=nil, updatetime=nil, totalinstancecount=nil, viewname=nil, isunionrule=nil)
          @CanSetDefault = cansetdefault
          @GroupID = groupid
          @GroupName = groupname
          @InsertTime = inserttime
          @IsDefault = isdefault
          @Enable = enable
          @LastEditUin = lastedituin
          @NoShieldedInstanceCount = noshieldedinstancecount
          @ParentGroupID = parentgroupid
          @ProjectID = projectid
          @ReceiverInfos = receiverinfos
          @Remark = remark
          @UpdateTime = updatetime
          @TotalInstanceCount = totalinstancecount
          @ViewName = viewname
          @IsUnionRule = isunionrule
        end

        def deserialize(params)
          @CanSetDefault = params['CanSetDefault']
          @GroupID = params['GroupID']
          @GroupName = params['GroupName']
          @InsertTime = params['InsertTime']
          @IsDefault = params['IsDefault']
          @Enable = params['Enable']
          @LastEditUin = params['LastEditUin']
          @NoShieldedInstanceCount = params['NoShieldedInstanceCount']
          @ParentGroupID = params['ParentGroupID']
          @ProjectID = params['ProjectID']
          unless params['ReceiverInfos'].nil?
            @ReceiverInfos = []
            params['ReceiverInfos'].each do |i|
              policygroupreceiverinfo_tmp = PolicyGroupReceiverInfo.new
              policygroupreceiverinfo_tmp.deserialize(i)
              @ReceiverInfos << policygroupreceiverinfo_tmp
            end
          end
          @Remark = params['Remark']
          @UpdateTime = params['UpdateTime']
          @TotalInstanceCount = params['TotalInstanceCount']
          @ViewName = params['ViewName']
          @IsUnionRule = params['IsUnionRule']
        end
      end

      # 2018版策略模板列表接收人信息
      class PolicyGroupReceiverInfo < TencentCloud::Common::AbstractModel
        # @param EndTime: 有效时段结束时间
        # @type EndTime: Integer
        # @param NeedSendNotice: 是否需要发送通知
        # @type NeedSendNotice: Integer
        # @param NotifyWay: 告警接收渠道
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NotifyWay: Array
        # @param PersonInterval: 电话告警对个人间隔(秒)
        # @type PersonInterval: Integer
        # @param ReceiverGroupList: 消息接收组列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReceiverGroupList: Array
        # @param ReceiverType: 接受者类型
        # @type ReceiverType: String
        # @param ReceiverUserList: 接收人列表。通过平台接口查询到的接收人id列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReceiverUserList: Array
        # @param RecoverNotify: 告警恢复通知方式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RecoverNotify: Array
        # @param RoundInterval: 电话告警每轮间隔(秒)
        # @type RoundInterval: Integer
        # @param RoundNumber: 电话告警轮数
        # @type RoundNumber: Integer
        # @param SendFor: 电话告警通知时机。可选"OCCUR"(告警时通知),"RECOVER"(恢复时通知)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SendFor: Array
        # @param StartTime: 有效时段开始时间
        # @type StartTime: Integer
        # @param UIDList: 电话告警接收者uid
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UIDList: Array

        attr_accessor :EndTime, :NeedSendNotice, :NotifyWay, :PersonInterval, :ReceiverGroupList, :ReceiverType, :ReceiverUserList, :RecoverNotify, :RoundInterval, :RoundNumber, :SendFor, :StartTime, :UIDList
        
        def initialize(endtime=nil, needsendnotice=nil, notifyway=nil, personinterval=nil, receivergrouplist=nil, receivertype=nil, receiveruserlist=nil, recovernotify=nil, roundinterval=nil, roundnumber=nil, sendfor=nil, starttime=nil, uidlist=nil)
          @EndTime = endtime
          @NeedSendNotice = needsendnotice
          @NotifyWay = notifyway
          @PersonInterval = personinterval
          @ReceiverGroupList = receivergrouplist
          @ReceiverType = receivertype
          @ReceiverUserList = receiveruserlist
          @RecoverNotify = recovernotify
          @RoundInterval = roundinterval
          @RoundNumber = roundnumber
          @SendFor = sendfor
          @StartTime = starttime
          @UIDList = uidlist
        end

        def deserialize(params)
          @EndTime = params['EndTime']
          @NeedSendNotice = params['NeedSendNotice']
          @NotifyWay = params['NotifyWay']
          @PersonInterval = params['PersonInterval']
          @ReceiverGroupList = params['ReceiverGroupList']
          @ReceiverType = params['ReceiverType']
          @ReceiverUserList = params['ReceiverUserList']
          @RecoverNotify = params['RecoverNotify']
          @RoundInterval = params['RoundInterval']
          @RoundNumber = params['RoundNumber']
          @SendFor = params['SendFor']
          @StartTime = params['StartTime']
          @UIDList = params['UIDList']
        end
      end

      # 策略标签
      class PolicyTag < TencentCloud::Common::AbstractModel
        # @param Key: 标签Key
        # @type Key: String
        # @param Value: 标签Value
        # @type Value: String

        attr_accessor :Key, :Value
        
        def initialize(key=nil, value=nil)
          @Key = key
          @Value = value
        end

        def deserialize(params)
          @Key = params['Key']
          @Value = params['Value']
        end
      end

      # 云监控支持的产品简要信息
      class ProductSimple < TencentCloud::Common::AbstractModel
        # @param Namespace: 命名空间
        # @type Namespace: String
        # @param ProductName: 产品中文名称
        # @type ProductName: String
        # @param ProductEnName: 产品英文名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProductEnName: String

        attr_accessor :Namespace, :ProductName, :ProductEnName
        
        def initialize(namespace=nil, productname=nil, productenname=nil)
          @Namespace = namespace
          @ProductName = productname
          @ProductEnName = productenname
        end

        def deserialize(params)
          @Namespace = params['Namespace']
          @ProductName = params['ProductName']
          @ProductEnName = params['ProductEnName']
        end
      end

      # 实例的授权信息
      class PrometheusInstanceGrantInfo < TencentCloud::Common::AbstractModel
        # @param HasChargeOperation: 是否有计费操作权限(1=有,2=无)
        # @type HasChargeOperation: Integer
        # @param HasVpcDisplay: 是否显示VPC信息的权限(1=有,2=无)
        # @type HasVpcDisplay: Integer
        # @param HasGrafanaStatusChange: 是否可修改Grafana的状态(1=有,2=无)
        # @type HasGrafanaStatusChange: Integer
        # @param HasAgentManage: 是否有管理agent的权限(1=有,2=无)
        # @type HasAgentManage: Integer
        # @param HasTkeManage: 是否有管理TKE集成的权限(1=有,2=无)
        # @type HasTkeManage: Integer
        # @param HasApiOperation: 是否显示API等信息(1=有, 2=无)
        # @type HasApiOperation: Integer

        attr_accessor :HasChargeOperation, :HasVpcDisplay, :HasGrafanaStatusChange, :HasAgentManage, :HasTkeManage, :HasApiOperation
        
        def initialize(haschargeoperation=nil, hasvpcdisplay=nil, hasgrafanastatuschange=nil, hasagentmanage=nil, hastkemanage=nil, hasapioperation=nil)
          @HasChargeOperation = haschargeoperation
          @HasVpcDisplay = hasvpcdisplay
          @HasGrafanaStatusChange = hasgrafanastatuschange
          @HasAgentManage = hasagentmanage
          @HasTkeManage = hastkemanage
          @HasApiOperation = hasapioperation
        end

        def deserialize(params)
          @HasChargeOperation = params['HasChargeOperation']
          @HasVpcDisplay = params['HasVpcDisplay']
          @HasGrafanaStatusChange = params['HasGrafanaStatusChange']
          @HasAgentManage = params['HasAgentManage']
          @HasTkeManage = params['HasTkeManage']
          @HasApiOperation = params['HasApiOperation']
        end
      end

      # Prometheus 服务响应体
      class PrometheusInstancesItem < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param InstanceName: 实例名称。
        # @type InstanceName: String
        # @param InstanceChargeType: 实例计费模式。取值范围:
        # <ul>
        # <li>2:包年包月</li>
        # <li>3:按量</li>
        # </ul>
        # @type InstanceChargeType: Integer
        # @param RegionId: 地域 ID
        # @type RegionId: Integer
        # @param Zone: 可用区
        # @type Zone: String
        # @param VpcId: VPC ID
        # @type VpcId: String
        # @param SubnetId: 子网 ID
        # @type SubnetId: String
        # @param DataRetentionTime: 存储周期
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DataRetentionTime: Integer
        # @param InstanceStatus: 实例业务状态。取值范围:
        # <ul>
        # <li>1:正在创建</li>
        # <li>2:运行中</li>
        # <li>3:异常</li>
        # <li>4:重建中</li>
        # <li>5:销毁中</li>
        # <li>6:已停服</li>
        # <li>8:欠费停服中</li>
        # <li>9:欠费已停服</li>
        # </ul>
        # @type InstanceStatus: Integer
        # @param GrafanaURL: Grafana 面板 URL
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GrafanaURL: String
        # @param CreatedAt: 创建时间
        # @type CreatedAt: String
        # @param EnableGrafana: 是否开启 Grafana
        # <li>0:不开启</li>
        # <li>1:开启</li>
        # @type EnableGrafana: Integer
        # @param IPv4Address: 实例IPV4地址
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IPv4Address: String
        # @param TagSpecification: 实例关联的标签列表。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TagSpecification: Array
        # @param ExpireTime: 购买的实例过期时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExpireTime: String
        # @param ChargeStatus: 计费状态
        # <ul>
        # <li>1:正常</li>
        # <li>2:过期</li>
        # <li>3:销毁</li>
        # <li>4:分配中</li>
        # <li>5:分配失败</li>
        # </ul>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChargeStatus: Integer
        # @param SpecName: 规格名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SpecName: String
        # @param AutoRenewFlag: 自动续费标记
        # <ul>
        # <li>0:不自动续费</li>
        # <li>1:开启自动续费</li>
        # <li>2:禁止自动续费</li>
        # <li>-1:无效</ii>
        # </ul>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AutoRenewFlag: Integer
        # @param IsNearExpire: 是否快过期
        # <ul>
        # <li>0:否</li>
        # <li>1:快过期</li>
        # </ul>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsNearExpire: Integer
        # @param AuthToken: 数据写入需要的 Token
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AuthToken: String
        # @param RemoteWrite: Prometheus Remote Write 的地址
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RemoteWrite: String
        # @param ApiRootPath: Prometheus HTTP Api 根地址
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApiRootPath: String
        # @param ProxyAddress: Proxy 的地址
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProxyAddress: String
        # @param GrafanaStatus: Grafana 运行状态
        # <ul>
        # <li>1:正在创建</li>
        # <li>2:运行中</li>
        # <li>3:异常</li>
        # <li>4:重启中</li>
        # <li>5:销毁中</li>
        # <li>6:已停机</li>
        # <li>7:已删除</li>
        # </ul>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GrafanaStatus: Integer
        # @param GrafanaIpWhiteList: Grafana IP 白名单列表,使用英文分号分隔
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GrafanaIpWhiteList: String
        # @param Grant: 实例的授权信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Grant: :class:`Tencentcloud::Monitor.v20180724.models.PrometheusInstanceGrantInfo`
        # @param GrafanaInstanceId: 绑定的 Grafana 实例 ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GrafanaInstanceId: String

        attr_accessor :InstanceId, :InstanceName, :InstanceChargeType, :RegionId, :Zone, :VpcId, :SubnetId, :DataRetentionTime, :InstanceStatus, :GrafanaURL, :CreatedAt, :EnableGrafana, :IPv4Address, :TagSpecification, :ExpireTime, :ChargeStatus, :SpecName, :AutoRenewFlag, :IsNearExpire, :AuthToken, :RemoteWrite, :ApiRootPath, :ProxyAddress, :GrafanaStatus, :GrafanaIpWhiteList, :Grant, :GrafanaInstanceId
        
        def initialize(instanceid=nil, instancename=nil, instancechargetype=nil, regionid=nil, zone=nil, vpcid=nil, subnetid=nil, dataretentiontime=nil, instancestatus=nil, grafanaurl=nil, createdat=nil, enablegrafana=nil, ipv4address=nil, tagspecification=nil, expiretime=nil, chargestatus=nil, specname=nil, autorenewflag=nil, isnearexpire=nil, authtoken=nil, remotewrite=nil, apirootpath=nil, proxyaddress=nil, grafanastatus=nil, grafanaipwhitelist=nil, grant=nil, grafanainstanceid=nil)
          @InstanceId = instanceid
          @InstanceName = instancename
          @InstanceChargeType = instancechargetype
          @RegionId = regionid
          @Zone = zone
          @VpcId = vpcid
          @SubnetId = subnetid
          @DataRetentionTime = dataretentiontime
          @InstanceStatus = instancestatus
          @GrafanaURL = grafanaurl
          @CreatedAt = createdat
          @EnableGrafana = enablegrafana
          @IPv4Address = ipv4address
          @TagSpecification = tagspecification
          @ExpireTime = expiretime
          @ChargeStatus = chargestatus
          @SpecName = specname
          @AutoRenewFlag = autorenewflag
          @IsNearExpire = isnearexpire
          @AuthToken = authtoken
          @RemoteWrite = remotewrite
          @ApiRootPath = apirootpath
          @ProxyAddress = proxyaddress
          @GrafanaStatus = grafanastatus
          @GrafanaIpWhiteList = grafanaipwhitelist
          @Grant = grant
          @GrafanaInstanceId = grafanainstanceid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @InstanceName = params['InstanceName']
          @InstanceChargeType = params['InstanceChargeType']
          @RegionId = params['RegionId']
          @Zone = params['Zone']
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
          @DataRetentionTime = params['DataRetentionTime']
          @InstanceStatus = params['InstanceStatus']
          @GrafanaURL = params['GrafanaURL']
          @CreatedAt = params['CreatedAt']
          @EnableGrafana = params['EnableGrafana']
          @IPv4Address = params['IPv4Address']
          unless params['TagSpecification'].nil?
            @TagSpecification = []
            params['TagSpecification'].each do |i|
              prometheustag_tmp = PrometheusTag.new
              prometheustag_tmp.deserialize(i)
              @TagSpecification << prometheustag_tmp
            end
          end
          @ExpireTime = params['ExpireTime']
          @ChargeStatus = params['ChargeStatus']
          @SpecName = params['SpecName']
          @AutoRenewFlag = params['AutoRenewFlag']
          @IsNearExpire = params['IsNearExpire']
          @AuthToken = params['AuthToken']
          @RemoteWrite = params['RemoteWrite']
          @ApiRootPath = params['ApiRootPath']
          @ProxyAddress = params['ProxyAddress']
          @GrafanaStatus = params['GrafanaStatus']
          @GrafanaIpWhiteList = params['GrafanaIpWhiteList']
          unless params['Grant'].nil?
            @Grant = PrometheusInstanceGrantInfo.new
            @Grant.deserialize(params['Grant'])
          end
          @GrafanaInstanceId = params['GrafanaInstanceId']
        end
      end

      # prometheus 报警规则 KV 参数
      class PrometheusRuleKV < TencentCloud::Common::AbstractModel
        # @param Key: 键
        # @type Key: String
        # @param Value: 值
        # @type Value: String

        attr_accessor :Key, :Value
        
        def initialize(key=nil, value=nil)
          @Key = key
          @Value = value
        end

        def deserialize(params)
          @Key = params['Key']
          @Value = params['Value']
        end
      end

      # prometheus 报警规则集
      class PrometheusRuleSet < TencentCloud::Common::AbstractModel
        # @param RuleId: 规则 ID
        # @type RuleId: String
        # @param RuleName: 规则名称
        # @type RuleName: String
        # @param RuleState: 规则状态码
        # @type RuleState: Integer
        # @param Type: 规则类别
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: String
        # @param Labels: 规则标签列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Labels: Array
        # @param Annotations: 规则注释列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Annotations: Array
        # @param Expr: 规则表达式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Expr: String
        # @param Duration: 规则报警持续时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Duration: String
        # @param Receivers: 报警接收组列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Receivers: Array
        # @param Health: 规则运行健康状态,取值如下:
        # <li>unknown 未知状态</li>
        # <li>pending 加载中</li>
        # <li>ok 运行正常</li>
        # <li>err 运行错误</li>
        # @type Health: String
        # @param CreatedAt: 规则创建时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CreatedAt: String
        # @param UpdatedAt: 规则更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedAt: String

        attr_accessor :RuleId, :RuleName, :RuleState, :Type, :Labels, :Annotations, :Expr, :Duration, :Receivers, :Health, :CreatedAt, :UpdatedAt
        
        def initialize(ruleid=nil, rulename=nil, rulestate=nil, type=nil, labels=nil, annotations=nil, expr=nil, duration=nil, receivers=nil, health=nil, createdat=nil, updatedat=nil)
          @RuleId = ruleid
          @RuleName = rulename
          @RuleState = rulestate
          @Type = type
          @Labels = labels
          @Annotations = annotations
          @Expr = expr
          @Duration = duration
          @Receivers = receivers
          @Health = health
          @CreatedAt = createdat
          @UpdatedAt = updatedat
        end

        def deserialize(params)
          @RuleId = params['RuleId']
          @RuleName = params['RuleName']
          @RuleState = params['RuleState']
          @Type = params['Type']
          unless params['Labels'].nil?
            @Labels = []
            params['Labels'].each do |i|
              prometheusrulekv_tmp = PrometheusRuleKV.new
              prometheusrulekv_tmp.deserialize(i)
              @Labels << prometheusrulekv_tmp
            end
          end
          unless params['Annotations'].nil?
            @Annotations = []
            params['Annotations'].each do |i|
              prometheusrulekv_tmp = PrometheusRuleKV.new
              prometheusrulekv_tmp.deserialize(i)
              @Annotations << prometheusrulekv_tmp
            end
          end
          @Expr = params['Expr']
          @Duration = params['Duration']
          @Receivers = params['Receivers']
          @Health = params['Health']
          @CreatedAt = params['CreatedAt']
          @UpdatedAt = params['UpdatedAt']
        end
      end

      # Prometheus 托管服务标签
      class PrometheusTag < TencentCloud::Common::AbstractModel
        # @param Key: 标签的健值
        # @type Key: String
        # @param Value: 标签对应的值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Value: String

        attr_accessor :Key, :Value
        
        def initialize(key=nil, value=nil)
          @Key = key
          @Value = value
        end

        def deserialize(params)
          @Key = params['Key']
          @Value = params['Value']
        end
      end

      # PutMonitorData请求参数结构体
      class PutMonitorDataRequest < TencentCloud::Common::AbstractModel
        # @param Metrics: 一组指标和数据
        # @type Metrics: Array
        # @param AnnounceIp: 上报时自行指定的 IP
        # @type AnnounceIp: String
        # @param AnnounceTimestamp: 上报时自行指定的时间戳
        # @type AnnounceTimestamp: Integer
        # @param AnnounceInstance: 上报时自行指定的 IP 或 产品实例ID
        # @type AnnounceInstance: String

        attr_accessor :Metrics, :AnnounceIp, :AnnounceTimestamp, :AnnounceInstance
        
        def initialize(metrics=nil, announceip=nil, announcetimestamp=nil, announceinstance=nil)
          @Metrics = metrics
          @AnnounceIp = announceip
          @AnnounceTimestamp = announcetimestamp
          @AnnounceInstance = announceinstance
        end

        def deserialize(params)
          unless params['Metrics'].nil?
            @Metrics = []
            params['Metrics'].each do |i|
              metricdatum_tmp = MetricDatum.new
              metricdatum_tmp.deserialize(i)
              @Metrics << metricdatum_tmp
            end
          end
          @AnnounceIp = params['AnnounceIp']
          @AnnounceTimestamp = params['AnnounceTimestamp']
          @AnnounceInstance = params['AnnounceInstance']
        end
      end

      # PutMonitorData返回参数结构体
      class PutMonitorDataResponse < 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 ReceiverInfo < TencentCloud::Common::AbstractModel
        # @param StartTime: 告警时间段开始时间。范围[0,86400),作为unix时间戳转成北京时间后去掉日期,例如7200表示"10:0:0"
        # @type StartTime: Integer
        # @param EndTime: 告警时间段结束时间。含义同StartTime
        # @type EndTime: Integer
        # @param NotifyWay: 告警通知方式。可选 "SMS","SITE","EMAIL","CALL","WECHAT"
        # @type NotifyWay: Array
        # @param ReceiverType: 接收人类型。“group” 或 “user”
        # @type ReceiverType: String
        # @param Id: ReceiverId
        # @type Id: Integer
        # @param SendFor: 电话告警通知时机。可选"OCCUR"(告警时通知),"RECOVER"(恢复时通知)
        # @type SendFor: Array
        # @param UidList: 电话告警接收者uid
        # @type UidList: Array
        # @param RoundNumber: 电话告警轮数
        # @type RoundNumber: Integer
        # @param PersonInterval: 电话告警对个人间隔(秒)
        # @type PersonInterval: Integer
        # @param RoundInterval: 电话告警每轮间隔(秒)
        # @type RoundInterval: Integer
        # @param RecoverNotify: 恢复通知方式。可选"SMS"
        # @type RecoverNotify: Array
        # @param NeedSendNotice: 是否需要电话告警触达提示。0不需要,1需要
        # @type NeedSendNotice: Integer
        # @param ReceiverGroupList: 接收组列表。通过平台接口查询到的接收组id列表
        # @type ReceiverGroupList: Array
        # @param ReceiverUserList: 接收人列表。通过平台接口查询到的接收人id列表
        # @type ReceiverUserList: Array
        # @param ReceiveLanguage: 告警接收语言,枚举值(zh-CN,en-US)
        # @type ReceiveLanguage: String

        attr_accessor :StartTime, :EndTime, :NotifyWay, :ReceiverType, :Id, :SendFor, :UidList, :RoundNumber, :PersonInterval, :RoundInterval, :RecoverNotify, :NeedSendNotice, :ReceiverGroupList, :ReceiverUserList, :ReceiveLanguage
        
        def initialize(starttime=nil, endtime=nil, notifyway=nil, receivertype=nil, id=nil, sendfor=nil, uidlist=nil, roundnumber=nil, personinterval=nil, roundinterval=nil, recovernotify=nil, needsendnotice=nil, receivergrouplist=nil, receiveruserlist=nil, receivelanguage=nil)
          @StartTime = starttime
          @EndTime = endtime
          @NotifyWay = notifyway
          @ReceiverType = receivertype
          @Id = id
          @SendFor = sendfor
          @UidList = uidlist
          @RoundNumber = roundnumber
          @PersonInterval = personinterval
          @RoundInterval = roundinterval
          @RecoverNotify = recovernotify
          @NeedSendNotice = needsendnotice
          @ReceiverGroupList = receivergrouplist
          @ReceiverUserList = receiveruserlist
          @ReceiveLanguage = receivelanguage
        end

        def deserialize(params)
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @NotifyWay = params['NotifyWay']
          @ReceiverType = params['ReceiverType']
          @Id = params['Id']
          @SendFor = params['SendFor']
          @UidList = params['UidList']
          @RoundNumber = params['RoundNumber']
          @PersonInterval = params['PersonInterval']
          @RoundInterval = params['RoundInterval']
          @RecoverNotify = params['RecoverNotify']
          @NeedSendNotice = params['NeedSendNotice']
          @ReceiverGroupList = params['ReceiverGroupList']
          @ReceiverUserList = params['ReceiverUserList']
          @ReceiveLanguage = params['ReceiveLanguage']
        end
      end

      # SendCustomAlarmMsg请求参数结构体
      class SendCustomAlarmMsgRequest < TencentCloud::Common::AbstractModel
        # @param Module: 接口模块名,当前取值monitor
        # @type Module: String
        # @param PolicyId: 消息策略ID,在云监控自定义消息页面配置
        # @type PolicyId: String
        # @param Msg: 用户想要发送的自定义消息内容
        # @type Msg: String

        attr_accessor :Module, :PolicyId, :Msg
        
        def initialize(_module=nil, policyid=nil, msg=nil)
          @Module = _module
          @PolicyId = policyid
          @Msg = msg
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
          @Msg = params['Msg']
        end
      end

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

      # Prometheus 服务发现信息
      class ServiceDiscoveryItem < TencentCloud::Common::AbstractModel
        # @param Name: 服务发现名称
        # @type Name: String
        # @param Namespace: 服务发现属于的 Namespace
        # @type Namespace: String
        # @param Kind: 服务发现类型: ServiceMonitor/PodMonitor
        # @type Kind: String
        # @param NamespaceSelector: Namespace 选取方式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NamespaceSelector: String
        # @param Selector: Label 选取方式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Selector: String
        # @param Endpoints: Endpoints 信息(PodMonitor 不含该参数)
        # @type Endpoints: String
        # @param Yaml: 服务发现对应的配置信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Yaml: String

        attr_accessor :Name, :Namespace, :Kind, :NamespaceSelector, :Selector, :Endpoints, :Yaml
        
        def initialize(name=nil, namespace=nil, kind=nil, namespaceselector=nil, selector=nil, endpoints=nil, yaml=nil)
          @Name = name
          @Namespace = namespace
          @Kind = kind
          @NamespaceSelector = namespaceselector
          @Selector = selector
          @Endpoints = endpoints
          @Yaml = yaml
        end

        def deserialize(params)
          @Name = params['Name']
          @Namespace = params['Namespace']
          @Kind = params['Kind']
          @NamespaceSelector = params['NamespaceSelector']
          @Selector = params['Selector']
          @Endpoints = params['Endpoints']
          @Yaml = params['Yaml']
        end
      end

      # SetDefaultAlarmPolicy请求参数结构体
      class SetDefaultAlarmPolicyRequest < TencentCloud::Common::AbstractModel
        # @param Module: 模块名,固定值 monitor
        # @type Module: String
        # @param PolicyId: 告警策略 ID
        # @type PolicyId: String

        attr_accessor :Module, :PolicyId
        
        def initialize(_module=nil, policyid=nil)
          @Module = _module
          @PolicyId = policyid
        end

        def deserialize(params)
          @Module = params['Module']
          @PolicyId = params['PolicyId']
        end
      end

      # SetDefaultAlarmPolicy返回参数结构体
      class SetDefaultAlarmPolicyResponse < 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 TagInstance < TencentCloud::Common::AbstractModel
        # @param Key: 标签Key
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Key: String
        # @param Value: 标签Value
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Value: String
        # @param InstanceSum: 实例个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceSum: Integer
        # @param ServiceType: 产品类型,如:cvm
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServiceType: String
        # @param RegionId: 地域ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RegionId: Integer
        # @param BindingStatus: 绑定状态,2:绑定成功,1:绑定中
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type BindingStatus: Integer
        # @param TagStatus: 标签状态,2:标签存在,1:标签不存在
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TagStatus: Integer

        attr_accessor :Key, :Value, :InstanceSum, :ServiceType, :RegionId, :BindingStatus, :TagStatus
        
        def initialize(key=nil, value=nil, instancesum=nil, servicetype=nil, regionid=nil, bindingstatus=nil, tagstatus=nil)
          @Key = key
          @Value = value
          @InstanceSum = instancesum
          @ServiceType = servicetype
          @RegionId = regionid
          @BindingStatus = bindingstatus
          @TagStatus = tagstatus
        end

        def deserialize(params)
          @Key = params['Key']
          @Value = params['Value']
          @InstanceSum = params['InstanceSum']
          @ServiceType = params['ServiceType']
          @RegionId = params['RegionId']
          @BindingStatus = params['BindingStatus']
          @TagStatus = params['TagStatus']
        end
      end

      # 模板列表
      class TemplateGroup < TencentCloud::Common::AbstractModel
        # @param Conditions: 指标告警规则
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Conditions: Array
        # @param EventConditions: 事件告警规则
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EventConditions: Array
        # @param PolicyGroups: 关联告警策略组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PolicyGroups: Array
        # @param GroupID: 模板策略组ID
        # @type GroupID: Integer
        # @param GroupName: 模板策略组名称
        # @type GroupName: String
        # @param InsertTime: 创建时间
        # @type InsertTime: Integer
        # @param LastEditUin: 最后修改人UIN
        # @type LastEditUin: Integer
        # @param Remark: 备注
        # @type Remark: String
        # @param UpdateTime: 更新时间
        # @type UpdateTime: Integer
        # @param ViewName: 视图
        # @type ViewName: String
        # @param IsUnionRule: 是否为与关系
        # @type IsUnionRule: Integer

        attr_accessor :Conditions, :EventConditions, :PolicyGroups, :GroupID, :GroupName, :InsertTime, :LastEditUin, :Remark, :UpdateTime, :ViewName, :IsUnionRule
        
        def initialize(conditions=nil, eventconditions=nil, policygroups=nil, groupid=nil, groupname=nil, inserttime=nil, lastedituin=nil, remark=nil, updatetime=nil, viewname=nil, isunionrule=nil)
          @Conditions = conditions
          @EventConditions = eventconditions
          @PolicyGroups = policygroups
          @GroupID = groupid
          @GroupName = groupname
          @InsertTime = inserttime
          @LastEditUin = lastedituin
          @Remark = remark
          @UpdateTime = updatetime
          @ViewName = viewname
          @IsUnionRule = isunionrule
        end

        def deserialize(params)
          unless params['Conditions'].nil?
            @Conditions = []
            params['Conditions'].each do |i|
              condition_tmp = Condition.new
              condition_tmp.deserialize(i)
              @Conditions << condition_tmp
            end
          end
          unless params['EventConditions'].nil?
            @EventConditions = []
            params['EventConditions'].each do |i|
              eventcondition_tmp = EventCondition.new
              eventcondition_tmp.deserialize(i)
              @EventConditions << eventcondition_tmp
            end
          end
          unless params['PolicyGroups'].nil?
            @PolicyGroups = []
            params['PolicyGroups'].each do |i|
              policygroup_tmp = PolicyGroup.new
              policygroup_tmp.deserialize(i)
              @PolicyGroups << policygroup_tmp
            end
          end
          @GroupID = params['GroupID']
          @GroupName = params['GroupName']
          @InsertTime = params['InsertTime']
          @LastEditUin = params['LastEditUin']
          @Remark = params['Remark']
          @UpdateTime = params['UpdateTime']
          @ViewName = params['ViewName']
          @IsUnionRule = params['IsUnionRule']
        end
      end

      # 云监控告警通知模板 - 回调通知详情
      class URLNotice < TencentCloud::Common::AbstractModel
        # @param URL: 回调 url(限长256字符)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type URL: String
        # @param IsValid: 是否通过验证 0=否 1=是
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsValid: Integer
        # @param ValidationCode: 验证码
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ValidationCode: String
        # @param StartTime: 通知开始时间 一天开始的秒数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartTime: Integer
        # @param EndTime: 通知结束时间 一天开始的秒数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: Integer

        attr_accessor :URL, :IsValid, :ValidationCode, :StartTime, :EndTime
        
        def initialize(url=nil, isvalid=nil, validationcode=nil, starttime=nil, endtime=nil)
          @URL = url
          @IsValid = isvalid
          @ValidationCode = validationcode
          @StartTime = starttime
          @EndTime = endtime
        end

        def deserialize(params)
          @URL = params['URL']
          @IsValid = params['IsValid']
          @ValidationCode = params['ValidationCode']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
        end
      end

      # UnBindingAllPolicyObject请求参数结构体
      class UnBindingAllPolicyObjectRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param GroupId: 策略组id,如传入 PolicyId 则该字段被忽略可传入任意值如 0
        # @type GroupId: Integer
        # @param PolicyId: 告警策略ID,使用此字段时 GroupId 会被忽略
        # @type PolicyId: String

        attr_accessor :Module, :GroupId, :PolicyId
        
        def initialize(_module=nil, groupid=nil, policyid=nil)
          @Module = _module
          @GroupId = groupid
          @PolicyId = policyid
        end

        def deserialize(params)
          @Module = params['Module']
          @GroupId = params['GroupId']
          @PolicyId = params['PolicyId']
        end
      end

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

      # UnBindingPolicyObject请求参数结构体
      class UnBindingPolicyObjectRequest < TencentCloud::Common::AbstractModel
        # @param Module: 固定值,为"monitor"
        # @type Module: String
        # @param GroupId: 策略组id,如传入 PolicyId 则该字段被忽略可传入任意值如 0
        # @type GroupId: Integer
        # @param UniqueId: 待删除对象实例的唯一id列表,UniqueId从调用[获取已绑定对象列表接口](https://cloud.tencent.com/document/api/248/40570)的出参的List中得到
        # @type UniqueId: Array
        # @param InstanceGroupId: 实例分组id,如果按实例分组删除的话UniqueId参数是无效的
        # @type InstanceGroupId: Integer
        # @param PolicyId: 告警策略ID,使用此字段时 GroupId 会被忽略
        # @type PolicyId: String

        attr_accessor :Module, :GroupId, :UniqueId, :InstanceGroupId, :PolicyId
        
        def initialize(_module=nil, groupid=nil, uniqueid=nil, instancegroupid=nil, policyid=nil)
          @Module = _module
          @GroupId = groupid
          @UniqueId = uniqueid
          @InstanceGroupId = instancegroupid
          @PolicyId = policyid
        end

        def deserialize(params)
          @Module = params['Module']
          @GroupId = params['GroupId']
          @UniqueId = params['UniqueId']
          @InstanceGroupId = params['InstanceGroupId']
          @PolicyId = params['PolicyId']
        end
      end

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

      # UpdateAlertRule请求参数结构体
      class UpdateAlertRuleRequest < TencentCloud::Common::AbstractModel
        # @param RuleId: Prometheus 报警规则 ID
        # @type RuleId: String
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param RuleState: 规则状态码,取值如下:
        # <li>1=RuleDeleted</li>
        # <li>2=RuleEnabled</li>
        # <li>3=RuleDisabled</li>
        # 默认状态码为 2 启用。
        # @type RuleState: Integer
        # @param RuleName: 报警规则名称
        # @type RuleName: String
        # @param Expr: 报警规则表达式
        # @type Expr: String
        # @param Duration: 报警规则持续时间
        # @type Duration: String
        # @param Receivers: 报警规则接收组列表
        # @type Receivers: Array
        # @param Labels: 报警规则标签列表
        # @type Labels: Array
        # @param Annotations: 报警规则注释列表。

        # 告警对象和告警消息是 Prometheus Rule Annotations 的特殊字段,需要通过 annotations 来传递,对应的 Key 分别为summary/description。
        # @type Annotations: Array
        # @param Type: 报警策略模板分类
        # @type Type: String

        attr_accessor :RuleId, :InstanceId, :RuleState, :RuleName, :Expr, :Duration, :Receivers, :Labels, :Annotations, :Type
        
        def initialize(ruleid=nil, instanceid=nil, rulestate=nil, rulename=nil, expr=nil, duration=nil, receivers=nil, labels=nil, annotations=nil, type=nil)
          @RuleId = ruleid
          @InstanceId = instanceid
          @RuleState = rulestate
          @RuleName = rulename
          @Expr = expr
          @Duration = duration
          @Receivers = receivers
          @Labels = labels
          @Annotations = annotations
          @Type = type
        end

        def deserialize(params)
          @RuleId = params['RuleId']
          @InstanceId = params['InstanceId']
          @RuleState = params['RuleState']
          @RuleName = params['RuleName']
          @Expr = params['Expr']
          @Duration = params['Duration']
          @Receivers = params['Receivers']
          unless params['Labels'].nil?
            @Labels = []
            params['Labels'].each do |i|
              prometheusrulekv_tmp = PrometheusRuleKV.new
              prometheusrulekv_tmp.deserialize(i)
              @Labels << prometheusrulekv_tmp
            end
          end
          unless params['Annotations'].nil?
            @Annotations = []
            params['Annotations'].each do |i|
              prometheusrulekv_tmp = PrometheusRuleKV.new
              prometheusrulekv_tmp.deserialize(i)
              @Annotations << prometheusrulekv_tmp
            end
          end
          @Type = params['Type']
        end
      end

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

        attr_accessor :RuleId, :RequestId
        
        def initialize(ruleid=nil, requestid=nil)
          @RuleId = ruleid
          @RequestId = requestid
        end

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

      # UpdateAlertRuleState请求参数结构体
      class UpdateAlertRuleStateRequest < TencentCloud::Common::AbstractModel
        # @param RuleIds: 规则 ID 列表
        # @type RuleIds: Array
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param RuleState: 规则状态码,取值如下:
        # <li>2=RuleEnabled</li>
        # <li>3=RuleDisabled</li>
        # 默认状态码为 2 启用。
        # @type RuleState: Integer

        attr_accessor :RuleIds, :InstanceId, :RuleState
        
        def initialize(ruleids=nil, instanceid=nil, rulestate=nil)
          @RuleIds = ruleids
          @InstanceId = instanceid
          @RuleState = rulestate
        end

        def deserialize(params)
          @RuleIds = params['RuleIds']
          @InstanceId = params['InstanceId']
          @RuleState = params['RuleState']
        end
      end

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

      # UpdateServiceDiscovery请求参数结构体
      class UpdateServiceDiscoveryRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: Prometheus 实例 ID
        # @type InstanceId: String
        # @param KubeClusterId: <li>类型是 TKE,为对应的腾讯云容器服务集群 ID</li>
        # @type KubeClusterId: String
        # @param KubeType: 用户 Kubernetes 集群类型:
        # <li> 1 = 容器服务集群(TKE) </li>
        # @type KubeType: Integer
        # @param Type: 服务发现类型,取值如下:
        # <li> 1 = ServiceMonitor</li>
        # <li> 2 = PodMonitor</li>
        # <li> 3 = JobMonitor</li>
        # @type Type: Integer
        # @param Yaml: 服务发现配置信息
        # @type Yaml: String

        attr_accessor :InstanceId, :KubeClusterId, :KubeType, :Type, :Yaml
        
        def initialize(instanceid=nil, kubeclusterid=nil, kubetype=nil, type=nil, yaml=nil)
          @InstanceId = instanceid
          @KubeClusterId = kubeclusterid
          @KubeType = kubetype
          @Type = type
          @Yaml = yaml
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @KubeClusterId = params['KubeClusterId']
          @KubeType = params['KubeType']
          @Type = params['Type']
          @Yaml = params['Yaml']
        end
      end

      # UpdateServiceDiscovery返回参数结构体
      class UpdateServiceDiscoveryResponse < TencentCloud::Common::AbstractModel
        # @param ServiceDiscovery: 更新成功之后,返回对应服务发现的信息
        # @type ServiceDiscovery: :class:`Tencentcloud::Monitor.v20180724.models.ServiceDiscoveryItem`
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ServiceDiscovery, :RequestId
        
        def initialize(servicediscovery=nil, requestid=nil)
          @ServiceDiscovery = servicediscovery
          @RequestId = requestid
        end

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

      # 云监控告警通知模板 - 用户通知详情
      class UserNotice < TencentCloud::Common::AbstractModel
        # @param ReceiverType: 接收者类型 USER=用户 GROUP=用户组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReceiverType: String
        # @param StartTime: 通知开始时间 00:00:00 开始的秒数(取值范围0-86399)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartTime: Integer
        # @param EndTime: 通知结束时间 00:00:00 开始的秒数(取值范围0-86399)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: Integer
        # @param NoticeWay: 通知渠道列表 EMAIL=邮件 SMS=短信 CALL=电话 WECHAT=微信 RTX=企业微信
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NoticeWay: Array
        # @param UserIds: 用户 uid 列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserIds: Array
        # @param GroupIds: 用户组 group id 列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupIds: Array
        # @param PhoneOrder: 电话轮询列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PhoneOrder: Array
        # @param PhoneCircleTimes: 电话轮询次数 (取值范围1-5)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PhoneCircleTimes: Integer
        # @param PhoneInnerInterval: 单次轮询内拨打间隔 秒数 (取值范围60-900)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PhoneInnerInterval: Integer
        # @param PhoneCircleInterval: 两次轮询间隔 秒数(取值范围60-900)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PhoneCircleInterval: Integer
        # @param NeedPhoneArriveNotice: 是否需要触达通知 0=否 1=是
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NeedPhoneArriveNotice: Integer
        # @param PhoneCallType: 电话拨打类型 SYNC=同时拨打 CIRCLE=轮询拨打 不指定时默认是轮询
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PhoneCallType: String

        attr_accessor :ReceiverType, :StartTime, :EndTime, :NoticeWay, :UserIds, :GroupIds, :PhoneOrder, :PhoneCircleTimes, :PhoneInnerInterval, :PhoneCircleInterval, :NeedPhoneArriveNotice, :PhoneCallType
        
        def initialize(receivertype=nil, starttime=nil, endtime=nil, noticeway=nil, userids=nil, groupids=nil, phoneorder=nil, phonecircletimes=nil, phoneinnerinterval=nil, phonecircleinterval=nil, needphonearrivenotice=nil, phonecalltype=nil)
          @ReceiverType = receivertype
          @StartTime = starttime
          @EndTime = endtime
          @NoticeWay = noticeway
          @UserIds = userids
          @GroupIds = groupids
          @PhoneOrder = phoneorder
          @PhoneCircleTimes = phonecircletimes
          @PhoneInnerInterval = phoneinnerinterval
          @PhoneCircleInterval = phonecircleinterval
          @NeedPhoneArriveNotice = needphonearrivenotice
          @PhoneCallType = phonecalltype
        end

        def deserialize(params)
          @ReceiverType = params['ReceiverType']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @NoticeWay = params['NoticeWay']
          @UserIds = params['UserIds']
          @GroupIds = params['GroupIds']
          @PhoneOrder = params['PhoneOrder']
          @PhoneCircleTimes = params['PhoneCircleTimes']
          @PhoneInnerInterval = params['PhoneInnerInterval']
          @PhoneCircleInterval = params['PhoneCircleInterval']
          @NeedPhoneArriveNotice = params['NeedPhoneArriveNotice']
          @PhoneCallType = params['PhoneCallType']
        end
      end

    end
  end
end