# 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 Pts
    module V20210728
      # AbortCronJobs请求参数结构体
      class AbortCronJobsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param CronJobIds: 定时任务ID数组
        # @type CronJobIds: Array

        attr_accessor :ProjectId, :CronJobIds

        def initialize(projectid=nil, cronjobids=nil)
          @ProjectId = projectid
          @CronJobIds = cronjobids
        end

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

      # AbortCronJobs返回参数结构体
      class AbortCronJobsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # AbortJob请求参数结构体
      class AbortJobRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 待停止的压测任务的 ID(所有的压测任务 ID 可以从 DescribeJobs 接口获取)
        # @type JobId: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param AbortReason: 中断原因
        # @type AbortReason: Integer

        attr_accessor :JobId, :ProjectId, :ScenarioId, :AbortReason

        def initialize(jobid=nil, projectid=nil, scenarioid=nil, abortreason=nil)
          @JobId = jobid
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @AbortReason = abortreason
        end

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

      # AbortJob返回参数结构体
      class AbortJobResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # AdjustJobSpeed请求参数结构体
      class AdjustJobSpeedRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param TargetRequestsPerSecond: 目标 RPS。其取值应大于起始 RPS,并且小于最大 RPS
        # @type TargetRequestsPerSecond: Integer

        attr_accessor :JobId, :TargetRequestsPerSecond

        def initialize(jobid=nil, targetrequestspersecond=nil)
          @JobId = jobid
          @TargetRequestsPerSecond = targetrequestspersecond
        end

        def deserialize(params)
          @JobId = params['JobId']
          @TargetRequestsPerSecond = params['TargetRequestsPerSecond']
        end
      end

      # AdjustJobSpeed返回参数结构体
      class AdjustJobSpeedResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # 聚合函数
      class AggregationLegend < TencentCloud::Common::AbstractModel
        # @param Aggregation: 指标支持的聚合函数
        # @type Aggregation: String
        # @param Legend: 聚合函数作用于指标后对应的描述
        # @type Legend: String
        # @param Unit: 聚合之后的指标单位
        # @type Unit: String

        attr_accessor :Aggregation, :Legend, :Unit

        def initialize(aggregation=nil, legend=nil, unit=nil)
          @Aggregation = aggregation
          @Legend = legend
          @Unit = unit
        end

        def deserialize(params)
          @Aggregation = params['Aggregation']
          @Legend = params['Legend']
          @Unit = params['Unit']
        end
      end

      # 告警通知渠道
      class AlertChannel < TencentCloud::Common::AbstractModel
        # @param NoticeId: 通知模板ID
        # @type NoticeId: String
        # @param AMPConsumerId: AMP consumer ID
        # @type AMPConsumerId: String

        attr_accessor :NoticeId, :AMPConsumerId

        def initialize(noticeid=nil, ampconsumerid=nil)
          @NoticeId = noticeid
          @AMPConsumerId = ampconsumerid
        end

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

      # 告警通知接收组
      class AlertChannelRecord < TencentCloud::Common::AbstractModel
        # @param NoticeId: Notice ID
        # @type NoticeId: String
        # @param AMPConsumerId: Consumer ID
        # @type AMPConsumerId: String
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param Status: 状态
        # @type Status: Integer
        # @param CreatedAt: 创建时间
        # @type CreatedAt: String
        # @param UpdatedAt: 更新时间
        # @type UpdatedAt: String
        # @param AppId: App ID
        # @type AppId: Integer
        # @param Uin: 主账号
        # @type Uin: String
        # @param SubAccountUin: 子账号
        # @type SubAccountUin: String

        attr_accessor :NoticeId, :AMPConsumerId, :ProjectId, :Status, :CreatedAt, :UpdatedAt, :AppId, :Uin, :SubAccountUin

        def initialize(noticeid=nil, ampconsumerid=nil, projectid=nil, status=nil, createdat=nil, updatedat=nil, appid=nil, uin=nil, subaccountuin=nil)
          @NoticeId = noticeid
          @AMPConsumerId = ampconsumerid
          @ProjectId = projectid
          @Status = status
          @CreatedAt = createdat
          @UpdatedAt = updatedat
          @AppId = appid
          @Uin = uin
          @SubAccountUin = subaccountuin
        end

        def deserialize(params)
          @NoticeId = params['NoticeId']
          @AMPConsumerId = params['AMPConsumerId']
          @ProjectId = params['ProjectId']
          @Status = params['Status']
          @CreatedAt = params['CreatedAt']
          @UpdatedAt = params['UpdatedAt']
          @AppId = params['AppId']
          @Uin = params['Uin']
          @SubAccountUin = params['SubAccountUin']
        end
      end

      # 告警历史记录项
      class AlertRecord < TencentCloud::Common::AbstractModel
        # @param AlertRecordId: 告警历史记录项 ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlertRecordId: String
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param ScenarioId: 场景 ID
        # @type ScenarioId: String
        # @param Status: 状态
        # @type Status: :class:`Tencentcloud::Pts.v20210728.models.AlertRecordStatus`
        # @param CreatedAt: 创建时间
        # @type CreatedAt: String
        # @param UpdatedAt: 修改时间
        # @type UpdatedAt: String
        # @param JobId: 任务 ID
        # @type JobId: String
        # @param AppId: App ID
        # @type AppId: Integer
        # @param Uin: 主账号
        # @type Uin: String
        # @param SubAccountUin: 子账号
        # @type SubAccountUin: String
        # @param ScenarioName: 场景名称
        # @type ScenarioName: String
        # @param Target: 告警对象
        # @type Target: String
        # @param JobSLAId: 告警规则 ID
        # @type JobSLAId: String
        # @param JobSLADescription: 告警规则描述
        # @type JobSLADescription: String

        attr_accessor :AlertRecordId, :ProjectId, :ScenarioId, :Status, :CreatedAt, :UpdatedAt, :JobId, :AppId, :Uin, :SubAccountUin, :ScenarioName, :Target, :JobSLAId, :JobSLADescription

        def initialize(alertrecordid=nil, projectid=nil, scenarioid=nil, status=nil, createdat=nil, updatedat=nil, jobid=nil, appid=nil, uin=nil, subaccountuin=nil, scenarioname=nil, target=nil, jobslaid=nil, jobsladescription=nil)
          @AlertRecordId = alertrecordid
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @Status = status
          @CreatedAt = createdat
          @UpdatedAt = updatedat
          @JobId = jobid
          @AppId = appid
          @Uin = uin
          @SubAccountUin = subaccountuin
          @ScenarioName = scenarioname
          @Target = target
          @JobSLAId = jobslaid
          @JobSLADescription = jobsladescription
        end

        def deserialize(params)
          @AlertRecordId = params['AlertRecordId']
          @ProjectId = params['ProjectId']
          @ScenarioId = params['ScenarioId']
          unless params['Status'].nil?
            @Status = AlertRecordStatus.new
            @Status.deserialize(params['Status'])
          end
          @CreatedAt = params['CreatedAt']
          @UpdatedAt = params['UpdatedAt']
          @JobId = params['JobId']
          @AppId = params['AppId']
          @Uin = params['Uin']
          @SubAccountUin = params['SubAccountUin']
          @ScenarioName = params['ScenarioName']
          @Target = params['Target']
          @JobSLAId = params['JobSLAId']
          @JobSLADescription = params['JobSLADescription']
        end
      end

      # 告警历史项的状态
      class AlertRecordStatus < TencentCloud::Common::AbstractModel
        # @param AbortJob: 停止压测任务成功与否
        # @type AbortJob: Integer
        # @param SendNotice: 发送告警通知成功与否
        # @type SendNotice: Integer

        attr_accessor :AbortJob, :SendNotice

        def initialize(abortjob=nil, sendnotice=nil)
          @AbortJob = abortjob
          @SendNotice = sendnotice
        end

        def deserialize(params)
          @AbortJob = params['AbortJob']
          @SendNotice = params['SendNotice']
        end
      end

      # 采样日志附带属性
      class Attributes < TencentCloud::Common::AbstractModel
        # @param Status: 采用请求返回码
        # @type Status: String
        # @param Result: 采样请求结果码
        # @type Result: String
        # @param Service: 采样请求API
        # @type Service: String
        # @param Method: 采样请求调用方法
        # @type Method: String
        # @param Duration: 采样请求延时时间
        # @type Duration: String

        attr_accessor :Status, :Result, :Service, :Method, :Duration

        def initialize(status=nil, result=nil, service=nil, method=nil, duration=nil)
          @Status = status
          @Result = result
          @Service = service
          @Method = method
          @Duration = duration
        end

        def deserialize(params)
          @Status = params['Status']
          @Result = params['Result']
          @Service = params['Service']
          @Method = params['Method']
          @Duration = params['Duration']
        end
      end

      # 检查点汇总结果
      class CheckSummary < TencentCloud::Common::AbstractModel
        # @param Name: 检查点名字
        # @type Name: String
        # @param Step: 检查点所在步骤名字
        # @type Step: String
        # @param SuccessCount: 检查点成功次数
        # @type SuccessCount: Integer
        # @param FailCount: 检查失败次数
        # @type FailCount: Integer
        # @param ErrorRate: 错误比例
        # @type ErrorRate: Float

        attr_accessor :Name, :Step, :SuccessCount, :FailCount, :ErrorRate

        def initialize(name=nil, step=nil, successcount=nil, failcount=nil, errorrate=nil)
          @Name = name
          @Step = step
          @SuccessCount = successcount
          @FailCount = failcount
          @ErrorRate = errorrate
        end

        def deserialize(params)
          @Name = params['Name']
          @Step = params['Step']
          @SuccessCount = params['SuccessCount']
          @FailCount = params['FailCount']
          @ErrorRate = params['ErrorRate']
        end
      end

      # 并发模式的施压配置
      class Concurrency < TencentCloud::Common::AbstractModel
        # @param Stages: 多阶段配置数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Stages: Array
        # @param IterationCount: 运行次数
        # @type IterationCount: Integer
        # @param MaxRequestsPerSecond: 最大RPS
        # @type MaxRequestsPerSecond: Integer
        # @param GracefulStopSeconds: 优雅终止任务的等待时间
        # @type GracefulStopSeconds: Integer
        # @param Resources: 资源数
        # @type Resources: Integer

        attr_accessor :Stages, :IterationCount, :MaxRequestsPerSecond, :GracefulStopSeconds, :Resources

        def initialize(stages=nil, iterationcount=nil, maxrequestspersecond=nil, gracefulstopseconds=nil, resources=nil)
          @Stages = stages
          @IterationCount = iterationcount
          @MaxRequestsPerSecond = maxrequestspersecond
          @GracefulStopSeconds = gracefulstopseconds
          @Resources = resources
        end

        def deserialize(params)
          unless params['Stages'].nil?
            @Stages = []
            params['Stages'].each do |i|
              stage_tmp = Stage.new
              stage_tmp.deserialize(i)
              @Stages << stage_tmp
            end
          end
          @IterationCount = params['IterationCount']
          @MaxRequestsPerSecond = params['MaxRequestsPerSecond']
          @GracefulStopSeconds = params['GracefulStopSeconds']
          @Resources = params['Resources']
        end
      end

      # CopyScenario请求参数结构体
      class CopyScenarioRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param ScenarioId: 场景 ID
        # @type ScenarioId: String

        attr_accessor :ProjectId, :ScenarioId

        def initialize(projectid=nil, scenarioid=nil)
          @ProjectId = projectid
          @ScenarioId = scenarioid
        end

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

      # CopyScenario返回参数结构体
      class CopyScenarioResponse < TencentCloud::Common::AbstractModel
        # @param ScenarioId: 复制出的新场景 ID
        # @type ScenarioId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ScenarioId, :RequestId

        def initialize(scenarioid=nil, requestid=nil)
          @ScenarioId = scenarioid
          @RequestId = requestid
        end

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

      # CreateAlertChannel请求参数结构体
      class CreateAlertChannelRequest < TencentCloud::Common::AbstractModel
        # @param NoticeId: monitor 服务的告警通知模板的 NoticeId,可从 monitor 服务的云 API 的 DescribeAlarmNotices 接口响应里的 Id 字段获取。(CreateAlertChannel 接口的入参里用于标识一个告警通知模板的 AMPConsumerId 与 NoticeId 二选一即可)
        # @type NoticeId: String
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param AMPConsumerId: monitor 服务的告警通知模板的 AMPConsumerId,可从 monitor 服务的云 API 的 DescribeAlarmNotices 接口响应里的 AMPConsumerId 字段获取。(CreateAlertChannel 接口的入参里用于标识一个告警通知模板的 AMPConsumerId 与 NoticeId 二选一即可)
        # @type AMPConsumerId: String

        attr_accessor :NoticeId, :ProjectId, :AMPConsumerId

        def initialize(noticeid=nil, projectid=nil, ampconsumerid=nil)
          @NoticeId = noticeid
          @ProjectId = projectid
          @AMPConsumerId = ampconsumerid
        end

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

      # CreateAlertChannel返回参数结构体
      class CreateAlertChannelResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # CreateCronJob请求参数结构体
      class CreateCronJobRequest < TencentCloud::Common::AbstractModel
        # @param Name: 定时任务名字
        # @type Name: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param ScenarioName: 场景名称
        # @type ScenarioName: String
        # @param FrequencyType: 执行频率类型,1:只执行一次; 2:日粒度; 3:周粒度; 4:高级
        # @type FrequencyType: Integer
        # @param CronExpression: cron表达式
        # @type CronExpression: String
        # @param JobOwner: 任务发起人
        # @type JobOwner: String
        # @param EndTime: 结束时间
        # @type EndTime: String
        # @param NoticeId: Notice ID
        # @type NoticeId: String
        # @param Note: 备注
        # @type Note: String

        attr_accessor :Name, :ProjectId, :ScenarioId, :ScenarioName, :FrequencyType, :CronExpression, :JobOwner, :EndTime, :NoticeId, :Note

        def initialize(name=nil, projectid=nil, scenarioid=nil, scenarioname=nil, frequencytype=nil, cronexpression=nil, jobowner=nil, endtime=nil, noticeid=nil, note=nil)
          @Name = name
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @ScenarioName = scenarioname
          @FrequencyType = frequencytype
          @CronExpression = cronexpression
          @JobOwner = jobowner
          @EndTime = endtime
          @NoticeId = noticeid
          @Note = note
        end

        def deserialize(params)
          @Name = params['Name']
          @ProjectId = params['ProjectId']
          @ScenarioId = params['ScenarioId']
          @ScenarioName = params['ScenarioName']
          @FrequencyType = params['FrequencyType']
          @CronExpression = params['CronExpression']
          @JobOwner = params['JobOwner']
          @EndTime = params['EndTime']
          @NoticeId = params['NoticeId']
          @Note = params['Note']
        end
      end

      # CreateCronJob返回参数结构体
      class CreateCronJobResponse < TencentCloud::Common::AbstractModel
        # @param CronJobId: 定时任务ID
        # @type CronJobId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :CronJobId, :RequestId

        def initialize(cronjobid=nil, requestid=nil)
          @CronJobId = cronjobid
          @RequestId = requestid
        end

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

      # CreateEnvironment请求参数结构体
      class CreateEnvironmentRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # CreateEnvironment返回参数结构体
      class CreateEnvironmentResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # CreateFile请求参数结构体
      class CreateFileRequest < TencentCloud::Common::AbstractModel
        # @param FileId: 文件 ID。其值应为前序步骤上传该文件到 cos 桶后,文件在 cos 桶中的相应目录
        # @type FileId: String
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param Kind: 文件种类,参数文件-1,协议文件-2,请求文件-3
        # @type Kind: Integer
        # @param Name: 文件名
        # @type Name: String
        # @param Size: 文件大小
        # @type Size: Integer
        # @param Type: 文件类型,文件夹-folder
        # @type Type: String
        # @param LineCount: 行数
        # @type LineCount: Integer
        # @param HeadLines: 前几行数据
        # @type HeadLines: Array
        # @param TailLines: 后几行数据
        # @type TailLines: Array
        # @param HeaderInFile: 表头是否在文件内
        # @type HeaderInFile: Boolean
        # @param HeaderColumns: 表头
        # @type HeaderColumns: Array
        # @param FileInfos: 文件夹中的文件
        # @type FileInfos: Array

        attr_accessor :FileId, :ProjectId, :Kind, :Name, :Size, :Type, :LineCount, :HeadLines, :TailLines, :HeaderInFile, :HeaderColumns, :FileInfos

        def initialize(fileid=nil, projectid=nil, kind=nil, name=nil, size=nil, type=nil, linecount=nil, headlines=nil, taillines=nil, headerinfile=nil, headercolumns=nil, fileinfos=nil)
          @FileId = fileid
          @ProjectId = projectid
          @Kind = kind
          @Name = name
          @Size = size
          @Type = type
          @LineCount = linecount
          @HeadLines = headlines
          @TailLines = taillines
          @HeaderInFile = headerinfile
          @HeaderColumns = headercolumns
          @FileInfos = fileinfos
        end

        def deserialize(params)
          @FileId = params['FileId']
          @ProjectId = params['ProjectId']
          @Kind = params['Kind']
          @Name = params['Name']
          @Size = params['Size']
          @Type = params['Type']
          @LineCount = params['LineCount']
          @HeadLines = params['HeadLines']
          @TailLines = params['TailLines']
          @HeaderInFile = params['HeaderInFile']
          @HeaderColumns = params['HeaderColumns']
          unless params['FileInfos'].nil?
            @FileInfos = []
            params['FileInfos'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @FileInfos << fileinfo_tmp
            end
          end
        end
      end

      # CreateFile返回参数结构体
      class CreateFileResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # CreateProject请求参数结构体
      class CreateProjectRequest < TencentCloud::Common::AbstractModel
        # @param Name: 项目名
        # @type Name: String
        # @param Description: 项目描述
        # @type Description: String
        # @param Tags: 标签数组
        # @type Tags: Array

        attr_accessor :Name, :Description, :Tags

        def initialize(name=nil, description=nil, tags=nil)
          @Name = name
          @Description = description
          @Tags = tags
        end

        def deserialize(params)
          @Name = params['Name']
          @Description = params['Description']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tagspec_tmp = TagSpec.new
              tagspec_tmp.deserialize(i)
              @Tags << tagspec_tmp
            end
          end
        end
      end

      # CreateProject返回参数结构体
      class CreateProjectResponse < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ProjectId, :RequestId

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

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

      # CreateScenario请求参数结构体
      class CreateScenarioRequest < TencentCloud::Common::AbstractModel
        # @param Name: 场景名
        # @type Name: String
        # @param Type: 压测引擎类型
        # @type Type: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param Description: 场景描述
        # @type Description: String
        # @param Load: 施压配置
        # @type Load: :class:`Tencentcloud::Pts.v20210728.models.Load`
        # @param Configs: deprecated
        # @type Configs: Array
        # @param Datasets: 测试数据集
        # @type Datasets: Array
        # @param Extensions: deprecated
        # @type Extensions: Array
        # @param SLAId: deprecated
        # @type SLAId: String
        # @param CronId: cron job ID
        # @type CronId: String
        # @param Scripts: deprecated
        # @type Scripts: Array
        # @param TestScripts: 测试脚本文件信息
        # @type TestScripts: Array
        # @param Protocols: 协议文件路径
        # @type Protocols: Array
        # @param RequestFiles: 请求文件路径
        # @type RequestFiles: Array
        # @param SLAPolicy: SLA 策略
        # @type SLAPolicy: :class:`Tencentcloud::Pts.v20210728.models.SLAPolicy`
        # @param Plugins: 拓展包文件路径
        # @type Plugins: Array
        # @param DomainNameConfig: 域名解析配置
        # @type DomainNameConfig: :class:`Tencentcloud::Pts.v20210728.models.DomainNameConfig`
        # @param Owner: 创建人名
        # @type Owner: String

        attr_accessor :Name, :Type, :ProjectId, :Description, :Load, :Configs, :Datasets, :Extensions, :SLAId, :CronId, :Scripts, :TestScripts, :Protocols, :RequestFiles, :SLAPolicy, :Plugins, :DomainNameConfig, :Owner

        def initialize(name=nil, type=nil, projectid=nil, description=nil, load=nil, configs=nil, datasets=nil, extensions=nil, slaid=nil, cronid=nil, scripts=nil, testscripts=nil, protocols=nil, requestfiles=nil, slapolicy=nil, plugins=nil, domainnameconfig=nil, owner=nil)
          @Name = name
          @Type = type
          @ProjectId = projectid
          @Description = description
          @Load = load
          @Configs = configs
          @Datasets = datasets
          @Extensions = extensions
          @SLAId = slaid
          @CronId = cronid
          @Scripts = scripts
          @TestScripts = testscripts
          @Protocols = protocols
          @RequestFiles = requestfiles
          @SLAPolicy = slapolicy
          @Plugins = plugins
          @DomainNameConfig = domainnameconfig
          @Owner = owner
        end

        def deserialize(params)
          @Name = params['Name']
          @Type = params['Type']
          @ProjectId = params['ProjectId']
          @Description = params['Description']
          unless params['Load'].nil?
            @Load = Load.new
            @Load.deserialize(params['Load'])
          end
          @Configs = params['Configs']
          unless params['Datasets'].nil?
            @Datasets = []
            params['Datasets'].each do |i|
              testdata_tmp = TestData.new
              testdata_tmp.deserialize(i)
              @Datasets << testdata_tmp
            end
          end
          @Extensions = params['Extensions']
          @SLAId = params['SLAId']
          @CronId = params['CronId']
          @Scripts = params['Scripts']
          unless params['TestScripts'].nil?
            @TestScripts = []
            params['TestScripts'].each do |i|
              scriptinfo_tmp = ScriptInfo.new
              scriptinfo_tmp.deserialize(i)
              @TestScripts << scriptinfo_tmp
            end
          end
          unless params['Protocols'].nil?
            @Protocols = []
            params['Protocols'].each do |i|
              protocolinfo_tmp = ProtocolInfo.new
              protocolinfo_tmp.deserialize(i)
              @Protocols << protocolinfo_tmp
            end
          end
          unless params['RequestFiles'].nil?
            @RequestFiles = []
            params['RequestFiles'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @RequestFiles << fileinfo_tmp
            end
          end
          unless params['SLAPolicy'].nil?
            @SLAPolicy = SLAPolicy.new
            @SLAPolicy.deserialize(params['SLAPolicy'])
          end
          unless params['Plugins'].nil?
            @Plugins = []
            params['Plugins'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @Plugins << fileinfo_tmp
            end
          end
          unless params['DomainNameConfig'].nil?
            @DomainNameConfig = DomainNameConfig.new
            @DomainNameConfig.deserialize(params['DomainNameConfig'])
          end
          @Owner = params['Owner']
        end
      end

      # CreateScenario返回参数结构体
      class CreateScenarioResponse < TencentCloud::Common::AbstractModel
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ScenarioId, :RequestId

        def initialize(scenarioid=nil, requestid=nil)
          @ScenarioId = scenarioid
          @RequestId = requestid
        end

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

      # COS临时凭证
      class Credentials < TencentCloud::Common::AbstractModel
        # @param TmpSecretId: 临时secret ID
        # @type TmpSecretId: String
        # @param TmpSecretKey: 临时secret key
        # @type TmpSecretKey: String
        # @param Token: 临时token
        # @type Token: String

        attr_accessor :TmpSecretId, :TmpSecretKey, :Token

        def initialize(tmpsecretid=nil, tmpsecretkey=nil, token=nil)
          @TmpSecretId = tmpsecretid
          @TmpSecretKey = tmpsecretkey
          @Token = token
        end

        def deserialize(params)
          @TmpSecretId = params['TmpSecretId']
          @TmpSecretKey = params['TmpSecretKey']
          @Token = params['Token']
        end
      end

      # 定时任务
      class CronJob < TencentCloud::Common::AbstractModel
        # @param CronJobId: 定时任务ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CronJobId: String
        # @param Name: 定时任务名字
        # @type Name: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param ScenarioName: 场景名称
        # @type ScenarioName: String
        # @param CronExpression: cron 表达式
        # @type CronExpression: String
        # @param EndTime: 结束时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: String
        # @param AbortReason: 中止原因
        # @type AbortReason: Integer
        # @param Status: 定时任务状态
        # @type Status: Integer
        # @param NoticeId: Notice ID
        # @type NoticeId: String
        # @param CreatedAt: 创建时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CreatedAt: String
        # @param UpdatedAt: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedAt: String
        # @param FrequencyType: 执行频率类型
        # @type FrequencyType: Integer
        # @param Note: 备注
        # @type Note: String
        # @param JobOwner: tom
        # @type JobOwner: String
        # @param AppId: App ID
        # @type AppId: Integer
        # @param Uin: 主账号
        # @type Uin: String
        # @param SubAccountUin: 子账号
        # @type SubAccountUin: String

        attr_accessor :CronJobId, :Name, :ProjectId, :ScenarioId, :ScenarioName, :CronExpression, :EndTime, :AbortReason, :Status, :NoticeId, :CreatedAt, :UpdatedAt, :FrequencyType, :Note, :JobOwner, :AppId, :Uin, :SubAccountUin

        def initialize(cronjobid=nil, name=nil, projectid=nil, scenarioid=nil, scenarioname=nil, cronexpression=nil, endtime=nil, abortreason=nil, status=nil, noticeid=nil, createdat=nil, updatedat=nil, frequencytype=nil, note=nil, jobowner=nil, appid=nil, uin=nil, subaccountuin=nil)
          @CronJobId = cronjobid
          @Name = name
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @ScenarioName = scenarioname
          @CronExpression = cronexpression
          @EndTime = endtime
          @AbortReason = abortreason
          @Status = status
          @NoticeId = noticeid
          @CreatedAt = createdat
          @UpdatedAt = updatedat
          @FrequencyType = frequencytype
          @Note = note
          @JobOwner = jobowner
          @AppId = appid
          @Uin = uin
          @SubAccountUin = subaccountuin
        end

        def deserialize(params)
          @CronJobId = params['CronJobId']
          @Name = params['Name']
          @ProjectId = params['ProjectId']
          @ScenarioId = params['ScenarioId']
          @ScenarioName = params['ScenarioName']
          @CronExpression = params['CronExpression']
          @EndTime = params['EndTime']
          @AbortReason = params['AbortReason']
          @Status = params['Status']
          @NoticeId = params['NoticeId']
          @CreatedAt = params['CreatedAt']
          @UpdatedAt = params['UpdatedAt']
          @FrequencyType = params['FrequencyType']
          @Note = params['Note']
          @JobOwner = params['JobOwner']
          @AppId = params['AppId']
          @Uin = params['Uin']
          @SubAccountUin = params['SubAccountUin']
        end
      end

      # sample附带原始查询语句中的metric, aggregation
      class CustomSample < TencentCloud::Common::AbstractModel
        # @param Metric: 指标名
        # @type Metric: String
        # @param Aggregation: 聚合条件
        # @type Aggregation: String
        # @param Labels: 过滤条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Labels: Array
        # @param Value: 查询值
        # @type Value: Float
        # @param Timestamp: Time is the number of milliseconds since the epoch
        # // (1970-01-01 00:00 UTC) excluding leap seconds.
        # @type Timestamp: Integer
        # @param Unit: 指标对应的单位,当前单位有:s,bytes,bytes/s,reqs,reqs/s,checks,checks/s,iters,iters/s,VUs, %
        # @type Unit: String
        # @param Name: 指标序列名字
        # @type Name: String

        attr_accessor :Metric, :Aggregation, :Labels, :Value, :Timestamp, :Unit, :Name

        def initialize(metric=nil, aggregation=nil, labels=nil, value=nil, timestamp=nil, unit=nil, name=nil)
          @Metric = metric
          @Aggregation = aggregation
          @Labels = labels
          @Value = value
          @Timestamp = timestamp
          @Unit = unit
          @Name = name
        end

        def deserialize(params)
          @Metric = params['Metric']
          @Aggregation = params['Aggregation']
          unless params['Labels'].nil?
            @Labels = []
            params['Labels'].each do |i|
              label_tmp = Label.new
              label_tmp.deserialize(i)
              @Labels << label_tmp
            end
          end
          @Value = params['Value']
          @Timestamp = params['Timestamp']
          @Unit = params['Unit']
          @Name = params['Name']
        end
      end

      # 指标矩阵,可包含多条指标序列
      class CustomSampleMatrix < TencentCloud::Common::AbstractModel
        # @param Metric: 指标名字
        # @type Metric: String
        # @param Aggregation: 聚合函数
        # @type Aggregation: String
        # @param Unit: 指标单位
        # @type Unit: String
        # @param Streams: 指标序列数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Streams: Array

        attr_accessor :Metric, :Aggregation, :Unit, :Streams

        def initialize(metric=nil, aggregation=nil, unit=nil, streams=nil)
          @Metric = metric
          @Aggregation = aggregation
          @Unit = unit
          @Streams = streams
        end

        def deserialize(params)
          @Metric = params['Metric']
          @Aggregation = params['Aggregation']
          @Unit = params['Unit']
          unless params['Streams'].nil?
            @Streams = []
            params['Streams'].each do |i|
              samplestream_tmp = SampleStream.new
              samplestream_tmp.deserialize(i)
              @Streams << samplestream_tmp
            end
          end
        end
      end

      # 施压机 DNS 配置
      class DNSConfig < TencentCloud::Common::AbstractModel
        # @param Nameservers: DNS IP 列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Nameservers: Array

        attr_accessor :Nameservers

        def initialize(nameservers=nil)
          @Nameservers = nameservers
        end

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

      # DeleteAlertChannel请求参数结构体
      class DeleteAlertChannelRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param NoticeId: 待删除的通知渠道的 Notice ID(所有通知渠道的 Notice ID 可以从 DescribeAlertChannels 接口获取)
        # @type NoticeId: String

        attr_accessor :ProjectId, :NoticeId

        def initialize(projectid=nil, noticeid=nil)
          @ProjectId = projectid
          @NoticeId = noticeid
        end

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

      # DeleteAlertChannel返回参数结构体
      class DeleteAlertChannelResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DeleteCronJobs请求参数结构体
      class DeleteCronJobsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param CronJobIds: 定时任务ID数组
        # @type CronJobIds: Array

        attr_accessor :ProjectId, :CronJobIds

        def initialize(projectid=nil, cronjobids=nil)
          @ProjectId = projectid
          @CronJobIds = cronjobids
        end

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

      # DeleteCronJobs返回参数结构体
      class DeleteCronJobsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DeleteEnvironments请求参数结构体
      class DeleteEnvironmentsRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # DeleteEnvironments返回参数结构体
      class DeleteEnvironmentsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DeleteFiles请求参数结构体
      class DeleteFilesRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param FileIds: 待删除的文件的 ID(所有文件 ID 可从接口 DescribeFiles 获取)
        # @type FileIds: Array

        attr_accessor :ProjectId, :FileIds

        def initialize(projectid=nil, fileids=nil)
          @ProjectId = projectid
          @FileIds = fileids
        end

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

      # DeleteFiles返回参数结构体
      class DeleteFilesResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DeleteJobs请求参数结构体
      class DeleteJobsRequest < TencentCloud::Common::AbstractModel
        # @param JobIds: 待删除的任务的 ID(所有任务的 ID 可以从 DescribeJobs 获取)
        # @type JobIds: Array
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioIds: 场景ID数组
        # @type ScenarioIds: Array

        attr_accessor :JobIds, :ProjectId, :ScenarioIds

        def initialize(jobids=nil, projectid=nil, scenarioids=nil)
          @JobIds = jobids
          @ProjectId = projectid
          @ScenarioIds = scenarioids
        end

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

      # DeleteJobs返回参数结构体
      class DeleteJobsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DeleteProjects请求参数结构体
      class DeleteProjectsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectIds: 项目ID数组
        # @type ProjectIds: Array
        # @param DeleteScenarios: 是否删除项目相关的场景。默认为否。
        # @type DeleteScenarios: Boolean
        # @param DeleteJobs: 是否删除项目相关的任务。默认为否。
        # @type DeleteJobs: Boolean

        attr_accessor :ProjectIds, :DeleteScenarios, :DeleteJobs

        def initialize(projectids=nil, deletescenarios=nil, deletejobs=nil)
          @ProjectIds = projectids
          @DeleteScenarios = deletescenarios
          @DeleteJobs = deletejobs
        end

        def deserialize(params)
          @ProjectIds = params['ProjectIds']
          @DeleteScenarios = params['DeleteScenarios']
          @DeleteJobs = params['DeleteJobs']
        end
      end

      # DeleteProjects返回参数结构体
      class DeleteProjectsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DeleteScenarios请求参数结构体
      class DeleteScenariosRequest < TencentCloud::Common::AbstractModel
        # @param ScenarioIds: 场景ID数组
        # @type ScenarioIds: Array
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param DeleteJobs: 是否删除场景相关的任务。默认为否。
        # @type DeleteJobs: Boolean

        attr_accessor :ScenarioIds, :ProjectId, :DeleteJobs

        def initialize(scenarioids=nil, projectid=nil, deletejobs=nil)
          @ScenarioIds = scenarioids
          @ProjectId = projectid
          @DeleteJobs = deletejobs
        end

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

      # DeleteScenarios返回参数结构体
      class DeleteScenariosResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DescribeAlertChannels请求参数结构体
      class DescribeAlertChannelsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectIds: 项目 ID 列表
        # @type ProjectIds: Array
        # @param Offset: 偏移量,默认为0
        # @type Offset: Integer
        # @param Limit: 返回数量,默认为20,最大为100
        # @type Limit: Integer
        # @param NoticeIds: Notice ID 列表
        # @type NoticeIds: Array
        # @param OrderBy: 排序项
        # @type OrderBy: String
        # @param Ascend: 是否正序
        # @type Ascend: Boolean

        attr_accessor :ProjectIds, :Offset, :Limit, :NoticeIds, :OrderBy, :Ascend

        def initialize(projectids=nil, offset=nil, limit=nil, noticeids=nil, orderby=nil, ascend=nil)
          @ProjectIds = projectids
          @Offset = offset
          @Limit = limit
          @NoticeIds = noticeids
          @OrderBy = orderby
          @Ascend = ascend
        end

        def deserialize(params)
          @ProjectIds = params['ProjectIds']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @NoticeIds = params['NoticeIds']
          @OrderBy = params['OrderBy']
          @Ascend = params['Ascend']
        end
      end

      # DescribeAlertChannels返回参数结构体
      class DescribeAlertChannelsResponse < TencentCloud::Common::AbstractModel
        # @param AlertChannelSet: 告警通知接收组列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlertChannelSet: Array
        # @param Total: 告警通知接收组数目
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :AlertChannelSet, :Total, :RequestId

        def initialize(alertchannelset=nil, total=nil, requestid=nil)
          @AlertChannelSet = alertchannelset
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['AlertChannelSet'].nil?
            @AlertChannelSet = []
            params['AlertChannelSet'].each do |i|
              alertchannelrecord_tmp = AlertChannelRecord.new
              alertchannelrecord_tmp.deserialize(i)
              @AlertChannelSet << alertchannelrecord_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeAlertRecords请求参数结构体
      class DescribeAlertRecordsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectIds: 项目 ID 列表
        # @type ProjectIds: Array
        # @param ScenarioIds: 场景 ID 列表
        # @type ScenarioIds: Array
        # @param JobIds: 任务 ID 列表
        # @type JobIds: Array
        # @param Ascend: 是否正序
        # @type Ascend: Boolean
        # @param OrderBy: 排序项
        # @type OrderBy: String
        # @param Offset: 偏移量,默认为0
        # @type Offset: Integer
        # @param Limit: 返回数量,默认为20,最大为100
        # @type Limit: Integer
        # @param ScenarioNames: 按场景名筛选
        # @type ScenarioNames: Array

        attr_accessor :ProjectIds, :ScenarioIds, :JobIds, :Ascend, :OrderBy, :Offset, :Limit, :ScenarioNames

        def initialize(projectids=nil, scenarioids=nil, jobids=nil, ascend=nil, orderby=nil, offset=nil, limit=nil, scenarionames=nil)
          @ProjectIds = projectids
          @ScenarioIds = scenarioids
          @JobIds = jobids
          @Ascend = ascend
          @OrderBy = orderby
          @Offset = offset
          @Limit = limit
          @ScenarioNames = scenarionames
        end

        def deserialize(params)
          @ProjectIds = params['ProjectIds']
          @ScenarioIds = params['ScenarioIds']
          @JobIds = params['JobIds']
          @Ascend = params['Ascend']
          @OrderBy = params['OrderBy']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @ScenarioNames = params['ScenarioNames']
        end
      end

      # DescribeAlertRecords返回参数结构体
      class DescribeAlertRecordsResponse < TencentCloud::Common::AbstractModel
        # @param AlertRecordSet: 告警历史
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlertRecordSet: Array
        # @param Total: 告警历史记录的总数
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :AlertRecordSet, :Total, :RequestId

        def initialize(alertrecordset=nil, total=nil, requestid=nil)
          @AlertRecordSet = alertrecordset
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['AlertRecordSet'].nil?
            @AlertRecordSet = []
            params['AlertRecordSet'].each do |i|
              alertrecord_tmp = AlertRecord.new
              alertrecord_tmp.deserialize(i)
              @AlertRecordSet << alertrecord_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeAvailableMetrics请求参数结构体
      class DescribeAvailableMetricsRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # DescribeAvailableMetrics返回参数结构体
      class DescribeAvailableMetricsResponse < TencentCloud::Common::AbstractModel
        # @param MetricSet: 系统支持的所有指标
        # @type MetricSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 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|
              metricinfo_tmp = MetricInfo.new
              metricinfo_tmp.deserialize(i)
              @MetricSet << metricinfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeCheckSummary请求参数结构体
      class DescribeCheckSummaryRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String

        attr_accessor :JobId, :ScenarioId, :ProjectId

        def initialize(jobid=nil, scenarioid=nil, projectid=nil)
          @JobId = jobid
          @ScenarioId = scenarioid
          @ProjectId = projectid
        end

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

      # DescribeCheckSummary返回参数结构体
      class DescribeCheckSummaryResponse < TencentCloud::Common::AbstractModel
        # @param CheckSummarySet: 检查点汇总信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CheckSummarySet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :CheckSummarySet, :RequestId

        def initialize(checksummaryset=nil, requestid=nil)
          @CheckSummarySet = checksummaryset
          @RequestId = requestid
        end

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

      # DescribeCronJobs请求参数结构体
      class DescribeCronJobsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectIds: 项目ID数组
        # @type ProjectIds: Array
        # @param Offset: 偏移量,默认为0
        # @type Offset: Integer
        # @param Limit: 返回数量
        # @type Limit: Integer
        # @param CronJobIds: 定时任务ID数组
        # @type CronJobIds: Array
        # @param CronJobName: 定时任务名字,模糊查询
        # @type CronJobName: String
        # @param CronJobStatus: 定时任务状态数组
        # @type CronJobStatus: Array
        # @param OrderBy: 排序的列
        # @type OrderBy: String
        # @param Ascend: 是否正序
        # @type Ascend: Boolean

        attr_accessor :ProjectIds, :Offset, :Limit, :CronJobIds, :CronJobName, :CronJobStatus, :OrderBy, :Ascend

        def initialize(projectids=nil, offset=nil, limit=nil, cronjobids=nil, cronjobname=nil, cronjobstatus=nil, orderby=nil, ascend=nil)
          @ProjectIds = projectids
          @Offset = offset
          @Limit = limit
          @CronJobIds = cronjobids
          @CronJobName = cronjobname
          @CronJobStatus = cronjobstatus
          @OrderBy = orderby
          @Ascend = ascend
        end

        def deserialize(params)
          @ProjectIds = params['ProjectIds']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @CronJobIds = params['CronJobIds']
          @CronJobName = params['CronJobName']
          @CronJobStatus = params['CronJobStatus']
          @OrderBy = params['OrderBy']
          @Ascend = params['Ascend']
        end
      end

      # DescribeCronJobs返回参数结构体
      class DescribeCronJobsResponse < TencentCloud::Common::AbstractModel
        # @param Total: 定时任务总数
        # @type Total: Integer
        # @param CronJobSet: 定时任务信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CronJobSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :CronJobSet, :RequestId

        def initialize(total=nil, cronjobset=nil, requestid=nil)
          @Total = total
          @CronJobSet = cronjobset
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['CronJobSet'].nil?
            @CronJobSet = []
            params['CronJobSet'].each do |i|
              cronjob_tmp = CronJob.new
              cronjob_tmp.deserialize(i)
              @CronJobSet << cronjob_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeEnvironments请求参数结构体
      class DescribeEnvironmentsRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # DescribeEnvironments返回参数结构体
      class DescribeEnvironmentsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # DescribeErrorSummary请求参数结构体
      class DescribeErrorSummaryRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param Filters: 过滤参数
        # @type Filters: Array

        attr_accessor :JobId, :ScenarioId, :ProjectId, :Filters

        def initialize(jobid=nil, scenarioid=nil, projectid=nil, filters=nil)
          @JobId = jobid
          @ScenarioId = scenarioid
          @ProjectId = projectid
          @Filters = filters
        end

        def deserialize(params)
          @JobId = params['JobId']
          @ScenarioId = params['ScenarioId']
          @ProjectId = params['ProjectId']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
        end
      end

      # DescribeErrorSummary返回参数结构体
      class DescribeErrorSummaryResponse < TencentCloud::Common::AbstractModel
        # @param ErrorSummarySet: 错误汇总信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ErrorSummarySet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ErrorSummarySet, :RequestId

        def initialize(errorsummaryset=nil, requestid=nil)
          @ErrorSummarySet = errorsummaryset
          @RequestId = requestid
        end

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

      # DescribeFiles请求参数结构体
      class DescribeFilesRequest < TencentCloud::Common::AbstractModel
        # @param ProjectIds: 项目 ID 数组
        # @type ProjectIds: Array
        # @param FileIds: 文件 ID 数组
        # @type FileIds: Array
        # @param FileName: 文件名
        # @type FileName: String
        # @param Offset: 偏移量,默认为 0
        # @type Offset: Integer
        # @param Limit: 返回数量,默认为 20,最大为 100
        # @type Limit: Integer
        # @param Kind: 文件种类,参数文件-1,协议文件-2,请求文件-3
        # @type Kind: Integer

        attr_accessor :ProjectIds, :FileIds, :FileName, :Offset, :Limit, :Kind

        def initialize(projectids=nil, fileids=nil, filename=nil, offset=nil, limit=nil, kind=nil)
          @ProjectIds = projectids
          @FileIds = fileids
          @FileName = filename
          @Offset = offset
          @Limit = limit
          @Kind = kind
        end

        def deserialize(params)
          @ProjectIds = params['ProjectIds']
          @FileIds = params['FileIds']
          @FileName = params['FileName']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @Kind = params['Kind']
        end
      end

      # DescribeFiles返回参数结构体
      class DescribeFilesResponse < TencentCloud::Common::AbstractModel
        # @param FileSet: 文件列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FileSet: Array
        # @param Total: 文件总数
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FileSet, :Total, :RequestId

        def initialize(fileset=nil, total=nil, requestid=nil)
          @FileSet = fileset
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['FileSet'].nil?
            @FileSet = []
            params['FileSet'].each do |i|
              file_tmp = File.new
              file_tmp.deserialize(i)
              @FileSet << file_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeJobs请求参数结构体
      class DescribeJobsRequest < TencentCloud::Common::AbstractModel
        # @param ScenarioIds: 场景ID数组
        # @type ScenarioIds: Array
        # @param ProjectIds: 项目ID数组
        # @type ProjectIds: Array
        # @param Offset: 分页起始位置
        # @type Offset: Integer
        # @param Limit: 每页最大数目
        # @type Limit: Integer
        # @param JobIds: 任务ID数组
        # @type JobIds: Array
        # @param OrderBy: 按字段排序
        # @type OrderBy: String
        # @param Ascend: 升序/降序
        # @type Ascend: Boolean
        # @param StartTime: 任务开始时间
        # @type StartTime: String
        # @param EndTime: 任务结束时间
        # @type EndTime: String
        # @param Debug: 调试任务标记
        # @type Debug: Boolean
        # @param Status: 任务的状态
        # @type Status: Array

        attr_accessor :ScenarioIds, :ProjectIds, :Offset, :Limit, :JobIds, :OrderBy, :Ascend, :StartTime, :EndTime, :Debug, :Status

        def initialize(scenarioids=nil, projectids=nil, offset=nil, limit=nil, jobids=nil, orderby=nil, ascend=nil, starttime=nil, endtime=nil, debug=nil, status=nil)
          @ScenarioIds = scenarioids
          @ProjectIds = projectids
          @Offset = offset
          @Limit = limit
          @JobIds = jobids
          @OrderBy = orderby
          @Ascend = ascend
          @StartTime = starttime
          @EndTime = endtime
          @Debug = debug
          @Status = status
        end

        def deserialize(params)
          @ScenarioIds = params['ScenarioIds']
          @ProjectIds = params['ProjectIds']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @JobIds = params['JobIds']
          @OrderBy = params['OrderBy']
          @Ascend = params['Ascend']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Debug = params['Debug']
          @Status = params['Status']
        end
      end

      # DescribeJobs返回参数结构体
      class DescribeJobsResponse < TencentCloud::Common::AbstractModel
        # @param JobSet: 任务列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type JobSet: Array
        # @param Total: 任务数量
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :JobSet, :Total, :RequestId

        def initialize(jobset=nil, total=nil, requestid=nil)
          @JobSet = jobset
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['JobSet'].nil?
            @JobSet = []
            params['JobSet'].each do |i|
              job_tmp = Job.new
              job_tmp.deserialize(i)
              @JobSet << job_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeLabelValues请求参数结构体
      class DescribeLabelValuesRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param Metric: 指标名。取值范围参见 DescribeMetricLabelWithValues 接口返回的所有指标名
        # @type Metric: String
        # @param LabelName: 标签名。取值范围参见 DescribeMetricLabelWithValues 接口返回的指标及其支持的标签名
        # @type LabelName: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String

        attr_accessor :JobId, :ScenarioId, :Metric, :LabelName, :ProjectId

        def initialize(jobid=nil, scenarioid=nil, metric=nil, labelname=nil, projectid=nil)
          @JobId = jobid
          @ScenarioId = scenarioid
          @Metric = metric
          @LabelName = labelname
          @ProjectId = projectid
        end

        def deserialize(params)
          @JobId = params['JobId']
          @ScenarioId = params['ScenarioId']
          @Metric = params['Metric']
          @LabelName = params['LabelName']
          @ProjectId = params['ProjectId']
        end
      end

      # DescribeLabelValues返回参数结构体
      class DescribeLabelValuesResponse < TencentCloud::Common::AbstractModel
        # @param LabelValueSet: 标签值数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LabelValueSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :LabelValueSet, :RequestId

        def initialize(labelvalueset=nil, requestid=nil)
          @LabelValueSet = labelvalueset
          @RequestId = requestid
        end

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

      # DescribeMetricLabelWithValues请求参数结构体
      class DescribeMetricLabelWithValuesRequest < TencentCloud::Common::AbstractModel
        # @param JobId: job id
        # @type JobId: String
        # @param ProjectId: project id
        # @type ProjectId: String
        # @param ScenarioId: scenario id
        # @type ScenarioId: String

        attr_accessor :JobId, :ProjectId, :ScenarioId

        def initialize(jobid=nil, projectid=nil, scenarioid=nil)
          @JobId = jobid
          @ProjectId = projectid
          @ScenarioId = scenarioid
        end

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

      # DescribeMetricLabelWithValues返回参数结构体
      class DescribeMetricLabelWithValuesResponse < TencentCloud::Common::AbstractModel
        # @param MetricLabelWithValuesSet: 指标所有的label和values数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricLabelWithValuesSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :MetricLabelWithValuesSet, :RequestId

        def initialize(metriclabelwithvaluesset=nil, requestid=nil)
          @MetricLabelWithValuesSet = metriclabelwithvaluesset
          @RequestId = requestid
        end

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

      # DescribeNormalLogs请求参数结构体
      class DescribeNormalLogsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 压测项目ID
        # @type ProjectId: String
        # @param ScenarioId: 测试场景ID
        # @type ScenarioId: String
        # @param JobId: 压测任务ID
        # @type JobId: String
        # @param Context: 日志上下文,加载更多日志时使用,透传上次返回的Context值,获取后续的日志内容。过期时间1小时
        # @type Context: String
        # @param From: 日志开始时间
        # @type From: String
        # @param To: 日志结束时间
        # @type To: String
        # @param SeverityText: 日志级别,可取debug/info/error
        # @type SeverityText: String
        # @param Instance: 施压节点IP
        # @type Instance: String
        # @param InstanceRegion: 施压节点所在地域
        # @type InstanceRegion: String
        # @param LogType: 日志类型, console代表用户输出,engine代表引擎输出
        # @type LogType: String
        # @param Limit: 返回日志条数限制,最大100
        # @type Limit: Integer

        attr_accessor :ProjectId, :ScenarioId, :JobId, :Context, :From, :To, :SeverityText, :Instance, :InstanceRegion, :LogType, :Limit

        def initialize(projectid=nil, scenarioid=nil, jobid=nil, context=nil, from=nil, to=nil, severitytext=nil, instance=nil, instanceregion=nil, logtype=nil, limit=nil)
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @JobId = jobid
          @Context = context
          @From = from
          @To = to
          @SeverityText = severitytext
          @Instance = instance
          @InstanceRegion = instanceregion
          @LogType = logtype
          @Limit = limit
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @ScenarioId = params['ScenarioId']
          @JobId = params['JobId']
          @Context = params['Context']
          @From = params['From']
          @To = params['To']
          @SeverityText = params['SeverityText']
          @Instance = params['Instance']
          @InstanceRegion = params['InstanceRegion']
          @LogType = params['LogType']
          @Limit = params['Limit']
        end
      end

      # DescribeNormalLogs返回参数结构体
      class DescribeNormalLogsResponse < TencentCloud::Common::AbstractModel
        # @param Context: 日志上下文,加载更多日志时使用,透传上次返回的Context值,获取后续的日志内容。过期时间1小时
        # @type Context: String
        # @param NormalLogs: 日志数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NormalLogs: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Context, :NormalLogs, :RequestId

        def initialize(context=nil, normallogs=nil, requestid=nil)
          @Context = context
          @NormalLogs = normallogs
          @RequestId = requestid
        end

        def deserialize(params)
          @Context = params['Context']
          unless params['NormalLogs'].nil?
            @NormalLogs = []
            params['NormalLogs'].each do |i|
              normallog_tmp = NormalLog.new
              normallog_tmp.deserialize(i)
              @NormalLogs << normallog_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeProjects请求参数结构体
      class DescribeProjectsRequest < TencentCloud::Common::AbstractModel
        # @param Offset: 分页offset
        # @type Offset: Integer
        # @param Limit: 每页limit
        # @type Limit: Integer
        # @param ProjectIds: 项目ID数组
        # @type ProjectIds: Array
        # @param ProjectName: 项目名
        # @type ProjectName: String
        # @param OrderBy: 按字段排序
        # @type OrderBy: String
        # @param Ascend: 升序/降序
        # @type Ascend: Boolean
        # @param TagFilters: 标签数组
        # @type TagFilters: Array

        attr_accessor :Offset, :Limit, :ProjectIds, :ProjectName, :OrderBy, :Ascend, :TagFilters

        def initialize(offset=nil, limit=nil, projectids=nil, projectname=nil, orderby=nil, ascend=nil, tagfilters=nil)
          @Offset = offset
          @Limit = limit
          @ProjectIds = projectids
          @ProjectName = projectname
          @OrderBy = orderby
          @Ascend = ascend
          @TagFilters = tagfilters
        end

        def deserialize(params)
          @Offset = params['Offset']
          @Limit = params['Limit']
          @ProjectIds = params['ProjectIds']
          @ProjectName = params['ProjectName']
          @OrderBy = params['OrderBy']
          @Ascend = params['Ascend']
          unless params['TagFilters'].nil?
            @TagFilters = []
            params['TagFilters'].each do |i|
              tagspec_tmp = TagSpec.new
              tagspec_tmp.deserialize(i)
              @TagFilters << tagspec_tmp
            end
          end
        end
      end

      # DescribeProjects返回参数结构体
      class DescribeProjectsResponse < TencentCloud::Common::AbstractModel
        # @param ProjectSet: 项目数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectSet: Array
        # @param Total: 项目数量
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ProjectSet, :Total, :RequestId

        def initialize(projectset=nil, total=nil, requestid=nil)
          @ProjectSet = projectset
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['ProjectSet'].nil?
            @ProjectSet = []
            params['ProjectSet'].each do |i|
              project_tmp = Project.new
              project_tmp.deserialize(i)
              @ProjectSet << project_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeRegions请求参数结构体
      class DescribeRegionsRequest < TencentCloud::Common::AbstractModel
        # @param LoadType: 通过该参数指定不同压测网络环境,在不同网络环境下,PTS可用的地域不一样
        # @type LoadType: Integer

        attr_accessor :LoadType

        def initialize(loadtype=nil)
          @LoadType = loadtype
        end

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

      # DescribeRegions返回参数结构体
      class DescribeRegionsResponse < TencentCloud::Common::AbstractModel
        # @param RegionSet: 地域数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RegionSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RegionSet, :RequestId

        def initialize(regionset=nil, requestid=nil)
          @RegionSet = regionset
          @RequestId = requestid
        end

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

      # DescribeRequestSummary请求参数结构体
      class DescribeRequestSummaryRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 压测任务ID
        # @type JobId: String
        # @param ScenarioId: 压测场景ID
        # @type ScenarioId: String
        # @param ProjectId: 压测项目ID
        # @type ProjectId: String

        attr_accessor :JobId, :ScenarioId, :ProjectId

        def initialize(jobid=nil, scenarioid=nil, projectid=nil)
          @JobId = jobid
          @ScenarioId = scenarioid
          @ProjectId = projectid
        end

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

      # DescribeRequestSummary返回参数结构体
      class DescribeRequestSummaryResponse < TencentCloud::Common::AbstractModel
        # @param RequestSummarySet: 请求汇总信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RequestSummarySet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestSummarySet, :RequestId

        def initialize(requestsummaryset=nil, requestid=nil)
          @RequestSummarySet = requestsummaryset
          @RequestId = requestid
        end

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

      # DescribeSampleBatchQuery请求参数结构体
      class DescribeSampleBatchQueryRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 压测任务的 ID
        # @type JobId: String
        # @param ScenarioId: 场景的 ID
        # @type ScenarioId: String
        # @param Queries: 查询指标数组
        # @type Queries: Array
        # @param ProjectId: 项目的 ID
        # @type ProjectId: String

        attr_accessor :JobId, :ScenarioId, :Queries, :ProjectId

        def initialize(jobid=nil, scenarioid=nil, queries=nil, projectid=nil)
          @JobId = jobid
          @ScenarioId = scenarioid
          @Queries = queries
          @ProjectId = projectid
        end

        def deserialize(params)
          @JobId = params['JobId']
          @ScenarioId = params['ScenarioId']
          unless params['Queries'].nil?
            @Queries = []
            params['Queries'].each do |i|
              internalmetricquery_tmp = InternalMetricQuery.new
              internalmetricquery_tmp.deserialize(i)
              @Queries << internalmetricquery_tmp
            end
          end
          @ProjectId = params['ProjectId']
        end
      end

      # DescribeSampleBatchQuery返回参数结构体
      class DescribeSampleBatchQueryResponse < TencentCloud::Common::AbstractModel
        # @param MetricSampleSet: 返回指标内容
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricSampleSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :MetricSampleSet, :RequestId

        def initialize(metricsampleset=nil, requestid=nil)
          @MetricSampleSet = metricsampleset
          @RequestId = requestid
        end

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

      # DescribeSampleLogs请求参数结构体
      class DescribeSampleLogsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 测试项目ID
        # @type ProjectId: String
        # @param ScenarioId: 测试场景ID
        # @type ScenarioId: String
        # @param JobId: 测试任务ID
        # @type JobId: String
        # @param Context: 加载更多日志时使用,透传上次返回的Context值,获取后续的日志内容。过期时间1小时
        # @type Context: String
        # @param From: 日志开始时间
        # @type From: String
        # @param To: 日志结束时间
        # @type To: String
        # @param SeverityText: 日志级别debug,info,error
        # @type SeverityText: String
        # @param InstanceRegion: ap-shanghai, ap-guangzhou
        # @type InstanceRegion: String
        # @param Instance: 施压引擎节点IP
        # @type Instance: String
        # @param LogType: request 代表采样日志,可为不填
        # @type LogType: String
        # @param Limit: 返回日志条数,最大100
        # @type Limit: Integer
        # @param ReactionTimeRange: 采样日志响应时间范围
        # @type ReactionTimeRange: :class:`Tencentcloud::Pts.v20210728.models.ReactionTimeRange`
        # @param Status: 采样请求状态码
        # @type Status: String
        # @param Result: 采样请求结果码
        # @type Result: String
        # @param Method: 采样请求方法
        # @type Method: String
        # @param Service: 采样服务API
        # @type Service: String

        attr_accessor :ProjectId, :ScenarioId, :JobId, :Context, :From, :To, :SeverityText, :InstanceRegion, :Instance, :LogType, :Limit, :ReactionTimeRange, :Status, :Result, :Method, :Service

        def initialize(projectid=nil, scenarioid=nil, jobid=nil, context=nil, from=nil, to=nil, severitytext=nil, instanceregion=nil, instance=nil, logtype=nil, limit=nil, reactiontimerange=nil, status=nil, result=nil, method=nil, service=nil)
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @JobId = jobid
          @Context = context
          @From = from
          @To = to
          @SeverityText = severitytext
          @InstanceRegion = instanceregion
          @Instance = instance
          @LogType = logtype
          @Limit = limit
          @ReactionTimeRange = reactiontimerange
          @Status = status
          @Result = result
          @Method = method
          @Service = service
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @ScenarioId = params['ScenarioId']
          @JobId = params['JobId']
          @Context = params['Context']
          @From = params['From']
          @To = params['To']
          @SeverityText = params['SeverityText']
          @InstanceRegion = params['InstanceRegion']
          @Instance = params['Instance']
          @LogType = params['LogType']
          @Limit = params['Limit']
          unless params['ReactionTimeRange'].nil?
            @ReactionTimeRange = ReactionTimeRange.new
            @ReactionTimeRange.deserialize(params['ReactionTimeRange'])
          end
          @Status = params['Status']
          @Result = params['Result']
          @Method = params['Method']
          @Service = params['Service']
        end
      end

      # DescribeSampleLogs返回参数结构体
      class DescribeSampleLogsResponse < TencentCloud::Common::AbstractModel
        # @param Total: 日志总数
        # @type Total: Integer
        # @param Context: 日志上下文,加载更多日志时使用,透传上次返回的Context值,获取后续的日志内容。过期时间1小时
        # @type Context: String
        # @param SampleLogs: 采样日志数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SampleLogs: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :Context, :SampleLogs, :RequestId

        def initialize(total=nil, context=nil, samplelogs=nil, requestid=nil)
          @Total = total
          @Context = context
          @SampleLogs = samplelogs
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          @Context = params['Context']
          unless params['SampleLogs'].nil?
            @SampleLogs = []
            params['SampleLogs'].each do |i|
              samplelog_tmp = SampleLog.new
              samplelog_tmp.deserialize(i)
              @SampleLogs << samplelog_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeSampleMatrixBatchQuery请求参数结构体
      class DescribeSampleMatrixBatchQueryRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param Queries: 查询语句
        # @type Queries: Array

        attr_accessor :JobId, :ProjectId, :ScenarioId, :Queries

        def initialize(jobid=nil, projectid=nil, scenarioid=nil, queries=nil)
          @JobId = jobid
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @Queries = queries
        end

        def deserialize(params)
          @JobId = params['JobId']
          @ProjectId = params['ProjectId']
          @ScenarioId = params['ScenarioId']
          unless params['Queries'].nil?
            @Queries = []
            params['Queries'].each do |i|
              internalmetricquery_tmp = InternalMetricQuery.new
              internalmetricquery_tmp.deserialize(i)
              @Queries << internalmetricquery_tmp
            end
          end
        end
      end

      # DescribeSampleMatrixBatchQuery返回参数结构体
      class DescribeSampleMatrixBatchQueryResponse < TencentCloud::Common::AbstractModel
        # @param MetricSampleMatrixSet: 批量指标矩阵
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricSampleMatrixSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :MetricSampleMatrixSet, :RequestId

        def initialize(metricsamplematrixset=nil, requestid=nil)
          @MetricSampleMatrixSet = metricsamplematrixset
          @RequestId = requestid
        end

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

      # DescribeSampleMatrixQuery请求参数结构体
      class DescribeSampleMatrixQueryRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param Metric: 指标名。取值范围参见 DescribeMetricLabelWithValues 接口返回的所有指标名
        # @type Metric: String
        # @param Aggregation: 聚合函数。取值范围:Rate,Count,Avg,P90,P95,P99,Gauge
        # @type Aggregation: String
        # @param Filters: 用标签过滤规则来过滤指标,规则中包含标签名 LabelName、标签值 LabelValue、操作符 Operator(0代表相等,1代表不等)
        # @type Filters: Array
        # @param GroupBy: 分组;取值范围参见 DescribeMetricLabelWithValues 接口返回的指标及其支持的标签名
        # @type GroupBy: Array

        attr_accessor :JobId, :ProjectId, :ScenarioId, :Metric, :Aggregation, :Filters, :GroupBy

        def initialize(jobid=nil, projectid=nil, scenarioid=nil, metric=nil, aggregation=nil, filters=nil, groupby=nil)
          @JobId = jobid
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @Metric = metric
          @Aggregation = aggregation
          @Filters = filters
          @GroupBy = groupby
        end

        def deserialize(params)
          @JobId = params['JobId']
          @ProjectId = params['ProjectId']
          @ScenarioId = params['ScenarioId']
          @Metric = params['Metric']
          @Aggregation = params['Aggregation']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
          @GroupBy = params['GroupBy']
        end
      end

      # DescribeSampleMatrixQuery返回参数结构体
      class DescribeSampleMatrixQueryResponse < TencentCloud::Common::AbstractModel
        # @param MetricSampleMatrix: 指标矩阵
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricSampleMatrix: :class:`Tencentcloud::Pts.v20210728.models.CustomSampleMatrix`
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :MetricSampleMatrix, :RequestId

        def initialize(metricsamplematrix=nil, requestid=nil)
          @MetricSampleMatrix = metricsamplematrix
          @RequestId = requestid
        end

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

      # DescribeSampleQuery请求参数结构体
      class DescribeSampleQueryRequest < TencentCloud::Common::AbstractModel
        # @param JobId: job id
        # @type JobId: String
        # @param ScenarioId: 场景Id
        # @type ScenarioId: String
        # @param Metric: 指标名。取值范围参见 DescribeMetricLabelWithValues 接口返回的所有指标名
        # @type Metric: String
        # @param Aggregation: 聚合函数。取值范围:Rate,Count,Avg,P90,P95,P99,Gauge
        # @type Aggregation: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param Labels: 标签过滤条件。各指标支持的标签参见 DescribeMetricLabelWithValues 接口返回的所有指标及其支持的标签
        # @type Labels: Array

        attr_accessor :JobId, :ScenarioId, :Metric, :Aggregation, :ProjectId, :Labels

        def initialize(jobid=nil, scenarioid=nil, metric=nil, aggregation=nil, projectid=nil, labels=nil)
          @JobId = jobid
          @ScenarioId = scenarioid
          @Metric = metric
          @Aggregation = aggregation
          @ProjectId = projectid
          @Labels = labels
        end

        def deserialize(params)
          @JobId = params['JobId']
          @ScenarioId = params['ScenarioId']
          @Metric = params['Metric']
          @Aggregation = params['Aggregation']
          @ProjectId = params['ProjectId']
          unless params['Labels'].nil?
            @Labels = []
            params['Labels'].each do |i|
              label_tmp = Label.new
              label_tmp.deserialize(i)
              @Labels << label_tmp
            end
          end
        end
      end

      # DescribeSampleQuery返回参数结构体
      class DescribeSampleQueryResponse < TencentCloud::Common::AbstractModel
        # @param MetricSample: 返回指标内容
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricSample: :class:`Tencentcloud::Pts.v20210728.models.CustomSample`
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :MetricSample, :RequestId

        def initialize(metricsample=nil, requestid=nil)
          @MetricSample = metricsample
          @RequestId = requestid
        end

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

      # DescribeScenarioWithJobs请求参数结构体
      class DescribeScenarioWithJobsRequest < TencentCloud::Common::AbstractModel
        # @param Offset: 偏移量,默认为0
        # @type Offset: Integer
        # @param Limit: 返回数量,默认为20,最大为100
        # @type Limit: Integer
        # @param ProjectIds: 项目ID数组
        # @type ProjectIds: Array
        # @param ScenarioIds: 场景ID数组
        # @type ScenarioIds: Array
        # @param ScenarioName: 场景名
        # @type ScenarioName: String
        # @param ScenarioStatus: 场景状态数组
        # @type ScenarioStatus: Integer
        # @param OrderBy: 排序的列
        # @type OrderBy: String
        # @param Ascend: 是否正序
        # @type Ascend: Boolean
        # @param ScenarioRelatedJobsParams: job相关参数
        # @type ScenarioRelatedJobsParams: :class:`Tencentcloud::Pts.v20210728.models.ScenarioRelatedJobsParams`
        # @param IgnoreScript: 是否需要返回场景的脚本内容
        # @type IgnoreScript: Boolean
        # @param IgnoreDataset: 是否需要返回测试数据文件信息
        # @type IgnoreDataset: Boolean
        # @param ScenarioType: 场景类型,如pts-http, pts-js, pts-trpc, pts-jmeter
        # @type ScenarioType: String
        # @param Owner: 创建人员
        # @type Owner: String

        attr_accessor :Offset, :Limit, :ProjectIds, :ScenarioIds, :ScenarioName, :ScenarioStatus, :OrderBy, :Ascend, :ScenarioRelatedJobsParams, :IgnoreScript, :IgnoreDataset, :ScenarioType, :Owner

        def initialize(offset=nil, limit=nil, projectids=nil, scenarioids=nil, scenarioname=nil, scenariostatus=nil, orderby=nil, ascend=nil, scenariorelatedjobsparams=nil, ignorescript=nil, ignoredataset=nil, scenariotype=nil, owner=nil)
          @Offset = offset
          @Limit = limit
          @ProjectIds = projectids
          @ScenarioIds = scenarioids
          @ScenarioName = scenarioname
          @ScenarioStatus = scenariostatus
          @OrderBy = orderby
          @Ascend = ascend
          @ScenarioRelatedJobsParams = scenariorelatedjobsparams
          @IgnoreScript = ignorescript
          @IgnoreDataset = ignoredataset
          @ScenarioType = scenariotype
          @Owner = owner
        end

        def deserialize(params)
          @Offset = params['Offset']
          @Limit = params['Limit']
          @ProjectIds = params['ProjectIds']
          @ScenarioIds = params['ScenarioIds']
          @ScenarioName = params['ScenarioName']
          @ScenarioStatus = params['ScenarioStatus']
          @OrderBy = params['OrderBy']
          @Ascend = params['Ascend']
          unless params['ScenarioRelatedJobsParams'].nil?
            @ScenarioRelatedJobsParams = ScenarioRelatedJobsParams.new
            @ScenarioRelatedJobsParams.deserialize(params['ScenarioRelatedJobsParams'])
          end
          @IgnoreScript = params['IgnoreScript']
          @IgnoreDataset = params['IgnoreDataset']
          @ScenarioType = params['ScenarioType']
          @Owner = params['Owner']
        end
      end

      # DescribeScenarioWithJobs返回参数结构体
      class DescribeScenarioWithJobsResponse < TencentCloud::Common::AbstractModel
        # @param ScenarioWithJobsSet: 场景配置以及附带的job内容
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScenarioWithJobsSet: Array
        # @param Total: 场景总数
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ScenarioWithJobsSet, :Total, :RequestId

        def initialize(scenariowithjobsset=nil, total=nil, requestid=nil)
          @ScenarioWithJobsSet = scenariowithjobsset
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['ScenarioWithJobsSet'].nil?
            @ScenarioWithJobsSet = []
            params['ScenarioWithJobsSet'].each do |i|
              scenariowithjobs_tmp = ScenarioWithJobs.new
              scenariowithjobs_tmp.deserialize(i)
              @ScenarioWithJobsSet << scenariowithjobs_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # DescribeScenarios请求参数结构体
      class DescribeScenariosRequest < TencentCloud::Common::AbstractModel
        # @param ScenarioIds: 场景ID数组
        # @type ScenarioIds: Array
        # @param ScenarioName: 场景名
        # @type ScenarioName: String
        # @param ScenarioStatus: 场景状态数组
        # @type ScenarioStatus: Array
        # @param Offset: 偏移量,默认为0
        # @type Offset: Integer
        # @param Limit: 返回数量,默认为20,最大为100
        # @type Limit: Integer
        # @param OrderBy: 排序的列
        # @type OrderBy: String
        # @param Ascend: 是否正序
        # @type Ascend: Boolean
        # @param ProjectIds: 项目ID数组
        # @type ProjectIds: Array
        # @param ScenarioType: 场景类型
        # @type ScenarioType: String

        attr_accessor :ScenarioIds, :ScenarioName, :ScenarioStatus, :Offset, :Limit, :OrderBy, :Ascend, :ProjectIds, :ScenarioType

        def initialize(scenarioids=nil, scenarioname=nil, scenariostatus=nil, offset=nil, limit=nil, orderby=nil, ascend=nil, projectids=nil, scenariotype=nil)
          @ScenarioIds = scenarioids
          @ScenarioName = scenarioname
          @ScenarioStatus = scenariostatus
          @Offset = offset
          @Limit = limit
          @OrderBy = orderby
          @Ascend = ascend
          @ProjectIds = projectids
          @ScenarioType = scenariotype
        end

        def deserialize(params)
          @ScenarioIds = params['ScenarioIds']
          @ScenarioName = params['ScenarioName']
          @ScenarioStatus = params['ScenarioStatus']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @OrderBy = params['OrderBy']
          @Ascend = params['Ascend']
          @ProjectIds = params['ProjectIds']
          @ScenarioType = params['ScenarioType']
        end
      end

      # DescribeScenarios返回参数结构体
      class DescribeScenariosResponse < TencentCloud::Common::AbstractModel
        # @param ScenarioSet: 场景列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScenarioSet: Array
        # @param Total: 场景总数
        # @type Total: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ScenarioSet, :Total, :RequestId

        def initialize(scenarioset=nil, total=nil, requestid=nil)
          @ScenarioSet = scenarioset
          @Total = total
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['ScenarioSet'].nil?
            @ScenarioSet = []
            params['ScenarioSet'].each do |i|
              scenario_tmp = Scenario.new
              scenario_tmp.deserialize(i)
              @ScenarioSet << scenario_tmp
            end
          end
          @Total = params['Total']
          @RequestId = params['RequestId']
        end
      end

      # 施压机的域名解析相关配置
      class DomainNameConfig < TencentCloud::Common::AbstractModel
        # @param HostAliases: 域名绑定配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HostAliases: Array
        # @param DNSConfig: DNS 配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DNSConfig: :class:`Tencentcloud::Pts.v20210728.models.DNSConfig`

        attr_accessor :HostAliases, :DNSConfig

        def initialize(hostaliases=nil, dnsconfig=nil)
          @HostAliases = hostaliases
          @DNSConfig = dnsconfig
        end

        def deserialize(params)
          unless params['HostAliases'].nil?
            @HostAliases = []
            params['HostAliases'].each do |i|
              hostalias_tmp = HostAlias.new
              hostalias_tmp.deserialize(i)
              @HostAliases << hostalias_tmp
            end
          end
          unless params['DNSConfig'].nil?
            @DNSConfig = DNSConfig.new
            @DNSConfig.deserialize(params['DNSConfig'])
          end
        end
      end

      # 错误信息汇总
      class ErrorSummary < TencentCloud::Common::AbstractModel
        # @param Status: 状态码
        # @type Status: String
        # @param Result: 结果码
        # @type Result: String
        # @param Count: 错误出现次数
        # @type Count: Integer
        # @param Rate: 错误率
        # @type Rate: Float
        # @param Message: 错误信息
        # @type Message: String
        # @param Proto: 请求协议类型
        # @type Proto: String

        attr_accessor :Status, :Result, :Count, :Rate, :Message, :Proto

        def initialize(status=nil, result=nil, count=nil, rate=nil, message=nil, proto=nil)
          @Status = status
          @Result = result
          @Count = count
          @Rate = rate
          @Message = message
          @Proto = proto
        end

        def deserialize(params)
          @Status = params['Status']
          @Result = params['Result']
          @Count = params['Count']
          @Rate = params['Rate']
          @Message = params['Message']
          @Proto = params['Proto']
        end
      end

      # 文件列表
      class File < TencentCloud::Common::AbstractModel
        # @param FileId: 文件 ID
        # @type FileId: String
        # @param Kind: 文件种类,参数文件-1,协议文件-2,请求文件-3
        # @type Kind: Integer
        # @param Name: 文件名
        # @type Name: String
        # @param Size: 文件字节数
        # @type Size: Integer
        # @param Type: 文件类型
        # @type Type: String
        # @param UpdatedAt: 更新时间
        # @type UpdatedAt: String
        # @param LineCount: 文件行数
        # @type LineCount: Integer
        # @param HeadLines: 头部数据行
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HeadLines: Array
        # @param TailLines: 尾部数据行
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TailLines: Array
        # @param HeaderInFile: 首行是否为参数名
        # @type HeaderInFile: Boolean
        # @param HeaderColumns: 参数名数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HeaderColumns: Array
        # @param FileInfos: 文件夹中的文件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FileInfos: Array
        # @param ScenarioSet: 关联场景
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScenarioSet: Array
        # @param Status: 文件状态
        # @type Status: Integer
        # @param CreatedAt: 创建时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CreatedAt: String
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param AppID: 此字段不再使用
        # @type AppID: Integer
        # @param Uin: 用户主账号
        # @type Uin: String
        # @param SubAccountUin: 用户子账号
        # @type SubAccountUin: String
        # @param AppId: 用户账号的 App ID
        # @type AppId: Integer

        attr_accessor :FileId, :Kind, :Name, :Size, :Type, :UpdatedAt, :LineCount, :HeadLines, :TailLines, :HeaderInFile, :HeaderColumns, :FileInfos, :ScenarioSet, :Status, :CreatedAt, :ProjectId, :AppID, :Uin, :SubAccountUin, :AppId

        def initialize(fileid=nil, kind=nil, name=nil, size=nil, type=nil, updatedat=nil, linecount=nil, headlines=nil, taillines=nil, headerinfile=nil, headercolumns=nil, fileinfos=nil, scenarioset=nil, status=nil, createdat=nil, projectid=nil, appid=nil, uin=nil, subaccountuin=nil, appid=nil)
          @FileId = fileid
          @Kind = kind
          @Name = name
          @Size = size
          @Type = type
          @UpdatedAt = updatedat
          @LineCount = linecount
          @HeadLines = headlines
          @TailLines = taillines
          @HeaderInFile = headerinfile
          @HeaderColumns = headercolumns
          @FileInfos = fileinfos
          @ScenarioSet = scenarioset
          @Status = status
          @CreatedAt = createdat
          @ProjectId = projectid
          @AppID = appid
          @Uin = uin
          @SubAccountUin = subaccountuin
          @AppId = appid
        end

        def deserialize(params)
          @FileId = params['FileId']
          @Kind = params['Kind']
          @Name = params['Name']
          @Size = params['Size']
          @Type = params['Type']
          @UpdatedAt = params['UpdatedAt']
          @LineCount = params['LineCount']
          @HeadLines = params['HeadLines']
          @TailLines = params['TailLines']
          @HeaderInFile = params['HeaderInFile']
          @HeaderColumns = params['HeaderColumns']
          unless params['FileInfos'].nil?
            @FileInfos = []
            params['FileInfos'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @FileInfos << fileinfo_tmp
            end
          end
          unless params['ScenarioSet'].nil?
            @ScenarioSet = []
            params['ScenarioSet'].each do |i|
              scenario_tmp = Scenario.new
              scenario_tmp.deserialize(i)
              @ScenarioSet << scenario_tmp
            end
          end
          @Status = params['Status']
          @CreatedAt = params['CreatedAt']
          @ProjectId = params['ProjectId']
          @AppID = params['AppID']
          @Uin = params['Uin']
          @SubAccountUin = params['SubAccountUin']
          @AppId = params['AppId']
        end
      end

      # 文件基本信息
      class FileInfo < TencentCloud::Common::AbstractModel
        # @param Name: 文件名
        # @type Name: String
        # @param Size: 文件大小
        # @type Size: Integer
        # @param Type: 文件类型
        # @type Type: String
        # @param UpdatedAt: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedAt: String
        # @param FileId: 文件 ID
        # @type FileId: String

        attr_accessor :Name, :Size, :Type, :UpdatedAt, :FileId

        def initialize(name=nil, size=nil, type=nil, updatedat=nil, fileid=nil)
          @Name = name
          @Size = size
          @Type = type
          @UpdatedAt = updatedat
          @FileId = fileid
        end

        def deserialize(params)
          @Name = params['Name']
          @Size = params['Size']
          @Type = params['Type']
          @UpdatedAt = params['UpdatedAt']
          @FileId = params['FileId']
        end
      end

      # 指标查询过滤
      class Filter < TencentCloud::Common::AbstractModel
        # @param Operator: 等于:0,不等于:1
        # @type Operator: Integer
        # @param LabelName: 标签名,可选值包括:
        # 1. method,请求方法名;
        # 2. proto:协议名;
        # 3. service:服务名;
        # 4. status:响应状态码;
        # 5. result:响应详情;
        # 6. check:检查名。
        # @type LabelName: String
        # @param LabelValue: 标签值:
        # 1. method:请求方法名,以 http 协议为例,method 为 GET、POST、PUT 等;
        # 2. proto:协议名,以 http 协议为例,proto 为 HTTP/1.1、HTTP/2 等;
        # 3. service:服务名,以 http 协议为例,service 为请求 url,如 http://httpbin.org/get 等;
        # 4. status:响应状态码,以 http 协议为例,状态码包括 200、404、500 等;
        # 5. result:响应详情,通过 result 判断请求成功或失败;请求正常,result 标签值为 ok;请求失败,result 标签携带错误码和描述;
        # 6. check:检查名,标签值为用户设置的检查点名称。
        # @type LabelValue: String

        attr_accessor :Operator, :LabelName, :LabelValue

        def initialize(operator=nil, labelname=nil, labelvalue=nil)
          @Operator = operator
          @LabelName = labelname
          @LabelValue = labelvalue
        end

        def deserialize(params)
          @Operator = params['Operator']
          @LabelName = params['LabelName']
          @LabelValue = params['LabelValue']
        end
      end

      # GenerateTmpKey请求参数结构体
      class GenerateTmpKeyRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String

        attr_accessor :ProjectId, :ScenarioId

        def initialize(projectid=nil, scenarioid=nil)
          @ProjectId = projectid
          @ScenarioId = scenarioid
        end

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

      # GenerateTmpKey返回参数结构体
      class GenerateTmpKeyResponse < TencentCloud::Common::AbstractModel
        # @param StartTime: 临时访问凭证获取时刻的时间戳(单位秒)
        # @type StartTime: Integer
        # @param ExpiredTime: 临时访问凭证超时 时刻的时间戳(单位秒)
        # @type ExpiredTime: Integer
        # @param Credentials: 临时访问凭证
        # @type Credentials: :class:`Tencentcloud::Pts.v20210728.models.Credentials`
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :StartTime, :ExpiredTime, :Credentials, :RequestId

        def initialize(starttime=nil, expiredtime=nil, credentials=nil, requestid=nil)
          @StartTime = starttime
          @ExpiredTime = expiredtime
          @Credentials = credentials
          @RequestId = requestid
        end

        def deserialize(params)
          @StartTime = params['StartTime']
          @ExpiredTime = params['ExpiredTime']
          unless params['Credentials'].nil?
            @Credentials = Credentials.new
            @Credentials.deserialize(params['Credentials'])
          end
          @RequestId = params['RequestId']
        end
      end

      # 压力分布配置
      class GeoRegionsLoadItem < TencentCloud::Common::AbstractModel
        # @param RegionId: 地域ID
        # @type RegionId: Integer
        # @param Region: 地域
        # @type Region: String
        # @param Percentage: 百分比
        # @type Percentage: Integer

        attr_accessor :RegionId, :Region, :Percentage

        def initialize(regionid=nil, region=nil, percentage=nil)
          @RegionId = regionid
          @Region = region
          @Percentage = percentage
        end

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

      # 施压机域名绑定配置
      class HostAlias < TencentCloud::Common::AbstractModel
        # @param HostNames: 需绑定的域名列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HostNames: Array
        # @param IP: 需绑定的 IP 地址
        # @type IP: String

        attr_accessor :HostNames, :IP

        def initialize(hostnames=nil, ip=nil)
          @HostNames = hostnames
          @IP = ip
        end

        def deserialize(params)
          @HostNames = params['HostNames']
          @IP = params['IP']
        end
      end

      # 查询结构封装
      class InternalMetricQuery < TencentCloud::Common::AbstractModel
        # @param Metric: 指标名
        # @type Metric: String
        # @param Aggregation: 聚合函数。取值范围:Rate,Count,Avg,P90,P95,P99,Gauge
        # @type Aggregation: String
        # @param Labels: deprecated, 请使用Filters
        # @type Labels: Array
        # @param Filters: 用标签过滤规则来过滤指标,规则中包含标签名 LabelName、标签值 LabelValue、操作符 Operator(0代表相等,1代表不等)
        # @type Filters: Array
        # @param GroupBy: 指标分组
        # @type GroupBy: Array

        attr_accessor :Metric, :Aggregation, :Labels, :Filters, :GroupBy

        def initialize(metric=nil, aggregation=nil, labels=nil, filters=nil, groupby=nil)
          @Metric = metric
          @Aggregation = aggregation
          @Labels = labels
          @Filters = filters
          @GroupBy = groupby
        end

        def deserialize(params)
          @Metric = params['Metric']
          @Aggregation = params['Aggregation']
          unless params['Labels'].nil?
            @Labels = []
            params['Labels'].each do |i|
              label_tmp = Label.new
              label_tmp.deserialize(i)
              @Labels << label_tmp
            end
          end
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
          @GroupBy = params['GroupBy']
        end
      end

      # 任务
      class Job < TencentCloud::Common::AbstractModel
        # @param JobId: 任务的JobID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type JobId: String
        # @param ScenarioId: 任务的场景ID
        # @type ScenarioId: String
        # @param Load: 任务的施压配置
        # @type Load: :class:`Tencentcloud::Pts.v20210728.models.Load`
        # @param Configs: 此字段不再使用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Configs: Array
        # @param Datasets: 任务的数据集文件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Datasets: Array
        # @param Extensions: 此字段不再使用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Extensions: Array
        # @param Status: 任务的运行状态, JobUnknown: 0,JobCreated:1,JobPending:2, JobPreparing:3,JobSelectClustering:4,JobCreateTasking:5,JobSyncTasking:6
        # JobRunning:11,JobFinished:12,JobPrepareException:13,JobFinishException:14,JobAborting:15,JobAborted:16,JobAbortException:17,JobDeleted:18,
        # JobSelectClusterException:19,JobCreateTaskException:20,JobSyncTaskException:21
        # @type Status: Integer
        # @param StartTime: 任务的开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartTime: String
        # @param EndTime: 任务的结束时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: String
        # @param MaxVirtualUserCount: 任务的最大VU数
        # @type MaxVirtualUserCount: Integer
        # @param Note: 任务的备注信息
        # @type Note: String
        # @param ErrorRate: 错误率百分比
        # @type ErrorRate: Float
        # @param JobOwner: 任务发起人
        # @type JobOwner: String
        # @param LoadSources: 此字段不再使用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LoadSources: :class:`Tencentcloud::Pts.v20210728.models.LoadSource`
        # @param Duration: 任务时长
        # @type Duration: Integer
        # @param MaxRequestsPerSecond: 最大每秒请求数
        # @type MaxRequestsPerSecond: Integer
        # @param RequestTotal: 总请求数
        # @type RequestTotal: Float
        # @param RequestsPerSecond: 平均每秒请求数
        # @type RequestsPerSecond: Float
        # @param ResponseTimeAverage: 平均响应时间
        # @type ResponseTimeAverage: Float
        # @param ResponseTimeP99: 响应时间第99百分位
        # @type ResponseTimeP99: Float
        # @param ResponseTimeP95: 响应时间第95百分位
        # @type ResponseTimeP95: Float
        # @param ResponseTimeP90: 响应时间第90百分位
        # @type ResponseTimeP90: Float
        # @param Scripts: 此字段不再使用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Scripts: Array
        # @param ResponseTimeMax: 最大响应时间
        # @type ResponseTimeMax: Float
        # @param ResponseTimeMin: 最小响应时间
        # @type ResponseTimeMin: Float
        # @param LoadSourceInfos: 发压host信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LoadSourceInfos: Array
        # @param TestScripts: 测试脚本信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TestScripts: Array
        # @param Protocols: 协议脚本信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Protocols: Array
        # @param RequestFiles: 请求文件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RequestFiles: Array
        # @param Plugins: 拓展包文件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Plugins: Array
        # @param CronId: 定时任务ID
        # @type CronId: String
        # @param Type: 场景类型
        # @type Type: String
        # @param DomainNameConfig: 域名绑定配置
        # @type DomainNameConfig: :class:`Tencentcloud::Pts.v20210728.models.DomainNameConfig`
        # @param Debug: false
        # @type Debug: Boolean
        # @param AbortReason: 中断原因
        # @type AbortReason: Integer
        # @param CreatedAt: 任务的创建时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CreatedAt: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param NotificationHooks: 通知事件回调
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NotificationHooks: Array
        # @param NetworkReceiveRate: 每秒接收字节数
        # @type NetworkReceiveRate: Float
        # @param NetworkSendRate: 每秒发送字节数
        # @type NetworkSendRate: Float
        # @param Message: 任务状态描述
        # @type Message: String
        # @param ProjectName: test-project
        # @type ProjectName: String
        # @param ScenarioName: test-scenario
        # @type ScenarioName: String
        # @param PayMode: 付费类型
        # @type PayMode: Integer
        # @param Usage: job VUM用量
        # @type Usage: Integer

        attr_accessor :JobId, :ScenarioId, :Load, :Configs, :Datasets, :Extensions, :Status, :StartTime, :EndTime, :MaxVirtualUserCount, :Note, :ErrorRate, :JobOwner, :LoadSources, :Duration, :MaxRequestsPerSecond, :RequestTotal, :RequestsPerSecond, :ResponseTimeAverage, :ResponseTimeP99, :ResponseTimeP95, :ResponseTimeP90, :Scripts, :ResponseTimeMax, :ResponseTimeMin, :LoadSourceInfos, :TestScripts, :Protocols, :RequestFiles, :Plugins, :CronId, :Type, :DomainNameConfig, :Debug, :AbortReason, :CreatedAt, :ProjectId, :NotificationHooks, :NetworkReceiveRate, :NetworkSendRate, :Message, :ProjectName, :ScenarioName, :PayMode, :Usage

        def initialize(jobid=nil, scenarioid=nil, load=nil, configs=nil, datasets=nil, extensions=nil, status=nil, starttime=nil, endtime=nil, maxvirtualusercount=nil, note=nil, errorrate=nil, jobowner=nil, loadsources=nil, duration=nil, maxrequestspersecond=nil, requesttotal=nil, requestspersecond=nil, responsetimeaverage=nil, responsetimep99=nil, responsetimep95=nil, responsetimep90=nil, scripts=nil, responsetimemax=nil, responsetimemin=nil, loadsourceinfos=nil, testscripts=nil, protocols=nil, requestfiles=nil, plugins=nil, cronid=nil, type=nil, domainnameconfig=nil, debug=nil, abortreason=nil, createdat=nil, projectid=nil, notificationhooks=nil, networkreceiverate=nil, networksendrate=nil, message=nil, projectname=nil, scenarioname=nil, paymode=nil, usage=nil)
          @JobId = jobid
          @ScenarioId = scenarioid
          @Load = load
          @Configs = configs
          @Datasets = datasets
          @Extensions = extensions
          @Status = status
          @StartTime = starttime
          @EndTime = endtime
          @MaxVirtualUserCount = maxvirtualusercount
          @Note = note
          @ErrorRate = errorrate
          @JobOwner = jobowner
          @LoadSources = loadsources
          @Duration = duration
          @MaxRequestsPerSecond = maxrequestspersecond
          @RequestTotal = requesttotal
          @RequestsPerSecond = requestspersecond
          @ResponseTimeAverage = responsetimeaverage
          @ResponseTimeP99 = responsetimep99
          @ResponseTimeP95 = responsetimep95
          @ResponseTimeP90 = responsetimep90
          @Scripts = scripts
          @ResponseTimeMax = responsetimemax
          @ResponseTimeMin = responsetimemin
          @LoadSourceInfos = loadsourceinfos
          @TestScripts = testscripts
          @Protocols = protocols
          @RequestFiles = requestfiles
          @Plugins = plugins
          @CronId = cronid
          @Type = type
          @DomainNameConfig = domainnameconfig
          @Debug = debug
          @AbortReason = abortreason
          @CreatedAt = createdat
          @ProjectId = projectid
          @NotificationHooks = notificationhooks
          @NetworkReceiveRate = networkreceiverate
          @NetworkSendRate = networksendrate
          @Message = message
          @ProjectName = projectname
          @ScenarioName = scenarioname
          @PayMode = paymode
          @Usage = usage
        end

        def deserialize(params)
          @JobId = params['JobId']
          @ScenarioId = params['ScenarioId']
          unless params['Load'].nil?
            @Load = Load.new
            @Load.deserialize(params['Load'])
          end
          @Configs = params['Configs']
          unless params['Datasets'].nil?
            @Datasets = []
            params['Datasets'].each do |i|
              testdata_tmp = TestData.new
              testdata_tmp.deserialize(i)
              @Datasets << testdata_tmp
            end
          end
          @Extensions = params['Extensions']
          @Status = params['Status']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @MaxVirtualUserCount = params['MaxVirtualUserCount']
          @Note = params['Note']
          @ErrorRate = params['ErrorRate']
          @JobOwner = params['JobOwner']
          unless params['LoadSources'].nil?
            @LoadSources = LoadSource.new
            @LoadSources.deserialize(params['LoadSources'])
          end
          @Duration = params['Duration']
          @MaxRequestsPerSecond = params['MaxRequestsPerSecond']
          @RequestTotal = params['RequestTotal']
          @RequestsPerSecond = params['RequestsPerSecond']
          @ResponseTimeAverage = params['ResponseTimeAverage']
          @ResponseTimeP99 = params['ResponseTimeP99']
          @ResponseTimeP95 = params['ResponseTimeP95']
          @ResponseTimeP90 = params['ResponseTimeP90']
          @Scripts = params['Scripts']
          @ResponseTimeMax = params['ResponseTimeMax']
          @ResponseTimeMin = params['ResponseTimeMin']
          unless params['LoadSourceInfos'].nil?
            @LoadSourceInfos = []
            params['LoadSourceInfos'].each do |i|
              loadsource_tmp = LoadSource.new
              loadsource_tmp.deserialize(i)
              @LoadSourceInfos << loadsource_tmp
            end
          end
          unless params['TestScripts'].nil?
            @TestScripts = []
            params['TestScripts'].each do |i|
              scriptinfo_tmp = ScriptInfo.new
              scriptinfo_tmp.deserialize(i)
              @TestScripts << scriptinfo_tmp
            end
          end
          unless params['Protocols'].nil?
            @Protocols = []
            params['Protocols'].each do |i|
              protocolinfo_tmp = ProtocolInfo.new
              protocolinfo_tmp.deserialize(i)
              @Protocols << protocolinfo_tmp
            end
          end
          unless params['RequestFiles'].nil?
            @RequestFiles = []
            params['RequestFiles'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @RequestFiles << fileinfo_tmp
            end
          end
          unless params['Plugins'].nil?
            @Plugins = []
            params['Plugins'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @Plugins << fileinfo_tmp
            end
          end
          @CronId = params['CronId']
          @Type = params['Type']
          unless params['DomainNameConfig'].nil?
            @DomainNameConfig = DomainNameConfig.new
            @DomainNameConfig.deserialize(params['DomainNameConfig'])
          end
          @Debug = params['Debug']
          @AbortReason = params['AbortReason']
          @CreatedAt = params['CreatedAt']
          @ProjectId = params['ProjectId']
          unless params['NotificationHooks'].nil?
            @NotificationHooks = []
            params['NotificationHooks'].each do |i|
              notificationhook_tmp = NotificationHook.new
              notificationhook_tmp.deserialize(i)
              @NotificationHooks << notificationhook_tmp
            end
          end
          @NetworkReceiveRate = params['NetworkReceiveRate']
          @NetworkSendRate = params['NetworkSendRate']
          @Message = params['Message']
          @ProjectName = params['ProjectName']
          @ScenarioName = params['ScenarioName']
          @PayMode = params['PayMode']
          @Usage = params['Usage']
        end
      end

      # 包含labelName 和labelValue
      class Label < TencentCloud::Common::AbstractModel
        # @param LabelName: 标签名
        # @type LabelName: String
        # @param LabelValue: 标签值
        # @type LabelValue: String

        attr_accessor :LabelName, :LabelValue

        def initialize(labelname=nil, labelvalue=nil)
          @LabelName = labelname
          @LabelValue = labelvalue
        end

        def deserialize(params)
          @LabelName = params['LabelName']
          @LabelValue = params['LabelValue']
        end
      end

      # 标签及对应的值
      class LabelWithValues < TencentCloud::Common::AbstractModel
        # @param LabelName: 标签名称
        # @type LabelName: String
        # @param LabelValues: 标签值
        # @type LabelValues: Array

        attr_accessor :LabelName, :LabelValues

        def initialize(labelname=nil, labelvalues=nil)
          @LabelName = labelname
          @LabelValues = labelvalues
        end

        def deserialize(params)
          @LabelName = params['LabelName']
          @LabelValues = params['LabelValues']
        end
      end

      # 施压配置
      class Load < TencentCloud::Common::AbstractModel
        # @param LoadSpec: 施压配置
        # @type LoadSpec: :class:`Tencentcloud::Pts.v20210728.models.LoadSpec`
        # @param VpcLoadDistribution: 压力来源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VpcLoadDistribution: :class:`Tencentcloud::Pts.v20210728.models.VpcLoadDistribution`
        # @param GeoRegionsLoadDistribution: 多地域压力分布
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GeoRegionsLoadDistribution: Array

        attr_accessor :LoadSpec, :VpcLoadDistribution, :GeoRegionsLoadDistribution

        def initialize(loadspec=nil, vpcloaddistribution=nil, georegionsloaddistribution=nil)
          @LoadSpec = loadspec
          @VpcLoadDistribution = vpcloaddistribution
          @GeoRegionsLoadDistribution = georegionsloaddistribution
        end

        def deserialize(params)
          unless params['LoadSpec'].nil?
            @LoadSpec = LoadSpec.new
            @LoadSpec.deserialize(params['LoadSpec'])
          end
          unless params['VpcLoadDistribution'].nil?
            @VpcLoadDistribution = VpcLoadDistribution.new
            @VpcLoadDistribution.deserialize(params['VpcLoadDistribution'])
          end
          unless params['GeoRegionsLoadDistribution'].nil?
            @GeoRegionsLoadDistribution = []
            params['GeoRegionsLoadDistribution'].each do |i|
              georegionsloaditem_tmp = GeoRegionsLoadItem.new
              georegionsloaditem_tmp.deserialize(i)
              @GeoRegionsLoadDistribution << georegionsloaditem_tmp
            end
          end
        end
      end

      # 发压host来源
      class LoadSource < TencentCloud::Common::AbstractModel
        # @param IP: 发压host的IP
        # @type IP: String
        # @param PodName: 发压host所在的pod
        # @type PodName: String
        # @param Region: 所属地域
        # @type Region: String

        attr_accessor :IP, :PodName, :Region

        def initialize(ip=nil, podname=nil, region=nil)
          @IP = ip
          @PodName = podname
          @Region = region
        end

        def deserialize(params)
          @IP = params['IP']
          @PodName = params['PodName']
          @Region = params['Region']
        end
      end

      # 施压配置
      class LoadSpec < TencentCloud::Common::AbstractModel
        # @param Concurrency: 并发施压模式的配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Concurrency: :class:`Tencentcloud::Pts.v20210728.models.Concurrency`
        # @param RequestsPerSecond: RPS施压模式的配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RequestsPerSecond: :class:`Tencentcloud::Pts.v20210728.models.RequestsPerSecond`
        # @param ScriptOrigin: 脚本内置压力模式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScriptOrigin: :class:`Tencentcloud::Pts.v20210728.models.ScriptOrigin`

        attr_accessor :Concurrency, :RequestsPerSecond, :ScriptOrigin

        def initialize(concurrency=nil, requestspersecond=nil, scriptorigin=nil)
          @Concurrency = concurrency
          @RequestsPerSecond = requestspersecond
          @ScriptOrigin = scriptorigin
        end

        def deserialize(params)
          unless params['Concurrency'].nil?
            @Concurrency = Concurrency.new
            @Concurrency.deserialize(params['Concurrency'])
          end
          unless params['RequestsPerSecond'].nil?
            @RequestsPerSecond = RequestsPerSecond.new
            @RequestsPerSecond.deserialize(params['RequestsPerSecond'])
          end
          unless params['ScriptOrigin'].nil?
            @ScriptOrigin = ScriptOrigin.new
            @ScriptOrigin.deserialize(params['ScriptOrigin'])
          end
        end
      end

      # 指标结构
      class MetricInfo < TencentCloud::Common::AbstractModel
        # @param Metric: 后台指标
        # @type Metric: String
        # @param Alias: 前台展示指标名称
        # @type Alias: String
        # @param Description: 指标描述
        # @type Description: String
        # @param MetricType: 指标类型
        # @type MetricType: String
        # @param Unit: 默认指标单位
        # @type Unit: String
        # @param Aggregations: 指标支持的聚合函数
        # @type Aggregations: Array
        # @param InnerMetric: 是否内部指标,内部指标不可在前台提供用户自由选择
        # @type InnerMetric: Boolean

        attr_accessor :Metric, :Alias, :Description, :MetricType, :Unit, :Aggregations, :InnerMetric

        def initialize(metric=nil, _alias=nil, description=nil, metrictype=nil, unit=nil, aggregations=nil, innermetric=nil)
          @Metric = metric
          @Alias = _alias
          @Description = description
          @MetricType = metrictype
          @Unit = unit
          @Aggregations = aggregations
          @InnerMetric = innermetric
        end

        def deserialize(params)
          @Metric = params['Metric']
          @Alias = params['Alias']
          @Description = params['Description']
          @MetricType = params['MetricType']
          @Unit = params['Unit']
          unless params['Aggregations'].nil?
            @Aggregations = []
            params['Aggregations'].each do |i|
              aggregationlegend_tmp = AggregationLegend.new
              aggregationlegend_tmp.deserialize(i)
              @Aggregations << aggregationlegend_tmp
            end
          end
          @InnerMetric = params['InnerMetric']
        end
      end

      # PTS提供的指标名,指标对应的labels及values
      class MetricLabelWithValues < TencentCloud::Common::AbstractModel
        # @param MetricName: metric 名字
        # @type MetricName: String
        # @param LabelValuesSet: label及values 数组
        # @type LabelValuesSet: Array

        attr_accessor :MetricName, :LabelValuesSet

        def initialize(metricname=nil, labelvaluesset=nil)
          @MetricName = metricname
          @LabelValuesSet = labelvaluesset
        end

        def deserialize(params)
          @MetricName = params['MetricName']
          unless params['LabelValuesSet'].nil?
            @LabelValuesSet = []
            params['LabelValuesSet'].each do |i|
              labelwithvalues_tmp = LabelWithValues.new
              labelwithvalues_tmp.deserialize(i)
              @LabelValuesSet << labelwithvalues_tmp
            end
          end
        end
      end

      # 通用日志
      class NormalLog < TencentCloud::Common::AbstractModel
        # @param Timestamp: 毫秒时间戳
        # @type Timestamp: String
        # @param SeverityText: 日志级别
        # @type SeverityText: String
        # @param Body: 日志输出内容
        # @type Body: String

        attr_accessor :Timestamp, :SeverityText, :Body

        def initialize(timestamp=nil, severitytext=nil, body=nil)
          @Timestamp = timestamp
          @SeverityText = severitytext
          @Body = body
        end

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

      # 测试启动前后的消息通知
      class Notification < TencentCloud::Common::AbstractModel
        # @param Events: 发生事件
        # @type Events: Array
        # @param URL: webhook的网址
        # @type URL: String

        attr_accessor :Events, :URL

        def initialize(events=nil, url=nil)
          @Events = events
          @URL = url
        end

        def deserialize(params)
          @Events = params['Events']
          @URL = params['URL']
        end
      end

      # 事件通知回调
      class NotificationHook < TencentCloud::Common::AbstractModel
        # @param Events: 通知事件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Events: Array
        # @param URL: 回调 URL
        # @type URL: String

        attr_accessor :Events, :URL

        def initialize(events=nil, url=nil)
          @Events = events
          @URL = url
        end

        def deserialize(params)
          @Events = params['Events']
          @URL = params['URL']
        end
      end

      # 项目
      class Project < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param Name: 项目名
        # @type Name: String
        # @param Description: 项目描述
        # @type Description: String
        # @param Tags: 标签数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param Status: 项目状态
        # @type Status: Integer
        # @param CreatedAt: 创建时间
        # @type CreatedAt: String
        # @param UpdatedAt: 修改时间
        # @type UpdatedAt: String
        # @param AppId: App ID
        # @type AppId: Integer
        # @param Uin: 用户ID
        # @type Uin: String
        # @param SubAccountUin: 子用户ID
        # @type SubAccountUin: String

        attr_accessor :ProjectId, :Name, :Description, :Tags, :Status, :CreatedAt, :UpdatedAt, :AppId, :Uin, :SubAccountUin

        def initialize(projectid=nil, name=nil, description=nil, tags=nil, status=nil, createdat=nil, updatedat=nil, appid=nil, uin=nil, subaccountuin=nil)
          @ProjectId = projectid
          @Name = name
          @Description = description
          @Tags = tags
          @Status = status
          @CreatedAt = createdat
          @UpdatedAt = updatedat
          @AppId = appid
          @Uin = uin
          @SubAccountUin = subaccountuin
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @Name = params['Name']
          @Description = params['Description']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tagspec_tmp = TagSpec.new
              tagspec_tmp.deserialize(i)
              @Tags << tagspec_tmp
            end
          end
          @Status = params['Status']
          @CreatedAt = params['CreatedAt']
          @UpdatedAt = params['UpdatedAt']
          @AppId = params['AppId']
          @Uin = params['Uin']
          @SubAccountUin = params['SubAccountUin']
        end
      end

      # 协议文件详情
      class ProtocolInfo < TencentCloud::Common::AbstractModel
        # @param Name: 协议详情
        # @type Name: String
        # @param Size: 文件大小
        # @type Size: Integer
        # @param Type: 文件类型
        # @type Type: String
        # @param UpdatedAt: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedAt: String
        # @param FileId: 文件 ID
        # @type FileId: String

        attr_accessor :Name, :Size, :Type, :UpdatedAt, :FileId

        def initialize(name=nil, size=nil, type=nil, updatedat=nil, fileid=nil)
          @Name = name
          @Size = size
          @Type = type
          @UpdatedAt = updatedat
          @FileId = fileid
        end

        def deserialize(params)
          @Name = params['Name']
          @Size = params['Size']
          @Type = params['Type']
          @UpdatedAt = params['UpdatedAt']
          @FileId = params['FileId']
        end
      end

      # 采用日志响应时间RT范围
      class ReactionTimeRange < TencentCloud::Common::AbstractModel
        # @param Min: 最小响应时间,单位ms
        # @type Min: String
        # @param Max: 最大响应时间,单位ms
        # @type Max: String

        attr_accessor :Min, :Max

        def initialize(min=nil, max=nil)
          @Min = min
          @Max = max
        end

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

      # 地域
      class RegionDetail < TencentCloud::Common::AbstractModel
        # @param Region: 地域代码
        # @type Region: String
        # @param RegionId: 地域ID
        # @type RegionId: Integer
        # @param Area: 地域所在的地区
        # @type Area: String
        # @param RegionName: 地域名称
        # @type RegionName: String
        # @param RegionState: 地域状态
        # @type RegionState: Integer
        # @param RegionShortName: 地域简称
        # @type RegionShortName: String
        # @param CreatedAt: 创建时间
        # @type CreatedAt: String
        # @param UpdatedAt: 更新时间
        # @type UpdatedAt: String

        attr_accessor :Region, :RegionId, :Area, :RegionName, :RegionState, :RegionShortName, :CreatedAt, :UpdatedAt

        def initialize(region=nil, regionid=nil, area=nil, regionname=nil, regionstate=nil, regionshortname=nil, createdat=nil, updatedat=nil)
          @Region = region
          @RegionId = regionid
          @Area = area
          @RegionName = regionname
          @RegionState = regionstate
          @RegionShortName = regionshortname
          @CreatedAt = createdat
          @UpdatedAt = updatedat
        end

        def deserialize(params)
          @Region = params['Region']
          @RegionId = params['RegionId']
          @Area = params['Area']
          @RegionName = params['RegionName']
          @RegionState = params['RegionState']
          @RegionShortName = params['RegionShortName']
          @CreatedAt = params['CreatedAt']
          @UpdatedAt = params['UpdatedAt']
        end
      end

      # 压测请求明细
      class RequestSummary < TencentCloud::Common::AbstractModel
        # @param Service: 请求URL
        # @type Service: String
        # @param Method: 请求方法
        # @type Method: String
        # @param Count: 请求次数
        # @type Count: Integer
        # @param Average: 请求响应平均耗时,单位秒
        # @type Average: Float
        # @param P90: 请求p90耗时,单位秒
        # @type P90: Float
        # @param P95: 请求p95耗时,单位秒
        # @type P95: Float
        # @param Min: 请求最小耗时,单位秒
        # @type Min: Float
        # @param Max: 请求最大耗时,单位秒
        # @type Max: Float
        # @param ErrorPercentage: 请求错误率
        # @type ErrorPercentage: Float
        # @param P99: 请求p99耗时,单位秒
        # @type P99: Float
        # @param Status: 响应状态码
        # @type Status: String
        # @param Result: 响应详情
        # @type Result: String
        # @param RPS: 平均rps, 单位req/s
        # @type RPS: Float

        attr_accessor :Service, :Method, :Count, :Average, :P90, :P95, :Min, :Max, :ErrorPercentage, :P99, :Status, :Result, :RPS

        def initialize(service=nil, method=nil, count=nil, average=nil, p90=nil, p95=nil, min=nil, max=nil, errorpercentage=nil, p99=nil, status=nil, result=nil, rps=nil)
          @Service = service
          @Method = method
          @Count = count
          @Average = average
          @P90 = p90
          @P95 = p95
          @Min = min
          @Max = max
          @ErrorPercentage = errorpercentage
          @P99 = p99
          @Status = status
          @Result = result
          @RPS = rps
        end

        def deserialize(params)
          @Service = params['Service']
          @Method = params['Method']
          @Count = params['Count']
          @Average = params['Average']
          @P90 = params['P90']
          @P95 = params['P95']
          @Min = params['Min']
          @Max = params['Max']
          @ErrorPercentage = params['ErrorPercentage']
          @P99 = params['P99']
          @Status = params['Status']
          @Result = params['Result']
          @RPS = params['RPS']
        end
      end

      # RPS模式的施压配置
      class RequestsPerSecond < TencentCloud::Common::AbstractModel
        # @param MaxRequestsPerSecond: 最大RPS
        # @type MaxRequestsPerSecond: Integer
        # @param DurationSeconds: 施压时间
        # @type DurationSeconds: Integer
        # @param TargetVirtualUsers: deprecated
        # @type TargetVirtualUsers: Integer
        # @param Resources: 资源数
        # @type Resources: Integer
        # @param StartRequestsPerSecond: 起始RPS
        # @type StartRequestsPerSecond: Integer
        # @param TargetRequestsPerSecond: 目标RPS,入参无效
        # @type TargetRequestsPerSecond: Integer
        # @param GracefulStopSeconds: 优雅关停的等待时间
        # @type GracefulStopSeconds: Integer

        attr_accessor :MaxRequestsPerSecond, :DurationSeconds, :TargetVirtualUsers, :Resources, :StartRequestsPerSecond, :TargetRequestsPerSecond, :GracefulStopSeconds

        def initialize(maxrequestspersecond=nil, durationseconds=nil, targetvirtualusers=nil, resources=nil, startrequestspersecond=nil, targetrequestspersecond=nil, gracefulstopseconds=nil)
          @MaxRequestsPerSecond = maxrequestspersecond
          @DurationSeconds = durationseconds
          @TargetVirtualUsers = targetvirtualusers
          @Resources = resources
          @StartRequestsPerSecond = startrequestspersecond
          @TargetRequestsPerSecond = targetrequestspersecond
          @GracefulStopSeconds = gracefulstopseconds
        end

        def deserialize(params)
          @MaxRequestsPerSecond = params['MaxRequestsPerSecond']
          @DurationSeconds = params['DurationSeconds']
          @TargetVirtualUsers = params['TargetVirtualUsers']
          @Resources = params['Resources']
          @StartRequestsPerSecond = params['StartRequestsPerSecond']
          @TargetRequestsPerSecond = params['TargetRequestsPerSecond']
          @GracefulStopSeconds = params['GracefulStopSeconds']
        end
      end

      # RestartCronJobs请求参数结构体
      class RestartCronJobsRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param CronJobIds: 定时任务ID数组
        # @type CronJobIds: Array

        attr_accessor :ProjectId, :CronJobIds

        def initialize(projectid=nil, cronjobids=nil)
          @ProjectId = projectid
          @CronJobIds = cronjobids
        end

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

      # RestartCronJobs返回参数结构体
      class RestartCronJobsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # SLA 标签
      class SLALabel < TencentCloud::Common::AbstractModel
        # @param LabelName: 标签名
        # @type LabelName: String
        # @param LabelValue: 标签值
        # @type LabelValue: String

        attr_accessor :LabelName, :LabelValue

        def initialize(labelname=nil, labelvalue=nil)
          @LabelName = labelname
          @LabelValue = labelvalue
        end

        def deserialize(params)
          @LabelName = params['LabelName']
          @LabelValue = params['LabelValue']
        end
      end

      # SLA 策略
      class SLAPolicy < TencentCloud::Common::AbstractModel
        # @param SLARules: SLA 规则
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SLARules: Array
        # @param AlertChannel: 告警通知渠道
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlertChannel: :class:`Tencentcloud::Pts.v20210728.models.AlertChannel`

        attr_accessor :SLARules, :AlertChannel

        def initialize(slarules=nil, alertchannel=nil)
          @SLARules = slarules
          @AlertChannel = alertchannel
        end

        def deserialize(params)
          unless params['SLARules'].nil?
            @SLARules = []
            params['SLARules'].each do |i|
              slarule_tmp = SLARule.new
              slarule_tmp.deserialize(i)
              @SLARules << slarule_tmp
            end
          end
          unless params['AlertChannel'].nil?
            @AlertChannel = AlertChannel.new
            @AlertChannel.deserialize(params['AlertChannel'])
          end
        end
      end

      # SLA 规则
      class SLARule < TencentCloud::Common::AbstractModel
        # @param Metric: 压测指标
        # @type Metric: String
        # @param Aggregation: 压测指标聚合方法
        # @type Aggregation: String
        # @param Condition: 压测指标条件判断符号
        # @type Condition: String
        # @param Value: 阈值
        # @type Value: Float
        # @param LabelFilter: 标签
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LabelFilter: Array
        # @param AbortFlag: 是否停止压测任务
        # @type AbortFlag: Boolean
        # @param For: 持续时长
        # @type For: String

        attr_accessor :Metric, :Aggregation, :Condition, :Value, :LabelFilter, :AbortFlag, :For

        def initialize(metric=nil, aggregation=nil, condition=nil, value=nil, labelfilter=nil, abortflag=nil, _for=nil)
          @Metric = metric
          @Aggregation = aggregation
          @Condition = condition
          @Value = value
          @LabelFilter = labelfilter
          @AbortFlag = abortflag
          @For = _for
        end

        def deserialize(params)
          @Metric = params['Metric']
          @Aggregation = params['Aggregation']
          @Condition = params['Condition']
          @Value = params['Value']
          unless params['LabelFilter'].nil?
            @LabelFilter = []
            params['LabelFilter'].each do |i|
              slalabel_tmp = SLALabel.new
              slalabel_tmp.deserialize(i)
              @LabelFilter << slalabel_tmp
            end
          end
          @AbortFlag = params['AbortFlag']
          @For = params['For']
        end
      end

      # 采样日志
      class SampleLog < TencentCloud::Common::AbstractModel
        # @param Timestamp: 日志毫秒时间戳
        # @type Timestamp: String
        # @param Attributes: 采样日志属性
        # @type Attributes: :class:`Tencentcloud::Pts.v20210728.models.Attributes`
        # @param Body: har格式的采样请求
        # @type Body: String

        attr_accessor :Timestamp, :Attributes, :Body

        def initialize(timestamp=nil, attributes=nil, body=nil)
          @Timestamp = timestamp
          @Attributes = attributes
          @Body = body
        end

        def deserialize(params)
          @Timestamp = params['Timestamp']
          unless params['Attributes'].nil?
            @Attributes = Attributes.new
            @Attributes.deserialize(params['Attributes'])
          end
          @Body = params['Body']
        end
      end

      # sample采样值
      class SamplePair < TencentCloud::Common::AbstractModel
        # @param Timestamp: is the number of milliseconds since the epoch (1970-01-01 00:00 UTC) excluding leap seconds.
        # @type Timestamp: Integer
        # @param Value: is a representation of a value for a given sample at a given time.
        # @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 SampleStream < TencentCloud::Common::AbstractModel
        # @param Labels: labels描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Labels: Array
        # @param Values: 指标采样数组
        # @type Values: Array
        # @param Name: 指标序列名字
        # @type Name: String

        attr_accessor :Labels, :Values, :Name

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

        def deserialize(params)
          unless params['Labels'].nil?
            @Labels = []
            params['Labels'].each do |i|
              label_tmp = Label.new
              label_tmp.deserialize(i)
              @Labels << label_tmp
            end
          end
          unless params['Values'].nil?
            @Values = []
            params['Values'].each do |i|
              samplepair_tmp = SamplePair.new
              samplepair_tmp.deserialize(i)
              @Values << samplepair_tmp
            end
          end
          @Name = params['Name']
        end
      end

      # 场景列表
      class Scenario < TencentCloud::Common::AbstractModel
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param Name: 场景名
        # @type Name: String
        # @param Description: 场景描述
        # @type Description: String
        # @param Type: 场景类型,如pts-http, pts-js, pts-trpc, pts-jmeter
        # @type Type: String
        # @param Status: 场景状态
        # @type Status: Integer
        # @param Load: 施压配置
        # @type Load: :class:`Tencentcloud::Pts.v20210728.models.Load`
        # @param EncodedScripts: deprecated
        # @type EncodedScripts: String
        # @param Configs: deprecated
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Configs: Array
        # @param Extensions: deprecated
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Extensions: Array
        # @param Datasets: 测试数据集
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Datasets: Array
        # @param SLAId: SLA规则的ID
        # @type SLAId: String
        # @param CronId: Cron Job规则的ID
        # @type CronId: String
        # @param CreatedAt: 场景创建时间
        # @type CreatedAt: String
        # @param UpdatedAt: 场景修改时间
        # @type UpdatedAt: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param AppId: App ID
        # @type AppId: Integer
        # @param Uin: 用户ID
        # @type Uin: String
        # @param SubAccountUin: 子用户ID
        # @type SubAccountUin: String
        # @param TestScripts: 测试脚本信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TestScripts: Array
        # @param Protocols: 协议文件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Protocols: Array
        # @param RequestFiles: 请求文件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RequestFiles: Array
        # @param SLAPolicy: SLA 策略
        # @type SLAPolicy: :class:`Tencentcloud::Pts.v20210728.models.SLAPolicy`
        # @param Plugins: 扩展包信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Plugins: Array
        # @param DomainNameConfig: 域名解析配置
        # @type DomainNameConfig: :class:`Tencentcloud::Pts.v20210728.models.DomainNameConfig`
        # @param NotificationHooks: 通知事件回调
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NotificationHooks: Array
        # @param Owner: 创建人员
        # @type Owner: String
        # @param ProjectName: 场景所在的项目的名字
        # @type ProjectName: String

        attr_accessor :ScenarioId, :Name, :Description, :Type, :Status, :Load, :EncodedScripts, :Configs, :Extensions, :Datasets, :SLAId, :CronId, :CreatedAt, :UpdatedAt, :ProjectId, :AppId, :Uin, :SubAccountUin, :TestScripts, :Protocols, :RequestFiles, :SLAPolicy, :Plugins, :DomainNameConfig, :NotificationHooks, :Owner, :ProjectName

        def initialize(scenarioid=nil, name=nil, description=nil, type=nil, status=nil, load=nil, encodedscripts=nil, configs=nil, extensions=nil, datasets=nil, slaid=nil, cronid=nil, createdat=nil, updatedat=nil, projectid=nil, appid=nil, uin=nil, subaccountuin=nil, testscripts=nil, protocols=nil, requestfiles=nil, slapolicy=nil, plugins=nil, domainnameconfig=nil, notificationhooks=nil, owner=nil, projectname=nil)
          @ScenarioId = scenarioid
          @Name = name
          @Description = description
          @Type = type
          @Status = status
          @Load = load
          @EncodedScripts = encodedscripts
          @Configs = configs
          @Extensions = extensions
          @Datasets = datasets
          @SLAId = slaid
          @CronId = cronid
          @CreatedAt = createdat
          @UpdatedAt = updatedat
          @ProjectId = projectid
          @AppId = appid
          @Uin = uin
          @SubAccountUin = subaccountuin
          @TestScripts = testscripts
          @Protocols = protocols
          @RequestFiles = requestfiles
          @SLAPolicy = slapolicy
          @Plugins = plugins
          @DomainNameConfig = domainnameconfig
          @NotificationHooks = notificationhooks
          @Owner = owner
          @ProjectName = projectname
        end

        def deserialize(params)
          @ScenarioId = params['ScenarioId']
          @Name = params['Name']
          @Description = params['Description']
          @Type = params['Type']
          @Status = params['Status']
          unless params['Load'].nil?
            @Load = Load.new
            @Load.deserialize(params['Load'])
          end
          @EncodedScripts = params['EncodedScripts']
          @Configs = params['Configs']
          @Extensions = params['Extensions']
          unless params['Datasets'].nil?
            @Datasets = []
            params['Datasets'].each do |i|
              testdata_tmp = TestData.new
              testdata_tmp.deserialize(i)
              @Datasets << testdata_tmp
            end
          end
          @SLAId = params['SLAId']
          @CronId = params['CronId']
          @CreatedAt = params['CreatedAt']
          @UpdatedAt = params['UpdatedAt']
          @ProjectId = params['ProjectId']
          @AppId = params['AppId']
          @Uin = params['Uin']
          @SubAccountUin = params['SubAccountUin']
          unless params['TestScripts'].nil?
            @TestScripts = []
            params['TestScripts'].each do |i|
              scriptinfo_tmp = ScriptInfo.new
              scriptinfo_tmp.deserialize(i)
              @TestScripts << scriptinfo_tmp
            end
          end
          unless params['Protocols'].nil?
            @Protocols = []
            params['Protocols'].each do |i|
              protocolinfo_tmp = ProtocolInfo.new
              protocolinfo_tmp.deserialize(i)
              @Protocols << protocolinfo_tmp
            end
          end
          unless params['RequestFiles'].nil?
            @RequestFiles = []
            params['RequestFiles'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @RequestFiles << fileinfo_tmp
            end
          end
          unless params['SLAPolicy'].nil?
            @SLAPolicy = SLAPolicy.new
            @SLAPolicy.deserialize(params['SLAPolicy'])
          end
          unless params['Plugins'].nil?
            @Plugins = []
            params['Plugins'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @Plugins << fileinfo_tmp
            end
          end
          unless params['DomainNameConfig'].nil?
            @DomainNameConfig = DomainNameConfig.new
            @DomainNameConfig.deserialize(params['DomainNameConfig'])
          end
          unless params['NotificationHooks'].nil?
            @NotificationHooks = []
            params['NotificationHooks'].each do |i|
              notificationhook_tmp = NotificationHook.new
              notificationhook_tmp.deserialize(i)
              @NotificationHooks << notificationhook_tmp
            end
          end
          @Owner = params['Owner']
          @ProjectName = params['ProjectName']
        end
      end

      # 查询与特定scenario关联的job的参数
      class ScenarioRelatedJobsParams < TencentCloud::Common::AbstractModel
        # @param Offset: job偏移量
        # @type Offset: Integer
        # @param Limit: 限制最多查询的job数
        # @type Limit: Integer
        # @param OrderBy: 排序字段
        # @type OrderBy: String
        # @param Ascend: 是否升序
        # @type Ascend: Boolean

        attr_accessor :Offset, :Limit, :OrderBy, :Ascend

        def initialize(offset=nil, limit=nil, orderby=nil, ascend=nil)
          @Offset = offset
          @Limit = limit
          @OrderBy = orderby
          @Ascend = ascend
        end

        def deserialize(params)
          @Offset = params['Offset']
          @Limit = params['Limit']
          @OrderBy = params['OrderBy']
          @Ascend = params['Ascend']
        end
      end

      # 带已执行任务的scenario
      class ScenarioWithJobs < TencentCloud::Common::AbstractModel
        # @param Scenario: scecario结果
        # @type Scenario: :class:`Tencentcloud::Pts.v20210728.models.Scenario`
        # @param Jobs: job结果
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Jobs: Array

        attr_accessor :Scenario, :Jobs

        def initialize(scenario=nil, jobs=nil)
          @Scenario = scenario
          @Jobs = jobs
        end

        def deserialize(params)
          unless params['Scenario'].nil?
            @Scenario = Scenario.new
            @Scenario.deserialize(params['Scenario'])
          end
          unless params['Jobs'].nil?
            @Jobs = []
            params['Jobs'].each do |i|
              job_tmp = Job.new
              job_tmp.deserialize(i)
              @Jobs << job_tmp
            end
          end
        end
      end

      # 脚本信息
      class ScriptInfo < TencentCloud::Common::AbstractModel
        # @param Name: 文件名
        # @type Name: String
        # @param Size: 文件大小
        # @type Size: Integer
        # @param Type: 文件类型
        # @type Type: String
        # @param UpdatedAt: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedAt: String
        # @param EncodedContent: base64编码后的文件内容
        # @type EncodedContent: String
        # @param EncodedHttpArchive: base64编码后的har结构体
        # @type EncodedHttpArchive: String
        # @param LoadWeight: 脚本权重,范围 1-100
        # @type LoadWeight: Integer
        # @param FileId: 文件 ID
        # @type FileId: String

        attr_accessor :Name, :Size, :Type, :UpdatedAt, :EncodedContent, :EncodedHttpArchive, :LoadWeight, :FileId

        def initialize(name=nil, size=nil, type=nil, updatedat=nil, encodedcontent=nil, encodedhttparchive=nil, loadweight=nil, fileid=nil)
          @Name = name
          @Size = size
          @Type = type
          @UpdatedAt = updatedat
          @EncodedContent = encodedcontent
          @EncodedHttpArchive = encodedhttparchive
          @LoadWeight = loadweight
          @FileId = fileid
        end

        def deserialize(params)
          @Name = params['Name']
          @Size = params['Size']
          @Type = params['Type']
          @UpdatedAt = params['UpdatedAt']
          @EncodedContent = params['EncodedContent']
          @EncodedHttpArchive = params['EncodedHttpArchive']
          @LoadWeight = params['LoadWeight']
          @FileId = params['FileId']
        end
      end

      # 脚本内置压力模型
      class ScriptOrigin < TencentCloud::Common::AbstractModel
        # @param MachineNumber: 机器数量
        # @type MachineNumber: Integer
        # @param MachineSpecification: 机器规格
        # @type MachineSpecification: String
        # @param DurationSeconds: 压测时长
        # @type DurationSeconds: Integer

        attr_accessor :MachineNumber, :MachineSpecification, :DurationSeconds

        def initialize(machinenumber=nil, machinespecification=nil, durationseconds=nil)
          @MachineNumber = machinenumber
          @MachineSpecification = machinespecification
          @DurationSeconds = durationseconds
        end

        def deserialize(params)
          @MachineNumber = params['MachineNumber']
          @MachineSpecification = params['MachineSpecification']
          @DurationSeconds = params['DurationSeconds']
        end
      end

      # 分阶段施压时,对单个阶段的配置
      class Stage < TencentCloud::Common::AbstractModel
        # @param DurationSeconds: 施压时间
        # @type DurationSeconds: Integer
        # @param TargetVirtualUsers: 虚拟用户数
        # @type TargetVirtualUsers: Integer

        attr_accessor :DurationSeconds, :TargetVirtualUsers

        def initialize(durationseconds=nil, targetvirtualusers=nil)
          @DurationSeconds = durationseconds
          @TargetVirtualUsers = targetvirtualusers
        end

        def deserialize(params)
          @DurationSeconds = params['DurationSeconds']
          @TargetVirtualUsers = params['TargetVirtualUsers']
        end
      end

      # StartJob请求参数结构体
      class StartJobRequest < TencentCloud::Common::AbstractModel
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param JobOwner: 任务发起人
        # @type JobOwner: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param Debug: 是否调试
        # @type Debug: Boolean
        # @param Note: 备注
        # @type Note: String

        attr_accessor :ScenarioId, :JobOwner, :ProjectId, :Debug, :Note

        def initialize(scenarioid=nil, jobowner=nil, projectid=nil, debug=nil, note=nil)
          @ScenarioId = scenarioid
          @JobOwner = jobowner
          @ProjectId = projectid
          @Debug = debug
          @Note = note
        end

        def deserialize(params)
          @ScenarioId = params['ScenarioId']
          @JobOwner = params['JobOwner']
          @ProjectId = params['ProjectId']
          @Debug = params['Debug']
          @Note = params['Note']
        end
      end

      # StartJob返回参数结构体
      class StartJobResponse < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :JobId, :RequestId

        def initialize(jobid=nil, requestid=nil)
          @JobId = jobid
          @RequestId = requestid
        end

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

      # 标签
      class TagSpec < TencentCloud::Common::AbstractModel
        # @param TagKey: 标签键
        # @type TagKey: String
        # @param TagValue: 标签值
        # @type TagValue: String

        attr_accessor :TagKey, :TagValue

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

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

      # 测试数据集
      class TestData < TencentCloud::Common::AbstractModel
        # @param Name: 测试数据集所在的文件名
        # @type Name: String
        # @param Split: 测试数据集是否分片
        # @type Split: Boolean
        # @param HeaderInFile: 首行是否为参数名
        # @type HeaderInFile: Boolean
        # @param HeaderColumns: 参数名数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HeaderColumns: Array
        # @param LineCount: 文件行数
        # @type LineCount: Integer
        # @param UpdatedAt: 更新时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UpdatedAt: String
        # @param Size: 文件字节数
        # @type Size: Integer
        # @param HeadLines: 头部数据行
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HeadLines: Array
        # @param TailLines: 尾部数据行
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TailLines: Array
        # @param Type: 文件类型
        # @type Type: String
        # @param FileId: 文件 ID
        # @type FileId: String

        attr_accessor :Name, :Split, :HeaderInFile, :HeaderColumns, :LineCount, :UpdatedAt, :Size, :HeadLines, :TailLines, :Type, :FileId

        def initialize(name=nil, split=nil, headerinfile=nil, headercolumns=nil, linecount=nil, updatedat=nil, size=nil, headlines=nil, taillines=nil, type=nil, fileid=nil)
          @Name = name
          @Split = split
          @HeaderInFile = headerinfile
          @HeaderColumns = headercolumns
          @LineCount = linecount
          @UpdatedAt = updatedat
          @Size = size
          @HeadLines = headlines
          @TailLines = taillines
          @Type = type
          @FileId = fileid
        end

        def deserialize(params)
          @Name = params['Name']
          @Split = params['Split']
          @HeaderInFile = params['HeaderInFile']
          @HeaderColumns = params['HeaderColumns']
          @LineCount = params['LineCount']
          @UpdatedAt = params['UpdatedAt']
          @Size = params['Size']
          @HeadLines = params['HeadLines']
          @TailLines = params['TailLines']
          @Type = params['Type']
          @FileId = params['FileId']
        end
      end

      # UpdateCronJob请求参数结构体
      class UpdateCronJobRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param CronJobId: 定时任务ID
        # @type CronJobId: String
        # @param Note: 备注
        # @type Note: String
        # @param CronExpression: cron表达式
        # @type CronExpression: String
        # @param FrequencyType: 执行频率类型,1:只执行一次; 2:日粒度; 3:周粒度; 4:高级
        # @type FrequencyType: Integer
        # @param Name: 定时任务名字
        # @type Name: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param ScenarioName: 场景名称
        # @type ScenarioName: String
        # @param JobOwner: 任务发起人
        # @type JobOwner: String
        # @param EndTime: 结束时间
        # @type EndTime: String
        # @param NoticeId: Notice ID
        # @type NoticeId: String

        attr_accessor :ProjectId, :CronJobId, :Note, :CronExpression, :FrequencyType, :Name, :ScenarioId, :ScenarioName, :JobOwner, :EndTime, :NoticeId

        def initialize(projectid=nil, cronjobid=nil, note=nil, cronexpression=nil, frequencytype=nil, name=nil, scenarioid=nil, scenarioname=nil, jobowner=nil, endtime=nil, noticeid=nil)
          @ProjectId = projectid
          @CronJobId = cronjobid
          @Note = note
          @CronExpression = cronexpression
          @FrequencyType = frequencytype
          @Name = name
          @ScenarioId = scenarioid
          @ScenarioName = scenarioname
          @JobOwner = jobowner
          @EndTime = endtime
          @NoticeId = noticeid
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @CronJobId = params['CronJobId']
          @Note = params['Note']
          @CronExpression = params['CronExpression']
          @FrequencyType = params['FrequencyType']
          @Name = params['Name']
          @ScenarioId = params['ScenarioId']
          @ScenarioName = params['ScenarioName']
          @JobOwner = params['JobOwner']
          @EndTime = params['EndTime']
          @NoticeId = params['NoticeId']
        end
      end

      # UpdateCronJob返回参数结构体
      class UpdateCronJobResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # UpdateEnvironment请求参数结构体
      class UpdateEnvironmentRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # UpdateEnvironment返回参数结构体
      class UpdateEnvironmentResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # UpdateFileScenarioRelation请求参数结构体
      class UpdateFileScenarioRelationRequest < TencentCloud::Common::AbstractModel
        # @param FileId: 文件 ID。其值应为前序步骤上传该文件到 cos 桶后,文件在 cos 桶中的相应目录
        # @type FileId: String
        # @param ProjectId: 项目 ID
        # @type ProjectId: String
        # @param ScenarioIds: 场景 ID 数组
        # @type ScenarioIds: Array

        attr_accessor :FileId, :ProjectId, :ScenarioIds

        def initialize(fileid=nil, projectid=nil, scenarioids=nil)
          @FileId = fileid
          @ProjectId = projectid
          @ScenarioIds = scenarioids
        end

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

      # UpdateFileScenarioRelation返回参数结构体
      class UpdateFileScenarioRelationResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # UpdateJob请求参数结构体
      class UpdateJobRequest < TencentCloud::Common::AbstractModel
        # @param JobId: 任务ID
        # @type JobId: String
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param Note: 任务备注信息
        # @type Note: String

        attr_accessor :JobId, :ProjectId, :ScenarioId, :Note

        def initialize(jobid=nil, projectid=nil, scenarioid=nil, note=nil)
          @JobId = jobid
          @ProjectId = projectid
          @ScenarioId = scenarioid
          @Note = note
        end

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

      # UpdateJob返回参数结构体
      class UpdateJobResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # UpdateProject请求参数结构体
      class UpdateProjectRequest < TencentCloud::Common::AbstractModel
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param Name: 项目名
        # @type Name: String
        # @param Description: 项目描述
        # @type Description: String
        # @param Status: 项目状态,默认传递1
        # @type Status: Integer
        # @param Tags: 标签数组
        # @type Tags: Array

        attr_accessor :ProjectId, :Name, :Description, :Status, :Tags

        def initialize(projectid=nil, name=nil, description=nil, status=nil, tags=nil)
          @ProjectId = projectid
          @Name = name
          @Description = description
          @Status = status
          @Tags = tags
        end

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @Name = params['Name']
          @Description = params['Description']
          @Status = params['Status']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tagspec_tmp = TagSpec.new
              tagspec_tmp.deserialize(i)
              @Tags << tagspec_tmp
            end
          end
        end
      end

      # UpdateProject返回参数结构体
      class UpdateProjectResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # UpdateScenario请求参数结构体
      class UpdateScenarioRequest < TencentCloud::Common::AbstractModel
        # @param ScenarioId: 场景ID
        # @type ScenarioId: String
        # @param Name: 场景名;调用该接口时,请将 Scenario 中不需要修改的字段保持原样也作为接口的入参,否则场景可能会不可用。
        # @type Name: String
        # @param Description: 场景描述
        # @type Description: String
        # @param Type: 压测场景的模式类型。取值范围:pts-http 代表简单模式,pts-js 代表脚本模式,pts-jmeter 代表 JMeter 模式。
        # @type Type: String
        # @param Load: 施压配置
        # @type Load: :class:`Tencentcloud::Pts.v20210728.models.Load`
        # @param EncodedScripts: deprecated
        # @type EncodedScripts: String
        # @param Configs: deprecated
        # @type Configs: Array
        # @param Datasets: 测试数据集
        # @type Datasets: Array
        # @param Extensions: deprecated
        # @type Extensions: Array
        # @param SLAId: SLA规则ID
        # @type SLAId: String
        # @param CronId: cron job ID
        # @type CronId: String
        # @param Status: 场景状态(注:现已无需传递该参数)
        # @type Status: Integer
        # @param ProjectId: 项目ID
        # @type ProjectId: String
        # @param TestScripts: 测试脚本路径
        # @type TestScripts: Array
        # @param Protocols: 协议文件路径
        # @type Protocols: Array
        # @param RequestFiles: 请求文件路径
        # @type RequestFiles: Array
        # @param SLAPolicy: SLA 策略
        # @type SLAPolicy: :class:`Tencentcloud::Pts.v20210728.models.SLAPolicy`
        # @param Plugins: 拓展包文件路径
        # @type Plugins: Array
        # @param DomainNameConfig: 域名解析配置
        # @type DomainNameConfig: :class:`Tencentcloud::Pts.v20210728.models.DomainNameConfig`
        # @param NotificationHooks: WebHook请求配置
        # @type NotificationHooks: Array
        # @param Owner: 创建人名
        # @type Owner: String
        # @param EnvId: 环境ID
        # @type EnvId: String

        attr_accessor :ScenarioId, :Name, :Description, :Type, :Load, :EncodedScripts, :Configs, :Datasets, :Extensions, :SLAId, :CronId, :Status, :ProjectId, :TestScripts, :Protocols, :RequestFiles, :SLAPolicy, :Plugins, :DomainNameConfig, :NotificationHooks, :Owner, :EnvId

        def initialize(scenarioid=nil, name=nil, description=nil, type=nil, load=nil, encodedscripts=nil, configs=nil, datasets=nil, extensions=nil, slaid=nil, cronid=nil, status=nil, projectid=nil, testscripts=nil, protocols=nil, requestfiles=nil, slapolicy=nil, plugins=nil, domainnameconfig=nil, notificationhooks=nil, owner=nil, envid=nil)
          @ScenarioId = scenarioid
          @Name = name
          @Description = description
          @Type = type
          @Load = load
          @EncodedScripts = encodedscripts
          @Configs = configs
          @Datasets = datasets
          @Extensions = extensions
          @SLAId = slaid
          @CronId = cronid
          @Status = status
          @ProjectId = projectid
          @TestScripts = testscripts
          @Protocols = protocols
          @RequestFiles = requestfiles
          @SLAPolicy = slapolicy
          @Plugins = plugins
          @DomainNameConfig = domainnameconfig
          @NotificationHooks = notificationhooks
          @Owner = owner
          @EnvId = envid
        end

        def deserialize(params)
          @ScenarioId = params['ScenarioId']
          @Name = params['Name']
          @Description = params['Description']
          @Type = params['Type']
          unless params['Load'].nil?
            @Load = Load.new
            @Load.deserialize(params['Load'])
          end
          @EncodedScripts = params['EncodedScripts']
          @Configs = params['Configs']
          unless params['Datasets'].nil?
            @Datasets = []
            params['Datasets'].each do |i|
              testdata_tmp = TestData.new
              testdata_tmp.deserialize(i)
              @Datasets << testdata_tmp
            end
          end
          @Extensions = params['Extensions']
          @SLAId = params['SLAId']
          @CronId = params['CronId']
          @Status = params['Status']
          @ProjectId = params['ProjectId']
          unless params['TestScripts'].nil?
            @TestScripts = []
            params['TestScripts'].each do |i|
              scriptinfo_tmp = ScriptInfo.new
              scriptinfo_tmp.deserialize(i)
              @TestScripts << scriptinfo_tmp
            end
          end
          unless params['Protocols'].nil?
            @Protocols = []
            params['Protocols'].each do |i|
              protocolinfo_tmp = ProtocolInfo.new
              protocolinfo_tmp.deserialize(i)
              @Protocols << protocolinfo_tmp
            end
          end
          unless params['RequestFiles'].nil?
            @RequestFiles = []
            params['RequestFiles'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @RequestFiles << fileinfo_tmp
            end
          end
          unless params['SLAPolicy'].nil?
            @SLAPolicy = SLAPolicy.new
            @SLAPolicy.deserialize(params['SLAPolicy'])
          end
          unless params['Plugins'].nil?
            @Plugins = []
            params['Plugins'].each do |i|
              fileinfo_tmp = FileInfo.new
              fileinfo_tmp.deserialize(i)
              @Plugins << fileinfo_tmp
            end
          end
          unless params['DomainNameConfig'].nil?
            @DomainNameConfig = DomainNameConfig.new
            @DomainNameConfig.deserialize(params['DomainNameConfig'])
          end
          unless params['NotificationHooks'].nil?
            @NotificationHooks = []
            params['NotificationHooks'].each do |i|
              notification_tmp = Notification.new
              notification_tmp.deserialize(i)
              @NotificationHooks << notification_tmp
            end
          end
          @Owner = params['Owner']
          @EnvId = params['EnvId']
        end
      end

      # UpdateScenario返回参数结构体
      class UpdateScenarioResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

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

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

      # 压力来源配置
      class VpcLoadDistribution < TencentCloud::Common::AbstractModel
        # @param RegionId: 地域ID
        # @type RegionId: Integer
        # @param Region: 地域
        # @type Region: String
        # @param VpcId: VPC ID
        # @type VpcId: String
        # @param SubnetIds: 子网ID列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetIds: Array

        attr_accessor :RegionId, :Region, :VpcId, :SubnetIds

        def initialize(regionid=nil, region=nil, vpcid=nil, subnetids=nil)
          @RegionId = regionid
          @Region = region
          @VpcId = vpcid
          @SubnetIds = subnetids
        end

        def deserialize(params)
          @RegionId = params['RegionId']
          @Region = params['Region']
          @VpcId = params['VpcId']
          @SubnetIds = params['SubnetIds']
        end
      end

    end
  end
end