text: /*
   * Copyright (c) 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.
   */
  const AbstractModel = require("../../common/abstract_model");
  
  /**
   * PurgePathCache请求参数结构体
   * @class
   */
  class PurgePathCacheRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 要刷新的目录列表，必须包含协议头部。
           * @type {Array.<string> || null}
           */
          this.Paths = null;
  
          /**
           * 刷新类型，flush 代表刷新有更新的资源，delete 表示刷新全部资源。
           * @type {string || null}
           */
          this.FlushType = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Paths = 'Paths' in params ? params.Paths : null;
          this.FlushType = 'FlushType' in params ? params.FlushType : null;
  
      }
  }
  
  /**
   * 访问明细数据类型
   * @class
   */
  class CdnData extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 查询指定的指标名称：
  flux：流量，单位为 byte
  bandwidth：带宽，单位为 bps
  request：请求数，单位为 次
  fluxHitRate：流量命中率，单位为 %
  statusCode：状态码，返回 2XX、3XX、4XX、5XX 汇总数据，单位为 个
  2XX：返回 2XX 状态码汇总及各 2 开头状态码数据，单位为 个
  3XX：返回 3XX 状态码汇总及各 3 开头状态码数据，单位为 个
  4XX：返回 4XX 状态码汇总及各 4 开头状态码数据，单位为 个
  5XX：返回 5XX 状态码汇总及各 5 开头状态码数据，单位为 个
  或指定查询的某一具体状态码
           * @type {string || null}
           */
          this.Metric = null;
  
          /**
           * 明细数据组合
           * @type {Array.<TimestampData> || null}
           */
          this.DetailData = null;
  
          /**
           * 汇总数据组合
           * @type {SummarizedData || null}
           */
          this.SummarizedData = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Metric = 'Metric' in params ? params.Metric : null;
  
          if (params.DetailData) {
              this.DetailData = new Array();
              for (let z in params.DetailData) {
                  let obj = new TimestampData();
                  obj.deserialize(params.DetailData[z]);
                  this.DetailData.push(obj);
              }
          }
  
          if (params.SummarizedData) {
              let obj = new SummarizedData();
              obj.deserialize(params.SummarizedData)
              this.SummarizedData = obj;
          }
  
      }
  }
  
  /**
   * PurgeUrlsCache请求参数结构体
   * @class
   */
  class PurgeUrlsCacheRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 要刷新的Url列表，必须包含协议头部。
           * @type {Array.<string> || null}
           */
          this.Urls = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Urls = 'Urls' in params ? params.Urls : null;
  
      }
  }
  
  /**
   * 查询对象及其对应的访问明细数据
   * @class
   */
  class ResourceData extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 资源名称，根据查询条件不同分为以下几类：
  具体域名：表示该域名明细数据
  multiDomains：表示多域名汇总明细数据
  项目 ID：指定项目查询时，显示为项目 ID
  all：账号维度明细数据
           * @type {string || null}
           */
          this.Resource = null;
  
          /**
           * 资源对应的数据明细
           * @type {Array.<CdnData> || null}
           */
          this.CdnData = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Resource = 'Resource' in params ? params.Resource : null;
  
          if (params.CdnData) {
              this.CdnData = new Array();
              for (let z in params.CdnData) {
                  let obj = new CdnData();
                  obj.deserialize(params.CdnData[z]);
                  this.CdnData.push(obj);
              }
          }
  
      }
  }
  
  /**
   * 封禁url的详细信息
   * @class
   */
  class UrlRecord extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 状态(disable表示封禁，enable表示解封)
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {string || null}
           */
          this.Status = null;
  
          /**
           * 对应的url
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {string || null}
           */
          this.RealUrl = null;
  
          /**
           * 创建时间
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {string || null}
           */
          this.CreateTime = null;
  
          /**
           * 更新时间
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {string || null}
           */
          this.UpdateTime = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Status = 'Status' in params ? params.Status : null;
          this.RealUrl = 'RealUrl' in params ? params.RealUrl : null;
          this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
          this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
  
      }
  }
  
  /**
   * DescribeOriginData请求参数结构体
   * @class
   */
  class DescribeOriginDataRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 查询起始时间，如：2018-09-04 10:40:00，返回结果大于等于指定时间
  根据指定时间粒度不同，会进行向前归整，如 2018-09-04 10:40:00 在按 1 小时的时间粒度查询时，返回的第一个数据对应时间点为 2018-09-04 10:00:00
  起始时间与结束时间间隔小于等于 90 天
           * @type {string || null}
           */
          this.StartTime = null;
  
          /**
           * 查询结束时间，如：2018-09-04 10:40:00，返回结果小于等于指定时间
  根据指定时间粒度不同，会进行向前归整，如 2018-09-04 10:40:00 在按 1 小时的时间粒度查询时，返回的最后一个数据对应时间点为 2018-09-04 10:00:00
  起始时间与结束时间间隔小于等于 90 天
           * @type {string || null}
           */
          this.EndTime = null;
  
          /**
           * 指定查询指标，支持的类型有：
  flux：回源流量，单位为 byte
  bandwidth：回源带宽，单位为 bps
  request：回源请求数，单位为 次
  failRequest：回源失败请求数，单位为 次
  failRate：回源失败率，单位为 %
  statusCode：回源状态码，返回 2xx、3xx、4xx、5xx 汇总数据，单位为 个
  2xx：返回 2xx 回源状态码汇总及各 2 开头回源状态码数据，单位为 个
  3xx：返回 3xx 回源状态码汇总及各 3 开头回源状态码数据，单位为 个
  4xx：返回 4xx 回源状态码汇总及各 4 开头回源状态码数据，单位为 个
  5xx：返回 5xx 回源状态码汇总及各 5 开头回源状态码数据，单位为 个
  支持指定具体状态码查询，若未产生过，则返回为空
           * @type {string || null}
           */
          this.Metric = null;
  
          /**
           * 指定查询域名列表，最多可一次性查询 30 个加速域名明细
           * @type {Array.<string> || null}
           */
          this.Domains = null;
  
          /**
           * 指定要查询的项目 ID，[前往查看项目 ID](https://console.cloud.tencent.com/project)
  未填充域名情况下，指定项目查询，若填充了具体域名信息，以域名为主
           * @type {number || null}
           */
          this.Project = null;
  
          /**
           * 时间粒度，支持以下几种模式：
  min：1 分钟粒度，指定查询区间 24 小时内（含 24 小时），可返回 1 分钟粒度明细数据
  5min：5 分钟粒度，指定查询区间 31 天内（含 31 天），可返回 5 分钟粒度明细数据
  hour：1 小时粒度，指定查询区间 31 天内（含 31 天），可返回 1 小时粒度明细数据
  day：天粒度，指定查询区间大于 31 天，可返回天粒度明细数据
           * @type {string || null}
           */
          this.Interval = null;
  
          /**
           * Domains 传入多个时，默认（false)返回多个域名的汇总数据
  可按需指定为 true，返回每一个 Domain 的明细数据（statusCode 指标暂不支持）
           * @type {boolean || null}
           */
          this.Detail = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.StartTime = 'StartTime' in params ? params.StartTime : null;
          this.EndTime = 'EndTime' in params ? params.EndTime : null;
          this.Metric = 'Metric' in params ? params.Metric : null;
          this.Domains = 'Domains' in params ? params.Domains : null;
          this.Project = 'Project' in params ? params.Project : null;
          this.Interval = 'Interval' in params ? params.Interval : null;
          this.Detail = 'Detail' in params ? params.Detail : null;
  
      }
  }
  
  /**
   * 预热任务日志详情。
   * @class
   */
  class PushTask extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 预热任务Id，前十位为时间戳。
           * @type {string || null}
           */
          this.TaskId = null;
  
          /**
           * 预热Url。
           * @type {string || null}
           */
          this.Url = null;
  
          /**
           * 预热任务状态，fail表示失败，done表示成功，process表示预热中。
           * @type {string || null}
           */
          this.Status = null;
  
          /**
           * 预热百分比。
           * @type {number || null}
           */
          this.Percent = null;
  
          /**
           * 预热任务提交时间。
           * @type {string || null}
           */
          this.CreateTime = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.TaskId = 'TaskId' in params ? params.TaskId : null;
          this.Url = 'Url' in params ? params.Url : null;
          this.Status = 'Status' in params ? params.Status : null;
          this.Percent = 'Percent' in params ? params.Percent : null;
          this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
  
      }
  }
  
  /**
   * 时间戳与其对应的数值
   * @class
   */
  class TimestampData extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 数据统计时间点，采用向前汇总模式
  以 5 分钟粒度为例，13:35:00 时间点代表的统计数据区间为 13:35:00 至 13:39:59
           * @type {string || null}
           */
          this.Time = null;
  
          /**
           * 数据值
           * @type {number || null}
           */
          this.Value = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Time = 'Time' in params ? params.Time : null;
          this.Value = 'Value' in params ? params.Value : null;
  
      }
  }
  
  /**
   * DescribeCdnIp请求参数结构体
   * @class
   */
  class DescribeCdnIpRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 需要查询的 IP 列表
           * @type {Array.<string> || null}
           */
          this.Ips = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Ips = 'Ips' in params ? params.Ips : null;
  
      }
  }
  
  /**
   * PushUrlsCache请求参数结构体
   * @class
   */
  class PushUrlsCacheRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * URL 列表，提交时需要包含协议头部（http:// 或 https://）
           * @type {Array.<string> || null}
           */
          this.Urls = null;
  
          /**
           * 预热请求回源时 HTTP 请求的 User-Agent 头部，默认为 TencentCdn
           * @type {string || null}
           */
          this.UserAgent = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Urls = 'Urls' in params ? params.Urls : null;
          this.UserAgent = 'UserAgent' in params ? params.UserAgent : null;
  
      }
  }
  
  /**
   * DescribePushTasks请求参数结构体
   * @class
   */
  class DescribePushTasksRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 开始时间，如2018-08-08 00:00:00。
           * @type {string || null}
           */
          this.StartTime = null;
  
          /**
           * 结束时间，如2018-08-08 23:59:59。
           * @type {string || null}
           */
          this.EndTime = null;
  
          /**
           * 提交时返回的任务 Id，查询时 TaskId 和起始时间必须指定一项。
           * @type {string || null}
           */
          this.TaskId = null;
  
          /**
           * 查询关键字，请输入域名或 http(s):// 开头完整 URL。
           * @type {string || null}
           */
          this.Keyword = null;
  
          /**
           * 分页查询偏移量，默认为 0 （第一页）。
           * @type {number || null}
           */
          this.Offset = null;
  
          /**
           * 分页查询限制数目，默认为20。
           * @type {number || null}
           */
          this.Limit = null;
  
          /**
           * 查询刷新记录指定地区。mainland：中国大陆。
           * @type {string || null}
           */
          this.Area = null;
  
          /**
           * 查询指定任务状态，fail表示失败，done表示成功，process表示刷新中。
           * @type {string || null}
           */
          this.Status = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.StartTime = 'StartTime' in params ? params.StartTime : null;
          this.EndTime = 'EndTime' in params ? params.EndTime : null;
          this.TaskId = 'TaskId' in params ? params.TaskId : null;
          this.Keyword = 'Keyword' in params ? params.Keyword : null;
          this.Offset = 'Offset' in params ? params.Offset : null;
          this.Limit = 'Limit' in params ? params.Limit : null;
          this.Area = 'Area' in params ? params.Area : null;
          this.Status = 'Status' in params ? params.Status : null;
  
      }
  }
  
  /**
   * DescribeIpVisit返回参数结构体
   * @class
   */
  class DescribeIpVisitResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 数据统计的时间粒度，支持5min,  day，分别表示5分钟，1天的时间粒度。
           * @type {string || null}
           */
          this.Interval = null;
  
          /**
           * 各个资源的回源数据详情。
           * @type {Array.<ResourceData> || null}
           */
          this.Data = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Interval = 'Interval' in params ? params.Interval : null;
  
          if (params.Data) {
              this.Data = new Array();
              for (let z in params.Data) {
                  let obj = new ResourceData();
                  obj.deserialize(params.Data[z]);
                  this.Data.push(obj);
              }
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * PurgePathCache返回参数结构体
   * @class
   */
  class PurgePathCacheResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 刷新任务Id，前十位为提交任务时的UTC时间。
           * @type {string || null}
           */
          this.TaskId = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.TaskId = 'TaskId' in params ? params.TaskId : null;
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * 刷新任务日志详情
   * @class
   */
  class PurgeTask extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 刷新任务ID。
           * @type {string || null}
           */
          this.TaskId = null;
  
          /**
           * 刷新Url。
           * @type {string || null}
           */
          this.Url = null;
  
          /**
           * 刷新任务状态，fail表示失败，done表示成功，process表示刷新中。
           * @type {string || null}
           */
          this.Status = null;
  
          /**
           * 刷新类型，url表示url刷新，path表示目录刷新。
           * @type {string || null}
           */
          this.PurgeType = null;
  
          /**
           * 刷新资源方式，flush代表刷新更新资源，delete代表刷新全部资源。
           * @type {string || null}
           */
          this.FlushType = null;
  
          /**
           * 刷新任务提交时间
           * @type {string || null}
           */
          this.CreateTime = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.TaskId = 'TaskId' in params ? params.TaskId : null;
          this.Url = 'Url' in params ? params.Url : null;
          this.Status = 'Status' in params ? params.Status : null;
          this.PurgeType = 'PurgeType' in params ? params.PurgeType : null;
          this.FlushType = 'FlushType' in params ? params.FlushType : null;
          this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
  
      }
  }
  
  /**
   * DescribePurgeTasks请求参数结构体
   * @class
   */
  class DescribePurgeTasksRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 查询刷新类型。url：查询 url 刷新记录；path：查询目录刷新记录。
           * @type {string || null}
           */
          this.PurgeType = null;
  
          /**
           * 开始时间，如2018-08-08 00:00:00。
           * @type {string || null}
           */
          this.StartTime = null;
  
          /**
           * 结束时间，如2018-08-08 23:59:59。
           * @type {string || null}
           */
          this.EndTime = null;
  
          /**
           * 提交时返回的任务 Id，查询时 TaskId 和起始时间必须指定一项。
           * @type {string || null}
           */
          this.TaskId = null;
  
          /**
           * 分页查询偏移量，默认为 0 （第一页）。
           * @type {number || null}
           */
          this.Offset = null;
  
          /**
           * 分页查询限制数目，默认为20。
           * @type {number || null}
           */
          this.Limit = null;
  
          /**
           * 查询关键字，请输入域名或 http(s):// 开头完整 URL。
           * @type {string || null}
           */
          this.Keyword = null;
  
          /**
           * 查询指定任务状态，fail表示失败，done表示成功，process表示刷新中。
           * @type {string || null}
           */
          this.Status = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.PurgeType = 'PurgeType' in params ? params.PurgeType : null;
          this.StartTime = 'StartTime' in params ? params.StartTime : null;
          this.EndTime = 'EndTime' in params ? params.EndTime : null;
          this.TaskId = 'TaskId' in params ? params.TaskId : null;
          this.Offset = 'Offset' in params ? params.Offset : null;
          this.Limit = 'Limit' in params ? params.Limit : null;
          this.Keyword = 'Keyword' in params ? params.Keyword : null;
          this.Status = 'Status' in params ? params.Status : null;
  
      }
  }
  
  /**
   * 违规资源封禁/解封返回类型
   * @class
   */
  class CacheOptResult extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 成功的url列表
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {Array.<string> || null}
           */
          this.SuccessUrls = null;
  
          /**
           * 失败的url列表
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {Array.<string> || null}
           */
          this.FailUrls = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.SuccessUrls = 'SuccessUrls' in params ? params.SuccessUrls : null;
          this.FailUrls = 'FailUrls' in params ? params.FailUrls : null;
  
      }
  }
  
  /**
   * ListTopData返回参数结构体
   * @class
   */
  class ListTopDataResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 各个资源的Top 访问数据详情。
           * @type {Array.<TopData> || null}
           */
          this.Data = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.Data) {
              this.Data = new Array();
              for (let z in params.Data) {
                  let obj = new TopData();
                  obj.deserialize(params.Data[z]);
                  this.Data.push(obj);
              }
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * DescribeMapInfo返回参数结构体
   * @class
   */
  class DescribeMapInfoResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 映射关系数组。
           * @type {Array.<MapInfo> || null}
           */
          this.MapInfoList = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.MapInfoList) {
              this.MapInfoList = new Array();
              for (let z in params.MapInfoList) {
                  let obj = new MapInfo();
                  obj.deserialize(params.MapInfoList[z]);
                  this.MapInfoList.push(obj);
              }
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * DescribeMapInfo请求参数结构体
   * @class
   */
  class DescribeMapInfoRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 映射查询类别：
  isp：运营商映射查询
  district：省份映射查询
           * @type {string || null}
           */
          this.Name = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Name = 'Name' in params ? params.Name : null;
  
      }
  }
  
  /**
   * EnableCaches返回参数结构体
   * @class
   */
  class EnableCachesResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 结果列表
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {CacheOptResult || null}
           */
          this.CacheOptResult = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.CacheOptResult) {
              let obj = new CacheOptResult();
              obj.deserialize(params.CacheOptResult)
              this.CacheOptResult = obj;
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * DescribePayType请求参数结构体
   * @class
   */
  class DescribePayTypeRequest extends  AbstractModel {
      constructor(){
          super();
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
      }
  }
  
  /**
   * DescribeIpVisit请求参数结构体
   * @class
   */
  class DescribeIpVisitRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 查询起始时间，如：2018-09-04 10:40:10，返回结果大于等于指定时间
  根据指定时间粒度不同，会进行向前归整，如 2018-09-04 10:40:10 在按 5 分钟的时间粒度查询时，返回的第一个数据对应时间点为 2018-09-04 10:40:00
           * @type {string || null}
           */
          this.StartTime = null;
  
          /**
           * 查询结束时间，如：2018-09-04 10:40:10，返回结果小于等于指定时间
  根据指定时间粒度不同，会进行向前归整，如 2018-09-04 10:40:10 在按 5 分钟的时间粒度查询时，返回的最后一个数据对应时间点为 2018-09-04 10:40:00
           * @type {string || null}
           */
          this.EndTime = null;
  
          /**
           * 指定查询域名列表，最多可一次性查询 30 个加速域名明细
           * @type {Array.<string> || null}
           */
          this.Domains = null;
  
          /**
           * 指定要查询的项目 ID，[前往查看项目 ID](https://console.cloud.tencent.com/project)
  未填充域名情况下，指定项目查询，若填充了具体域名信息，以域名为主
           * @type {number || null}
           */
          this.Project = null;
  
          /**
           * 时间粒度，支持以下几种模式：
  5min：5 分钟粒度，查询时间区间 24 小时内，默认返回 5 分钟粒度活跃用户数
  day：天粒度，查询时间区间大于 1 天时，默认返回天粒度活跃用户数
           * @type {string || null}
           */
          this.Interval = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.StartTime = 'StartTime' in params ? params.StartTime : null;
          this.EndTime = 'EndTime' in params ? params.EndTime : null;
          this.Domains = 'Domains' in params ? params.Domains : null;
          this.Project = 'Project' in params ? params.Project : null;
          this.Interval = 'Interval' in params ? params.Interval : null;
  
      }
  }
  
  /**
   * DescribePayType返回参数结构体
   * @class
   */
  class DescribePayTypeResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 计费类型：
  flux：流量计费
  bandwidth：带宽计费
           * @type {string || null}
           */
          this.PayType = null;
  
          /**
           * 计费周期：
  day：日结计费
  month：月结计费
           * @type {string || null}
           */
          this.BillingCycle = null;
  
          /**
           * 计费方式：
  monthMax：日峰值月平均计费，月结模式
  day95：日 95 带宽计费，月结模式
  month95：月95带宽计费，月结模式
  sum：总流量计费，日结与月结均有流量计费模式
  max：峰值带宽计费，日结模式
           * @type {string || null}
           */
          this.StatType = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.PayType = 'PayType' in params ? params.PayType : null;
          this.BillingCycle = 'BillingCycle' in params ? params.BillingCycle : null;
          this.StatType = 'StatType' in params ? params.StatType : null;
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * GetDisableRecords请求参数结构体
   * @class
   */
  class GetDisableRecordsRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 开始时间
           * @type {string || null}
           */
          this.StartTime = null;
  
          /**
           * 结束时间
           * @type {string || null}
           */
          this.EndTime = null;
  
          /**
           * 指定 URL 查询
           * @type {string || null}
           */
          this.Url = null;
  
          /**
           * URL 当前状态
  disable：当前仍为禁用状态，访问返回 403
  enable：当前为可用状态，已解禁，可正常访问
           * @type {string || null}
           */
          this.Status = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.StartTime = 'StartTime' in params ? params.StartTime : null;
          this.EndTime = 'EndTime' in params ? params.EndTime : null;
          this.Url = 'Url' in params ? params.Url : null;
          this.Status = 'Status' in params ? params.Status : null;
  
      }
  }
  
  /**
   * PurgeUrlsCache返回参数结构体
   * @class
   */
  class PurgeUrlsCacheResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 刷新任务Id，前十位为提交任务时的UTC时间。
           * @type {string || null}
           */
          this.TaskId = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.TaskId = 'TaskId' in params ? params.TaskId : null;
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * ListTopData请求参数结构体
   * @class
   */
  class ListTopDataRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 查询起始日期，如：2018-09-09 00:00:00
           * @type {string || null}
           */
          this.StartTime = null;
  
          /**
           * 查询结束日期，如：2018-09-10 00:00:00
           * @type {string || null}
           */
          this.EndTime = null;
  
          /**
           * 排序对象，支持以下几种形式：
  Url：访问 URL 排序，带参数统计，支持的 Filter 为 flux、request
  Path：访问 URL 排序，不带参数统计，支持的 Filter 为 flux、request（白名单功能）
  District：省份排序，支持的 Filter 为 flux、request
  Isp：运营商排序，支持的 Filter 为 flux、request
  Host：域名访问数据排序，支持的 Filter 为：flux, request, bandwidth, fluxHitRate, 2XX, 3XX, 4XX, 5XX，具体状态码统计
  originHost：域名回源数据排序，支持的 Filter 为 flux， request，bandwidth，origin_2XX，origin_3XX，oringin_4XX，origin_5XX，具体回源状态码统计
           * @type {string || null}
           */
          this.Metric = null;
  
          /**
           * 排序使用的指标名称：
  flux：Metric 为 host 时指代访问流量，originHost 时指代回源流量
  bandwidth：Metric 为 host 时指代访问带宽，originHost 时指代回源带宽
  request：Metric 为 host 时指代访问请求数，originHost 时指代回源请求数
  fluxHitRate：平均流量命中率
  2XX：访问 2XX 状态码
  3XX：访问 3XX 状态码
  4XX：访问 4XX 状态码
  5XX：访问 5XX 状态码
  origin_2XX：回源 2XX 状态码
  origin_3XX：回源 3XX 状态码
  origin_4XX：回源 4XX 状态码
  origin_5XX：回源 5XX 状态码
  statusCode：指定访问状态码统计，在 Code 参数中填充指定状态码
  OriginStatusCode：指定回源状态码统计，在 Code 参数中填充指定状态码
           * @type {string || null}
           */
          this.Filter = null;
  
          /**
           * 指定查询域名列表，最多可一次性查询 30 个加速域名明细
           * @type {Array.<string> || null}
           */
          this.Domains = null;
  
          /**
           * 指定要查询的项目 ID，[前往查看项目 ID](https://console.cloud.tencent.com/project)
  未填充域名情况下，指定项目查询，若填充了具体域名信息，以域名为主
           * @type {number || null}
           */
          this.Project = null;
  
          /**
           * 多域名查询时，默认（false)返回所有域名汇总排序结果
  Metric 为 Url、Path、District、Isp，Filter 为 flux、reqeust 时，可设置为 true，返回每一个 Domain 的排序数据
           * @type {boolean || null}
           */
          this.Detail = null;
  
          /**
           * Filter 为 statusCode、OriginStatusCode 时，填充指定状态码查询排序结果
           * @type {string || null}
           */
          this.Code = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.StartTime = 'StartTime' in params ? params.StartTime : null;
          this.EndTime = 'EndTime' in params ? params.EndTime : null;
          this.Metric = 'Metric' in params ? params.Metric : null;
          this.Filter = 'Filter' in params ? params.Filter : null;
          this.Domains = 'Domains' in params ? params.Domains : null;
          this.Project = 'Project' in params ? params.Project : null;
          this.Detail = 'Detail' in params ? params.Detail : null;
          this.Code = 'Code' in params ? params.Code : null;
  
      }
  }
  
  /**
   * DisableCaches返回参数结构体
   * @class
   */
  class DisableCachesResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 提交结果
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {CacheOptResult || null}
           */
          this.CacheOptResult = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.CacheOptResult) {
              let obj = new CacheOptResult();
              obj.deserialize(params.CacheOptResult)
              this.CacheOptResult = obj;
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * DescribePurgeTasks返回参数结构体
   * @class
   */
  class DescribePurgeTasksResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 刷新历史记录
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {Array.<PurgeTask> || null}
           */
          this.PurgeLogs = null;
  
          /**
           * 任务总数，用于分页
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {number || null}
           */
          this.TotalCount = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.PurgeLogs) {
              this.PurgeLogs = new Array();
              for (let z in params.PurgeLogs) {
                  let obj = new PurgeTask();
                  obj.deserialize(params.PurgeLogs[z]);
                  this.PurgeLogs.push(obj);
              }
          }
          this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * DescribePushTasks返回参数结构体
   * @class
   */
  class DescribePushTasksResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 预热历史记录
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {Array.<PushTask> || null}
           */
          this.PushLogs = null;
  
          /**
           * 任务总数，用于分页
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {number || null}
           */
          this.TotalCount = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.PushLogs) {
              this.PushLogs = new Array();
              for (let z in params.PushLogs) {
                  let obj = new PushTask();
                  obj.deserialize(params.PushLogs[z]);
                  this.PushLogs.push(obj);
              }
          }
          this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * 查询对象及其对应的回源明细数据
   * @class
   */
  class ResourceOriginData extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 资源名称，根据查询条件不同分为以下几类：
  具体域名：表示该域名明细数据
  multiDomains：表示多域名汇总明细数据
  项目 ID：指定项目查询时，显示为项目 ID
  all：账号维度明细数据
           * @type {string || null}
           */
          this.Resource = null;
  
          /**
           * 回源数据详情
           * @type {Array.<CdnData> || null}
           */
          this.OriginData = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Resource = 'Resource' in params ? params.Resource : null;
  
          if (params.OriginData) {
              this.OriginData = new Array();
              for (let z in params.OriginData) {
                  let obj = new CdnData();
                  obj.deserialize(params.OriginData[z]);
                  this.OriginData.push(obj);
              }
          }
  
      }
  }
  
  /**
   * DescribeOriginData返回参数结构体
   * @class
   */
  class DescribeOriginDataResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 数据统计的时间粒度，支持min, 5min, hour, day，分别表示1分钟，5分钟，1小时和1天的时间粒度。
           * @type {string || null}
           */
          this.Interval = null;
  
          /**
           * 各个资源的回源数据详情。
           * @type {Array.<ResourceOriginData> || null}
           */
          this.Data = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Interval = 'Interval' in params ? params.Interval : null;
  
          if (params.Data) {
              this.Data = new Array();
              for (let z in params.Data) {
                  let obj = new ResourceOriginData();
                  obj.deserialize(params.Data[z]);
                  this.Data.push(obj);
              }
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * DescribeCdnIp返回参数结构体
   * @class
   */
  class DescribeCdnIpResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 查询的节点归属详情。
           * @type {Array.<CdnIp> || null}
           */
          this.Ips = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.Ips) {
              this.Ips = new Array();
              for (let z in params.Ips) {
                  let obj = new CdnIp();
                  obj.deserialize(params.Ips[z]);
                  this.Ips.push(obj);
              }
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * DescribeCdnData返回参数结构体
   * @class
   */
  class DescribeCdnDataResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 返回数据的时间粒度，查询时指定：
  min：1 分钟粒度
  5min：5 分钟粒度
  hour：1 小时粒度
  day：天粒度
           * @type {string || null}
           */
          this.Interval = null;
  
          /**
           * 指定条件查询得到的数据明细
           * @type {Array.<ResourceData> || null}
           */
          this.Data = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Interval = 'Interval' in params ? params.Interval : null;
  
          if (params.Data) {
              this.Data = new Array();
              for (let z in params.Data) {
                  let obj = new ResourceData();
                  obj.deserialize(params.Data[z]);
                  this.Data.push(obj);
              }
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * CdnIp 属性详情。
   * @class
   */
  class CdnIp extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 节点 ip。
           * @type {string || null}
           */
          this.Ip = null;
  
          /**
           * 是否为腾讯云 CDN 加速节点。yes 表示该节点为腾讯云 CDN 节点，no 表示该节点不是腾讯云 CDN 节点。
           * @type {string || null}
           */
          this.Platform = null;
  
          /**
           * 表示该节点所处的省份/国家。unknown 表示节点位置未知。
           * @type {string || null}
           */
          this.Location = null;
  
          /**
           * 节点上下线历史记录。
           * @type {Array.<CdnIpHistory> || null}
           */
          this.History = null;
  
          /**
           * 节点的服务地域。mainland 表示服务地域为中国境内，overseas 表示服务地域为中国境外， unknown 表示服务地域未知。
           * @type {string || null}
           */
          this.Area = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Ip = 'Ip' in params ? params.Ip : null;
          this.Platform = 'Platform' in params ? params.Platform : null;
          this.Location = 'Location' in params ? params.Location : null;
  
          if (params.History) {
              this.History = new Array();
              for (let z in params.History) {
                  let obj = new CdnIpHistory();
                  obj.deserialize(params.History[z]);
                  this.History.push(obj);
              }
          }
          this.Area = 'Area' in params ? params.Area : null;
  
      }
  }
  
  /**
   * DisableCaches请求参数结构体
   * @class
   */
  class DisableCachesRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 需要禁用的 URL 列表
  每次最多可提交 100 条，每日最多可提交 3000 条
           * @type {Array.<string> || null}
           */
          this.Urls = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Urls = 'Urls' in params ? params.Urls : null;
  
      }
  }
  
  /**
   * DescribeCdnData请求参数结构体
   * @class
   */
  class DescribeCdnDataRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 查询起始时间，如：2018-09-04 10:40:00，返回结果大于等于指定时间
  根据指定时间粒度不同，会进行向前归整，如 2018-09-04 10:40:00 在按 1 小时的时间粒度查询时，返回的第一个数据对应时间点为 2018-09-04 10:00:00
  起始时间与结束时间间隔小于等于 90 天
           * @type {string || null}
           */
          this.StartTime = null;
  
          /**
           * 查询结束时间，如：2018-09-04 10:40:00，返回结果小于等于指定时间
  根据指定时间粒度不同，会进行向前归整，如 2018-09-04 10:40:00 在按 1 小时的时间粒度查询时，返回的最后一个数据对应时间点为 2018-09-04 10:00:00
  起始时间与结束时间间隔小于等于 90 天
           * @type {string || null}
           */
          this.EndTime = null;
  
          /**
           * 指定查询指标，支持的类型有：
  flux：流量，单位为 byte
  bandwidth：带宽，单位为 bps
  request：请求数，单位为 次
  fluxHitRate：流量命中率，单位为 %
  statusCode：状态码，返回 2xx、3xx、4xx、5xx 汇总数据，单位为 个
  2xx：返回 2xx 状态码汇总及各 2 开头状态码数据，单位为 个
  3xx：返回 3xx 状态码汇总及各 3 开头状态码数据，单位为 个
  4xx：返回 4xx 状态码汇总及各 4 开头状态码数据，单位为 个
  5xx：返回 5xx 状态码汇总及各 5 开头状态码数据，单位为 个
  支持指定具体状态码查询，若未产生过，则返回为空
           * @type {string || null}
           */
          this.Metric = null;
  
          /**
           * 指定查询域名列表
  最多可一次性查询 30 个加速域名明细
           * @type {Array.<string> || null}
           */
          this.Domains = null;
  
          /**
           * 指定要查询的项目 ID，[前往查看项目 ID](https://console.cloud.tencent.com/project)
  未填充域名情况下，指定项目查询，若填充了具体域名信息，以域名为主
           * @type {number || null}
           */
          this.Project = null;
  
          /**
           * 时间粒度，支持以下几种模式：
  min：1 分钟粒度，指定查询区间 24 小时内（含 24 小时），可返回 1 分钟粒度明细数据
  5min：5 分钟粒度，指定查询区间 31 天内（含 31 天），可返回 5 分钟粒度明细数据
  hour：1 小时粒度，指定查询区间 31 天内（含 31 天），可返回 1 小时粒度明细数据
  day：天粒度，指定查询区间大于 31 天，可返回天粒度明细数据
           * @type {string || null}
           */
          this.Interval = null;
  
          /**
           * 多域名查询时，默认（false)返回多个域名的汇总数据
  可按需指定为 true，返回每一个 Domain 的明细数据（statusCode 指标暂不支持）
           * @type {boolean || null}
           */
          this.Detail = null;
  
          /**
           * 指定运营商查询，不填充表示查询所有运营商
  运营商编码可以查看 [运营商编码映射](https://cloud.tencent.com/document/product/228/6316#.E8.BF.90.E8.90.A5.E5.95.86.E6.98.A0.E5.B0.84)
           * @type {number || null}
           */
          this.Isp = null;
  
          /**
           * 指定省份查询，不填充表示查询所有省份
  省份编码可以查看 [省份编码映射](https://cloud.tencent.com/document/product/228/6316#.E7.9C.81.E4.BB.BD.E6.98.A0.E5.B0.84)
           * @type {number || null}
           */
          this.District = null;
  
          /**
           * 指定协议查询，不填充表示查询所有协议
  all：所有协议
  http：指定查询 HTTP 对应指标
  https：指定查询 HTTPS 对应指标
           * @type {string || null}
           */
          this.Protocol = null;
  
          /**
           * 指定数据源查询，白名单功能
           * @type {string || null}
           */
          this.DataSource = null;
  
          /**
           * 指定IP协议查询，不填充表示查询所有协议
  all：所有协议
  ipv4：指定查询 ipv4对应指标
  ipv6：指定查询 ipv6 对应指标
           * @type {string || null}
           */
          this.IpProtocol = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.StartTime = 'StartTime' in params ? params.StartTime : null;
          this.EndTime = 'EndTime' in params ? params.EndTime : null;
          this.Metric = 'Metric' in params ? params.Metric : null;
          this.Domains = 'Domains' in params ? params.Domains : null;
          this.Project = 'Project' in params ? params.Project : null;
          this.Interval = 'Interval' in params ? params.Interval : null;
          this.Detail = 'Detail' in params ? params.Detail : null;
          this.Isp = 'Isp' in params ? params.Isp : null;
          this.District = 'District' in params ? params.District : null;
          this.Protocol = 'Protocol' in params ? params.Protocol : null;
          this.DataSource = 'DataSource' in params ? params.DataSource : null;
          this.IpProtocol = 'IpProtocol' in params ? params.IpProtocol : null;
  
      }
  }
  
  /**
   * 排序类型数据结构
   * @class
   */
  class TopData extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 资源名称，根据查询条件不同分为以下几类：
  具体域名：表示该域名明细数据
  multiDomains：表示多域名汇总明细数据
  项目 ID：指定项目查询时，显示为项目 ID
  all：账号维度明细数据
           * @type {string || null}
           */
          this.Resource = null;
  
          /**
           * 排序结果详情
           * @type {Array.<TopDetailData> || null}
           */
          this.DetailData = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Resource = 'Resource' in params ? params.Resource : null;
  
          if (params.DetailData) {
              this.DetailData = new Array();
              for (let z in params.DetailData) {
                  let obj = new TopDetailData();
                  obj.deserialize(params.DetailData[z]);
                  this.DetailData.push(obj);
              }
          }
  
      }
  }
  
  /**
   * EnableCaches请求参数结构体
   * @class
   */
  class EnableCachesRequest extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 解封 URL 列表
           * @type {Array.<string> || null}
           */
          this.Urls = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Urls = 'Urls' in params ? params.Urls : null;
  
      }
  }
  
  /**
   * PushUrlsCache返回参数结构体
   * @class
   */
  class PushUrlsCacheResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 此批次提交任务对应的 Id，值唯一
           * @type {string || null}
           */
          this.TaskId = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.TaskId = 'TaskId' in params ? params.TaskId : null;
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * 名称与ID映射关系
   * @class
   */
  class MapInfo extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 对象 Id
           * @type {number || null}
           */
          this.Id = null;
  
          /**
           * 对象名称
           * @type {string || null}
           */
          this.Name = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Id = 'Id' in params ? params.Id : null;
          this.Name = 'Name' in params ? params.Name : null;
  
      }
  }
  
  /**
   * 排序类型的数据结构
   * @class
   */
  class TopDetailData extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 数据类型的名称
           * @type {string || null}
           */
          this.Name = null;
  
          /**
           * 数据值
           * @type {number || null}
           */
          this.Value = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Name = 'Name' in params ? params.Name : null;
          this.Value = 'Value' in params ? params.Value : null;
  
      }
  }
  
  /**
   * GetDisableRecords返回参数结构体
   * @class
   */
  class GetDisableRecordsResponse extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 封禁历史记录
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {Array.<UrlRecord> || null}
           */
          this.UrlRecordList = null;
  
          /**
           * 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
           * @type {string || null}
           */
          this.RequestId = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
  
          if (params.UrlRecordList) {
              this.UrlRecordList = new Array();
              for (let z in params.UrlRecordList) {
                  let obj = new UrlRecord();
                  obj.deserialize(params.UrlRecordList[z]);
                  this.UrlRecordList.push(obj);
              }
          }
          this.RequestId = 'RequestId' in params ? params.RequestId : null;
  
      }
  }
  
  /**
   * CdnIp 节点上下线历史
   * @class
   */
  class CdnIpHistory extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 上下线状态。online 为上线，offline 为下线。
           * @type {string || null}
           */
          this.Status = null;
  
          /**
           * 操作时间。当该值为 null 时表示无历史状态变更记录。
  注意：此字段可能返回 null，表示取不到有效值。
           * @type {string || null}
           */
          this.Datetime = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Status = 'Status' in params ? params.Status : null;
          this.Datetime = 'Datetime' in params ? params.Datetime : null;
  
      }
  }
  
  /**
   * 明细数据的汇总值，各指标根据其特性不同拥有不同汇总方式
   * @class
   */
  class SummarizedData extends  AbstractModel {
      constructor(){
          super();
  
          /**
           * 汇总方式，存在以下几种：
  sum：累加求和
  max：最大值，带宽模式下，采用 5 分钟粒度汇总数据，计算峰值带宽
  avg：平均值
           * @type {string || null}
           */
          this.Name = null;
  
          /**
           * 汇总后的数据值
           * @type {number || null}
           */
          this.Value = null;
  
      }
  
      /**
       * @private
       */
      deserialize(params) {
          if (!params) {
              return;
          }
          this.Name = 'Name' in params ? params.Name : null;
          this.Value = 'Value' in params ? params.Value : null;
  
      }
  }
  
  module.exports = {
      PurgePathCacheRequest: PurgePathCacheRequest,
      CdnData: CdnData,
      PurgeUrlsCacheRequest: PurgeUrlsCacheRequest,
      ResourceData: ResourceData,
      UrlRecord: UrlRecord,
      DescribeOriginDataRequest: DescribeOriginDataRequest,
      PushTask: PushTask,
      TimestampData: TimestampData,
      DescribeCdnIpRequest: DescribeCdnIpRequest,
      PushUrlsCacheRequest: PushUrlsCacheRequest,
      DescribePushTasksRequest: DescribePushTasksRequest,
      DescribeIpVisitResponse: DescribeIpVisitResponse,
      PurgePathCacheResponse: PurgePathCacheResponse,
      PurgeTask: PurgeTask,
      DescribePurgeTasksRequest: DescribePurgeTasksRequest,
      CacheOptResult: CacheOptResult,
      ListTopDataResponse: ListTopDataResponse,
      DescribeMapInfoResponse: DescribeMapInfoResponse,
      DescribeMapInfoRequest: DescribeMapInfoRequest,
      EnableCachesResponse: EnableCachesResponse,
      DescribePayTypeRequest: DescribePayTypeRequest,
      DescribeIpVisitRequest: DescribeIpVisitRequest,
      DescribePayTypeResponse: DescribePayTypeResponse,
      GetDisableRecordsRequest: GetDisableRecordsRequest,
      PurgeUrlsCacheResponse: PurgeUrlsCacheResponse,
      ListTopDataRequest: ListTopDataRequest,
      DisableCachesResponse: DisableCachesResponse,
      DescribePurgeTasksResponse: DescribePurgeTasksResponse,
      DescribePushTasksResponse: DescribePushTasksResponse,
      ResourceOriginData: ResourceOriginData,
      DescribeOriginDataResponse: DescribeOriginDataResponse,
      DescribeCdnIpResponse: DescribeCdnIpResponse,
      DescribeCdnDataResponse: DescribeCdnDataResponse,
      CdnIp: CdnIp,
      DisableCachesRequest: DisableCachesRequest,
      DescribeCdnDataRequest: DescribeCdnDataRequest,
      TopData: TopData,
      EnableCachesRequest: EnableCachesRequest,
      PushUrlsCacheResponse: PushUrlsCacheResponse,
      MapInfo: MapInfo,
      TopDetailData: TopDetailData,
      GetDisableRecordsResponse: GetDisableRecordsResponse,
      CdnIpHistory: CdnIpHistory,
      SummarizedData: SummarizedData,
  
  }
  