tencentcloud-sdk-nodejs-intl-en
Version: 
1,748 lines (1,473 loc) • 914 kB
JavaScript
/*
 * 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");
/**
 * GenerateVpnConnectionDefaultHealthCheckIp request structure.
 * @class
 */
class GenerateVpnConnectionDefaultHealthCheckIpRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * VPN gateway ID, such as `vpngw-1w9tue3d`
         * @type {string || null}
         */
        this.VpnGatewayId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VpnGatewayId = 'VpnGatewayId' in params ? params.VpnGatewayId : null;
    }
}
/**
 * CreateNetworkAcl response structure.
 * @class
 */
class CreateNetworkAclResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * Network ACL instance
         * @type {NetworkAcl || null}
         */
        this.NetworkAcl = null;
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        if (params.NetworkAcl) {
            let obj = new NetworkAcl();
            obj.deserialize(params.NetworkAcl)
            this.NetworkAcl = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * Network ACL
 * @class
 */
class NetworkAcl extends  AbstractModel {
    constructor(){
        super();
        /**
         * `ID` of the `VPC` instance.
         * @type {string || null}
         */
        this.VpcId = null;
        /**
         * `ID` of the network ACL instance.
         * @type {string || null}
         */
        this.NetworkAclId = null;
        /**
         * Name of the network ACL. The maximum length is 60 bytes.
         * @type {string || null}
         */
        this.NetworkAclName = null;
        /**
         * Creation time.
         * @type {string || null}
         */
        this.CreatedTime = null;
        /**
         * Array of subnets associated with the network ACL.
         * @type {Array.<Subnet> || null}
         */
        this.SubnetSet = null;
        /**
         * Inbound rules of the network ACL.
         * @type {Array.<NetworkAclEntry> || null}
         */
        this.IngressEntries = null;
        /**
         * Outbound rules of the network ACL.
         * @type {Array.<NetworkAclEntry> || null}
         */
        this.EgressEntries = null;
        /**
         * Network ACL type. Valid values: `TRIPLE` and `QUINTUPLE`.
         * @type {string || null}
         */
        this.NetworkAclType = null;
        /**
         * Tag key-value pairs
         * @type {Array.<Tag> || null}
         */
        this.TagSet = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.NetworkAclId = 'NetworkAclId' in params ? params.NetworkAclId : null;
        this.NetworkAclName = 'NetworkAclName' in params ? params.NetworkAclName : null;
        this.CreatedTime = 'CreatedTime' in params ? params.CreatedTime : null;
        if (params.SubnetSet) {
            this.SubnetSet = new Array();
            for (let z in params.SubnetSet) {
                let obj = new Subnet();
                obj.deserialize(params.SubnetSet[z]);
                this.SubnetSet.push(obj);
            }
        }
        if (params.IngressEntries) {
            this.IngressEntries = new Array();
            for (let z in params.IngressEntries) {
                let obj = new NetworkAclEntry();
                obj.deserialize(params.IngressEntries[z]);
                this.IngressEntries.push(obj);
            }
        }
        if (params.EgressEntries) {
            this.EgressEntries = new Array();
            for (let z in params.EgressEntries) {
                let obj = new NetworkAclEntry();
                obj.deserialize(params.EgressEntries[z]);
                this.EgressEntries.push(obj);
            }
        }
        this.NetworkAclType = 'NetworkAclType' in params ? params.NetworkAclType : null;
        if (params.TagSet) {
            this.TagSet = new Array();
            for (let z in params.TagSet) {
                let obj = new Tag();
                obj.deserialize(params.TagSet[z]);
                this.TagSet.push(obj);
            }
        }
    }
}
/**
 * ModifyAddressTemplateAttribute response structure.
 * @class
 */
class ModifyAddressTemplateAttributeResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * Protocol port template group
 * @class
 */
class ServiceTemplateGroup extends  AbstractModel {
    constructor(){
        super();
        /**
         * Protocol port template group instance ID, such as `ppmg-2klmrefu`.
         * @type {string || null}
         */
        this.ServiceTemplateGroupId = null;
        /**
         * Protocol port template group name.
         * @type {string || null}
         */
        this.ServiceTemplateGroupName = null;
        /**
         * Protocol port template instance ID.
         * @type {Array.<string> || null}
         */
        this.ServiceTemplateIdSet = null;
        /**
         * Creation Time.
         * @type {string || null}
         */
        this.CreatedTime = null;
        /**
         * Protocol port template instance information.
         * @type {Array.<ServiceTemplate> || null}
         */
        this.ServiceTemplateSet = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ServiceTemplateGroupId = 'ServiceTemplateGroupId' in params ? params.ServiceTemplateGroupId : null;
        this.ServiceTemplateGroupName = 'ServiceTemplateGroupName' in params ? params.ServiceTemplateGroupName : null;
        this.ServiceTemplateIdSet = 'ServiceTemplateIdSet' in params ? params.ServiceTemplateIdSet : null;
        this.CreatedTime = 'CreatedTime' in params ? params.CreatedTime : null;
        if (params.ServiceTemplateSet) {
            this.ServiceTemplateSet = new Array();
            for (let z in params.ServiceTemplateSet) {
                let obj = new ServiceTemplate();
                obj.deserialize(params.ServiceTemplateSet[z]);
                this.ServiceTemplateSet.push(obj);
            }
        }
    }
}
/**
 * CreateRoutes request structure.
 * @class
 */
class CreateRoutesRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * Route table instance ID.
         * @type {string || null}
         */
        this.RouteTableId = null;
        /**
         * Routing policy object.
         * @type {Array.<Route> || null}
         */
        this.Routes = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RouteTableId = 'RouteTableId' in params ? params.RouteTableId : null;
        if (params.Routes) {
            this.Routes = new Array();
            for (let z in params.Routes) {
                let obj = new Route();
                obj.deserialize(params.Routes[z]);
                this.Routes.push(obj);
            }
        }
    }
}
/**
 * DescribeHaVips response structure.
 * @class
 */
class DescribeHaVipsResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The number of objects meeting the condition.
         * @type {number || null}
         */
        this.TotalCount = null;
        /**
         * `HAVIP` object array.
         * @type {Array.<HaVip> || null}
         */
        this.HaVipSet = null;
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        if (params.HaVipSet) {
            this.HaVipSet = new Array();
            for (let z in params.HaVipSet) {
                let obj = new HaVip();
                obj.deserialize(params.HaVipSet[z]);
                this.HaVipSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * Statistics on the instances associated with the security group
 * @class
 */
class SecurityGroupAssociationStatistics extends  AbstractModel {
    constructor(){
        super();
        /**
         * Security group instance ID.
         * @type {string || null}
         */
        this.SecurityGroupId = null;
        /**
         * Number of CVM instances.
         * @type {number || null}
         */
        this.CVM = null;
        /**
         * Number of TencentDB for MySQL instances
         * @type {number || null}
         */
        this.CDB = null;
        /**
         * Number of ENI instances.
         * @type {number || null}
         */
        this.ENI = null;
        /**
         * Number of times a security group is referenced by other security groups
         * @type {number || null}
         */
        this.SG = null;
        /**
         * Number of load balancer instances.
         * @type {number || null}
         */
        this.CLB = null;
        /**
         * The binding statistics for all instances.
         * @type {Array.<InstanceStatistic> || null}
         */
        this.InstanceStatistics = null;
        /**
         * Total count of all resources (excluding resources referenced by security groups).
         * @type {number || null}
         */
        this.TotalCount = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecurityGroupId = 'SecurityGroupId' in params ? params.SecurityGroupId : null;
        this.CVM = 'CVM' in params ? params.CVM : null;
        this.CDB = 'CDB' in params ? params.CDB : null;
        this.ENI = 'ENI' in params ? params.ENI : null;
        this.SG = 'SG' in params ? params.SG : null;
        this.CLB = 'CLB' in params ? params.CLB : null;
        if (params.InstanceStatistics) {
            this.InstanceStatistics = new Array();
            for (let z in params.InstanceStatistics) {
                let obj = new InstanceStatistic();
                obj.deserialize(params.InstanceStatistics[z]);
                this.InstanceStatistics.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
    }
}
/**
 * DeleteServiceTemplate response structure.
 * @class
 */
class DeleteServiceTemplateResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * CreateServiceTemplate request structure.
 * @class
 */
class CreateServiceTemplateRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * Template name of the protocol port
         * @type {string || null}
         */
        this.ServiceTemplateName = null;
        /**
         * Supported ports inlcude single port, multiple ports, consecutive ports and all ports. Supported protocols include TCP, UDP, ICMP and GRE. Either Services or ServicesExtra is required.
         * @type {Array.<string> || null}
         */
        this.Services = null;
        /**
         * You can add remarks. Supported ports include single port, multiple ports, consecutive ports and all ports. Supported protocols include TCP, UDP, ICMP and GRE. Either Services or ServicesExtra is required.
         * @type {Array.<ServicesInfo> || null}
         */
        this.ServicesExtra = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ServiceTemplateName = 'ServiceTemplateName' in params ? params.ServiceTemplateName : null;
        this.Services = 'Services' in params ? params.Services : null;
        if (params.ServicesExtra) {
            this.ServicesExtra = new Array();
            for (let z in params.ServicesExtra) {
                let obj = new ServicesInfo();
                obj.deserialize(params.ServicesExtra[z]);
                this.ServicesExtra.push(obj);
            }
        }
    }
}
/**
 * Internet Key Exchange (IKE) configuration. IKE has a self-protection mechanism. The network security protocol is configured by the user.
 * @class
 */
class IKEOptionsSpecification extends  AbstractModel {
    constructor(){
        super();
        /**
         * Encryption algorithm. Valid values: `3DES-CBC`, `AES-CBC-128`, `AES-CBS-192`, `AES-CBC-256`, `DES-CBC`, and `SM4`; default value: `3DES-CBC`.
         * @type {string || null}
         */
        this.PropoEncryAlgorithm = null;
        /**
         * Authentication algorithm. Valid values: `MD5`, `SHA1` and `SHA-256`; default value: `MD5`.
         * @type {string || null}
         */
        this.PropoAuthenAlgorithm = null;
        /**
         * Negotiation mode. Available values: 'AGGRESSIVE' and 'MAIN'. Default is MAIN.
         * @type {string || null}
         */
        this.ExchangeMode = null;
        /**
         * Type of local identity. Available values: 'ADDRESS' and 'FQDN'. Default is ADDRESS.
         * @type {string || null}
         */
        this.LocalIdentity = null;
        /**
         * Type of remote identity. Available values: 'ADDRESS' and 'FQDN'. Default is ADDRESS.
         * @type {string || null}
         */
        this.RemoteIdentity = null;
        /**
         * Local identity. When ADDRESS is selected for LocalIdentity, LocalAddress is required. The default LocalAddress is the public IP of the VPN gateway.
         * @type {string || null}
         */
        this.LocalAddress = null;
        /**
         * Remote identity. When ADDRESS is selected for RemoteIdentity, RemoteAddress is required.
         * @type {string || null}
         */
        this.RemoteAddress = null;
        /**
         * Local identity. When FQDN is selected for LocalIdentity, LocalFqdnName is required.
         * @type {string || null}
         */
        this.LocalFqdnName = null;
        /**
         * Remote identity. When FQDN is selected for RemoteIdentity, RemoteFqdnName is required.
         * @type {string || null}
         */
        this.RemoteFqdnName = null;
        /**
         * DH group. Specify the DH group used for exchanging the key via IKE. Available values: 'GROUP1', 'GROUP2', 'GROUP5', 'GROUP14', and 'GROUP24'.
         * @type {string || null}
         */
        this.DhGroupName = null;
        /**
         * IKE SA lifetime (in sec). Value range: 60-604800
         * @type {number || null}
         */
        this.IKESaLifetimeSeconds = null;
        /**
         * IKE version
         * @type {string || null}
         */
        this.IKEVersion = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PropoEncryAlgorithm = 'PropoEncryAlgorithm' in params ? params.PropoEncryAlgorithm : null;
        this.PropoAuthenAlgorithm = 'PropoAuthenAlgorithm' in params ? params.PropoAuthenAlgorithm : null;
        this.ExchangeMode = 'ExchangeMode' in params ? params.ExchangeMode : null;
        this.LocalIdentity = 'LocalIdentity' in params ? params.LocalIdentity : null;
        this.RemoteIdentity = 'RemoteIdentity' in params ? params.RemoteIdentity : null;
        this.LocalAddress = 'LocalAddress' in params ? params.LocalAddress : null;
        this.RemoteAddress = 'RemoteAddress' in params ? params.RemoteAddress : null;
        this.LocalFqdnName = 'LocalFqdnName' in params ? params.LocalFqdnName : null;
        this.RemoteFqdnName = 'RemoteFqdnName' in params ? params.RemoteFqdnName : null;
        this.DhGroupName = 'DhGroupName' in params ? params.DhGroupName : null;
        this.IKESaLifetimeSeconds = 'IKESaLifetimeSeconds' in params ? params.IKESaLifetimeSeconds : null;
        this.IKEVersion = 'IKEVersion' in params ? params.IKEVersion : null;
    }
}
/**
 * CreateCcn response structure.
 * @class
 */
class CreateCcnResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The CCN object.
         * @type {CCN || null}
         */
        this.Ccn = null;
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        if (params.Ccn) {
            let obj = new CCN();
            obj.deserialize(params.Ccn)
            this.Ccn = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * DescribeVpnConnections request structure.
 * @class
 */
class DescribeVpnConnectionsRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * The instance ID of the VPN tunnel, such as `vpnx-f49l6u0z`. Each request can have a maximum of 100 instances. `VpnConnectionIds` and `Filters` cannot be specified at the same time.
         * @type {Array.<string> || null}
         */
        this.VpnConnectionIds = null;
        /**
         * Filter condition. In each request, the upper limit for `Filters` is 10 and 5 for `Filter.Values`. `VpnConnectionIds` and `Filters` cannot be specified at the same time.
<li>vpc-id - String - VPC instance ID, such as `vpc-0a36uwkr`.</li>
<li>vpn-gateway-id - String - VPN gateway instance ID, such as `vpngw-p4lmqawn`.</li>
<li>customer-gateway-id - String - Customer gateway instance ID, such as `cgw-l4rblw63`.</li>
<li>vpn-connection-name - String - Connection name, such as `test-vpn`.</li>
<li>vpn-connection-id - String - Connection instance ID, such as `vpnx-5p7vkch8"`.</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;
        /**
         * The Offset. The default value is 0. For more information about Offset, see the relevant section in the API Introduction.
         * @type {number || null}
         */
        this.Offset = null;
        /**
         * Number of values to be returned. The default value is 20. Maximum is 100.
         * @type {number || null}
         */
        this.Limit = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VpnConnectionIds = 'VpnConnectionIds' in params ? params.VpnConnectionIds : null;
        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
    }
}
/**
 * CreateAssistantCidr request structure.
 * @class
 */
class CreateAssistantCidrRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * `VPC` instance `ID`, such as `vpc-6v2ht8q5`.
         * @type {string || null}
         */
        this.VpcId = null;
        /**
         * Array of CIDR blocks, such as ["10.0.0.0/16", "172.16.0.0/16"]
         * @type {Array.<string> || null}
         */
        this.CidrBlocks = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.CidrBlocks = 'CidrBlocks' in params ? params.CidrBlocks : null;
    }
}
/**
 * DescribeNetworkInterfaces request structure.
 * @class
 */
class DescribeNetworkInterfacesRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * Queries the ID of the ENI instance, such as `eni-pxir56ns`. Each request can have a maximum of 100 instances. `NetworkInterfaceIds` and `Filters` cannot be specified at the same time.
         * @type {Array.<string> || null}
         */
        this.NetworkInterfaceIds = null;
        /**
         * Filter. `NetworkInterfaceIds` and `Filters` cannot be specified at the same time.
<li>`vpc-id` - String - VPC ID, such as `vpc-f49l6u0z`. </li>
<li>`subnet-id` - String - Subnet ID, such as `subnet-f49l6u0z`. </li>
<li>`network-interface-id` - String - ENI ID, such as `eni-5k56k7k7`. </li>
<li>`attachment.instance-id` - String - ID of the bound CVM instance, such as `ins-3nqpdn3i`. </li>
<li>`groups.security-group-id` - String - ID of the bound security group, such as `sg-f9ekbxeq`. </li>
<li>`network-interface-name` - String - ENI instance name. </li>
<li>`network-interface-description` - String - ENI instance description. </li>
<li>`address-ip` - String - Private IPv4 address. A single IP will be fuzzily matched with the suffix, while multiple IPs will be exactly matched. It can be used with `ip-exact-match` to query and exactly match a single IP. </li>
<li>`ip-exact-match` - Boolean - Exact match by private IPv4 address. The first value will be returned if multiple values are found. </li>
<li>`tag-key` - String - Optional - Tag key. See Example 2 to learn more details. </li>
<li>`tag:tag-key` - String - Optional - Tag key-value pair. The `tag-key` should be replaced with a specific tag key. See Example 2 to learn more details. </li>
<li>`is-primary` - Boolean - Optional - Filter based on whether it is a primary ENI. Values: `true`, `false`. If this parameter is not specified, filter the both. </li>
<li>`eni-type` - String - Optional - Filter by ENI type. Values: `0` (Secondary ENI), `1` (Primary ENI), `2` (Relayed ENI) </li>
<li>`eni-qos` - String - Optional - Filter by ENI service level. Values: `AG` (Bronze), `AU` (Silver) </li>
<li>`address-ipv6` - String - Optional - Filter by private IPv6 address. Multiple IPv6 addresses can be used for query. If this field is used together with `address-ip`, their intersection will be used. </li>
<li>`public-address-ip` - String - Public IPv4 address. It supports exact matching. </li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;
        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;
        /**
         * Number of returned results. Default value: 20. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NetworkInterfaceIds = 'NetworkInterfaceIds' in params ? params.NetworkInterfaceIds : null;
        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
    }
}
/**
 * ReleaseIp6AddressesBandwidth response structure.
 * @class
 */
class ReleaseIp6AddressesBandwidthResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * Asynchronous task ID. You can call the [DescribeTaskResult](https://intl.cloud.tencent.com/document/api/215/36271?from_cn_redirect=1) API to query the task status.
         * @type {string || null}
         */
        this.TaskId = null;
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @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;
    }
}
/**
 * DescribeVpcIpv6Addresses request structure.
 * @class
 */
class DescribeVpcIpv6AddressesRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * The `ID` of the `VPC`, such as `vpc-f49l6u0z`.
         * @type {string || null}
         */
        this.VpcId = null;
        /**
         * The `IP` address list. Each request supports a maximum of `10` batch querying.
         * @type {Array.<string> || null}
         */
        this.Ipv6Addresses = null;
        /**
         * Offset.
         * @type {number || null}
         */
        this.Offset = null;
        /**
         * The returned quantity.
         * @type {number || null}
         */
        this.Limit = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.Ipv6Addresses = 'Ipv6Addresses' in params ? params.Ipv6Addresses : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
    }
}
/**
 * SNAT rule of a NAT Gateway
 * @class
 */
class SourceIpTranslationNatRule extends  AbstractModel {
    constructor(){
        super();
        /**
         * Resource ID. It can be left empty if `ResourceType` is `USERDEFINED`.
         * @type {string || null}
         */
        this.ResourceId = null;
        /**
         * Resource type. Valid values: `SUBNET`, `NETWORKINTERFACE`, `USERDEFINED`
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ResourceType = null;
        /**
         * Source IP/IP range
         * @type {string || null}
         */
        this.PrivateIpAddress = null;
        /**
         * Elastic IP address pool
         * @type {Array.<string> || null}
         */
        this.PublicIpAddresses = null;
        /**
         * Description
         * @type {string || null}
         */
        this.Description = null;
        /**
         * SNAT rule ID
         * @type {string || null}
         */
        this.NatGatewaySnatId = null;
        /**
         * NAT gateway ID.
Note: This field may return `null`, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.NatGatewayId = null;
        /**
         * VPC ID.
Note: This field may return `null`, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VpcId = null;
        /**
         * The creation time of a NAT gateway's SNAT rule.
Note: This field may return `null`, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CreatedTime = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.ResourceType = 'ResourceType' in params ? params.ResourceType : null;
        this.PrivateIpAddress = 'PrivateIpAddress' in params ? params.PrivateIpAddress : null;
        this.PublicIpAddresses = 'PublicIpAddresses' in params ? params.PublicIpAddresses : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.NatGatewaySnatId = 'NatGatewaySnatId' in params ? params.NatGatewaySnatId : null;
        this.NatGatewayId = 'NatGatewayId' in params ? params.NatGatewayId : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.CreatedTime = 'CreatedTime' in params ? params.CreatedTime : null;
    }
}
/**
 * DisableCcnRoutes request structure.
 * @class
 */
class DisableCcnRoutesRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * The CCN instance ID, such as `ccn-f49l6u0z`.
         * @type {string || null}
         */
        this.CcnId = null;
        /**
         * The unique ID of the CCN routing policy, such as `ccnr-f49l6u0z`.
         * @type {Array.<string> || null}
         */
        this.RouteIds = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CcnId = 'CcnId' in params ? params.CcnId : null;
        this.RouteIds = 'RouteIds' in params ? params.RouteIds : null;
    }
}
/**
 * ModifyNatGatewayDestinationIpPortTranslationNatRule response structure.
 * @class
 */
class ModifyNatGatewayDestinationIpPortTranslationNatRuleResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * ModifyNatGatewaySourceIpTranslationNatRule request structure.
 * @class
 */
class ModifyNatGatewaySourceIpTranslationNatRuleRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * The ID of the NAT Gateway, such as `nat-df453454`
         * @type {string || null}
         */
        this.NatGatewayId = null;
        /**
         * The SNAT forwarding rule of the NAT Gateway
         * @type {SourceIpTranslationNatRule || null}
         */
        this.SourceIpTranslationNatRule = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NatGatewayId = 'NatGatewayId' in params ? params.NatGatewayId : null;
        if (params.SourceIpTranslationNatRule) {
            let obj = new SourceIpTranslationNatRule();
            obj.deserialize(params.SourceIpTranslationNatRule)
            this.SourceIpTranslationNatRule = obj;
        }
    }
}
/**
 * SetVpnGatewaysRenewFlag request structure.
 * @class
 */
class SetVpnGatewaysRenewFlagRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * VPN gateway IDs
         * @type {Array.<string> || null}
         */
        this.VpnGatewayIds = null;
        /**
         * Status of auto-renewal
Values: `0` (Follow original), `1` (Enable auto-renewal), `2` (Disable auto-renewal) 
         * @type {number || null}
         */
        this.AutoRenewFlag = null;
        /**
         * VPNGW type: `IPSEC`, `SSL`
         * @type {string || null}
         */
        this.Type = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VpnGatewayIds = 'VpnGatewayIds' in params ? params.VpnGatewayIds : null;
        this.AutoRenewFlag = 'AutoRenewFlag' in params ? params.AutoRenewFlag : null;
        this.Type = 'Type' in params ? params.Type : null;
    }
}
/**
 * ModifyCcnRegionBandwidthLimitsType response structure.
 * @class
 */
class ModifyCcnRegionBandwidthLimitsTypeResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * DescribeVpnGateways response structure.
 * @class
 */
class DescribeVpnGatewaysResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The number of instances meeting the filter condition.
         * @type {number || null}
         */
        this.TotalCount = null;
        /**
         * The list of details of VPN gateway instances.
         * @type {Array.<VpnGateway> || null}
         */
        this.VpnGatewaySet = null;
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        if (params.VpnGatewaySet) {
            this.VpnGatewaySet = new Array();
            for (let z in params.VpnGatewaySet) {
                let obj = new VpnGateway();
                obj.deserialize(params.VpnGatewaySet[z]);
                this.VpnGatewaySet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * ModifyNetworkAclQuintupleEntries request structure.
 * @class
 */
class ModifyNetworkAclQuintupleEntriesRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * Network ACL instance ID, such as `acl-12345678`.
         * @type {string || null}
         */
        this.NetworkAclId = null;
        /**
         * Network ACL quintuple rule set.
         * @type {NetworkAclQuintupleEntries || null}
         */
        this.NetworkAclQuintupleSet = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NetworkAclId = 'NetworkAclId' in params ? params.NetworkAclId : null;
        if (params.NetworkAclQuintupleSet) {
            let obj = new NetworkAclQuintupleEntries();
            obj.deserialize(params.NetworkAclQuintupleSet)
            this.NetworkAclQuintupleSet = obj;
        }
    }
}
/**
 * ModifyServiceTemplateAttribute request structure.
 * @class
 */
class ModifyServiceTemplateAttributeRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * Protocol port template instance ID, such as `ppm-529nwwj8`.
         * @type {string || null}
         */
        this.ServiceTemplateId = null;
        /**
         * Protocol port template name.
         * @type {string || null}
         */
        this.ServiceTemplateName = null;
        /**
         * It supports single port, multiple ports, consecutive ports and all ports. Supported protocols include TCP, UDP, ICMP, and GRE.
         * @type {Array.<string> || null}
         */
        this.Services = null;
        /**
         * Protocol port information with remarks. Supported ports include single port, multiple ports, consecutive ports and other ports. Supported protocols include TCP, UDP, ICMP, and GRE.
         * @type {Array.<ServicesInfo> || null}
         */
        this.ServicesExtra = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ServiceTemplateId = 'ServiceTemplateId' in params ? params.ServiceTemplateId : null;
        this.ServiceTemplateName = 'ServiceTemplateName' in params ? params.ServiceTemplateName : null;
        this.Services = 'Services' in params ? params.Services : null;
        if (params.ServicesExtra) {
            this.ServicesExtra = new Array();
            for (let z in params.ServicesExtra) {
                let obj = new ServicesInfo();
                obj.deserialize(params.ServicesExtra[z]);
                this.ServicesExtra.push(obj);
            }
        }
    }
}
/**
 * Security group policy object
 * @class
 */
class SecurityGroupPolicy extends  AbstractModel {
    constructor(){
        super();
        /**
         * The index number of security group rules, which dynamically changes with the rules. This parameter can be obtained via the `DescribeSecurityGroupPolicies` API and used with the `Version` field in the returned value of the API.
         * @type {number || null}
         */
        this.PolicyIndex = null;
        /**
         * Protocol. Valid values: TCP, UDP, ICMP, ICMPv6, ALL.
         * @type {string || null}
         */
        this.Protocol = null;
        /**
         * Port (`all`, a single port, or a port range).
Note: If the `Protocol` value is set to `ALL`, the `Port` value also needs to be set to `all`.
         * @type {string || null}
         */
        this.Port = null;
        /**
         * Protocol port ID or protocol port group ID. ServiceTemplate and Protocol+Port are mutually exclusive.
         * @type {ServiceTemplateSpecification || null}
         */
        this.ServiceTemplate = null;
        /**
         * Either `CidrBlock` or `Ipv6CidrBlock can be specified. Note that if `0.0.0.0/n` is entered, it is mapped to 0.0.0.0/0.
         * @type {string || null}
         */
        this.CidrBlock = null;
        /**
         * The CIDR block or IPv6 (mutually exclusive).
         * @type {string || null}
         */
        this.Ipv6CidrBlock = null;
        /**
         * The security group instance ID, such as `sg-ohuuioma`.
         * @type {string || null}
         */
        this.SecurityGroupId = null;
        /**
         * IP address ID or IP address group ID.
         * @type {AddressTemplateSpecification || null}
         */
        this.AddressTemplate = null;
        /**
         * ACCEPT or DROP.
         * @type {string || null}
         */
        this.Action = null;
        /**
         * Security group policy description.
         * @type {string || null}
         */
        this.PolicyDescription = null;
        /**
         * The last modification time of the security group.
         * @type {string || null}
         */
        this.ModifyTime = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PolicyIndex = 'PolicyIndex' in params ? params.PolicyIndex : null;
        this.Protocol = 'Protocol' in params ? params.Protocol : null;
        this.Port = 'Port' in params ? params.Port : null;
        if (params.ServiceTemplate) {
            let obj = new ServiceTemplateSpecification();
            obj.deserialize(params.ServiceTemplate)
            this.ServiceTemplate = obj;
        }
        this.CidrBlock = 'CidrBlock' in params ? params.CidrBlock : null;
        this.Ipv6CidrBlock = 'Ipv6CidrBlock' in params ? params.Ipv6CidrBlock : null;
        this.SecurityGroupId = 'SecurityGroupId' in params ? params.SecurityGroupId : null;
        if (params.AddressTemplate) {
            let obj = new AddressTemplateSpecification();
            obj.deserialize(params.AddressTemplate)
            this.AddressTemplate = obj;
        }
        this.Action = 'Action' in params ? params.Action : null;
        this.PolicyDescription = 'PolicyDescription' in params ? params.PolicyDescription : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
    }
}
/**
 * DescribeIpGeolocationInfos request structure.
 * @class
 */
class DescribeIpGeolocationInfosRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * The list of IP addresses (only IPv4 addresses are available currently) to be queried; upper limit: 100
         * @type {Array.<string> || null}
         */
        this.AddressIps = null;
        /**
         * Fields of the IP addresses to be queried.
         * @type {IpField || null}
         */
        this.Fields = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AddressIps = 'AddressIps' in params ? params.AddressIps : null;
        if (params.Fields) {
            let obj = new IpField();
            obj.deserialize(params.Fields)
            this.Fields = obj;
        }
    }
}
/**
 * ResetAttachCcnInstances response structure.
 * @class
 */
class ResetAttachCcnInstancesResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * CreateSnapshotPolicies response structure.
 * @class
 */
class CreateSnapshotPoliciesResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * Snapshot policies
         * @type {Array.<SnapshotPolicy> || null}
         */
        this.SnapshotPolicies = null;
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        if (params.SnapshotPolicies) {
            this.SnapshotPolicies = new Array();
            for (let z in params.SnapshotPolicies) {
                let obj = new SnapshotPolicy();
                obj.deserialize(params.SnapshotPolicies[z]);
                this.SnapshotPolicies.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * DescribeServiceTemplateGroups response structure.
 * @class
 */
class DescribeServiceTemplateGroupsResponse extends  AbstractModel {
    constructor(){
        super();
        /**
         * The number of instances meeting the filter condition.
         * @type {number || null}
         */
        this.TotalCount = null;
        /**
         * Protocol port template group.
         * @type {Array.<ServiceTemplateGroup> || null}
         */
        this.ServiceTemplateGroupSet = null;
        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        if (params.ServiceTemplateGroupSet) {
            this.ServiceTemplateGroupSet = new Array();
            for (let z in params.ServiceTemplateGroupSet) {
                let obj = new ServiceTemplateGroup();
                obj.deserialize(params.ServiceTemplateGroupSet[z]);
                this.ServiceTemplateGroupSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
    }
}
/**
 * DescribeVpcEndPoint request structure.
 * @class
 */
class DescribeVpcEndPointRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * Filter condition
<li> end-point-service-id - String - (Filter condition) Endpoint service ID.</li>
<li>end-point-name - String - (Filter condition) Endpoint instance name.</li>
<li> end-point-id - String - (Filter condition) Endpoint instance ID.</li>
<li> vpc-id - String - (Filter condition) VPC instance ID.</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;
        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;
        /**
         * Number of results per page; default value: 20; maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;
        /**
         * Endpoint ID list
         * @type {Array.<string> || null}
         */
        this.EndPointId = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.EndPointId = 'EndPointId' in params ? params.EndPointId : null;
    }
}
/**
 * AssignPrivateIpAddresses request structure.
 * @class
 */
class AssignPrivateIpAddressesRequest extends  AbstractModel {
    constructor(){
        super();
        /**
         * The ID of the ENI instance, such as `eni-m6dyj72l`.
         * @type {string || null}
         */
        this.NetworkInterfaceId = null;
        /**
         * The information on private IP addresses, of which you can specify a maximum of 10 at a time. You should provide either this parameter or SecondaryPrivateIpAddressCount, or both.
         * @type {Array.<PrivateIpAddressSpecification> || null}
         */
        this.PrivateIpAddresses = null;
        /**
         * The number of newly-applied private IP addresses. You should provide either this parameter or PrivateIpAddresses, or both. The total number of private IP addresses cannot exceed the quota. For more information, see<a href="/document/product/576/18527">ENI Use Limits</a>.
         * @type {number || null}
         */
        this.SecondaryPrivateIpAddressCount = null;
        /**
         * IP service level. It is used together with `SecondaryPrivateIpAddressCount`. Values: PT` (Gold), `AU` (Silver), `AG `(Bronze) and DEFAULT (Default).
         * @type {string || null}
         */
        this.QosLevel = null;
        /**
         * 
         * @type {string || null}
         */
        this.ClientToken = null;
    }
    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NetworkInterfaceId = 'NetworkInterfaceId' in params ? params.NetworkInterfaceId : null;
        if (params.PrivateIpAddresses) {
            this.PrivateIpAddresses = new Array();
            for (let z in params.PrivateIpAddresses) {
                let obj = new PrivateIpAddressSpecification();
                obj.deserialize(params.PrivateIpAddresses[z]);
                this.PrivateIpAddresses.push(obj);
            }
        }
        this.SecondaryPrivateIpAddressCount = 'SecondaryPrivateIpAddressCount' in params ? params.SecondaryPrivateIpAddressCount : null;
        this.QosLevel = 'QosLevel' in params ?