// Copyright (c) 2017-2025 Tencent. 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.

package v20230417

import (
    tcerr "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/errors"
    tchttp "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/http"
    "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/json"
)

type AvailableZoneAffinityInfo struct {
	// Whether to enable availability zone forwarding affinity. true: enable availability zone forwarding affinity; false: enable availability zone forwarding affinity.
	Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"`

	// The availability zone forwarding affinity failure threshold. When the healthy ratio of backend services in an availability zone is less than this threshold, the Cloud Load Balancer will exit availability zone forwarding affinity and convert to forwarding across all availability zones.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExitRatio *uint64 `json:"ExitRatio,omitnil,omitempty" name:"ExitRatio"`

	// The threshold for re-enabling availability zone forwarding affinity. When forwarding is in all availability zones and the proportion of healthy backend services in the Cloud Load Balancer availability zone is greater than or equal to this threshold, the CLB will enter availability zone forwarding affinity again.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ReentryRatio *uint64 `json:"ReentryRatio,omitnil,omitempty" name:"ReentryRatio"`
}

// Predefined struct for user
type BatchModifyTargetWeightRequestParams struct {
	// CLB instance ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// List of weights to be modified in batches.
	ModifyList []*RsWeightRule `json:"ModifyList,omitnil,omitempty" name:"ModifyList"`
}

type BatchModifyTargetWeightRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// List of weights to be modified in batches.
	ModifyList []*RsWeightRule `json:"ModifyList,omitnil,omitempty" name:"ModifyList"`
}

func (r *BatchModifyTargetWeightRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *BatchModifyTargetWeightRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerId")
	delete(f, "ModifyList")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "BatchModifyTargetWeightRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type BatchModifyTargetWeightResponseParams struct {
	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type BatchModifyTargetWeightResponse struct {
	*tchttp.BaseResponse
	Response *BatchModifyTargetWeightResponseParams `json:"Response"`
}

func (r *BatchModifyTargetWeightResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *BatchModifyTargetWeightResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type BindDetailItem struct {
	// ID of the CLB instance bound to the configuration
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the listener bound to the configuration
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Domain name bound to the configuration
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule bound to the configuration
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Listener name
	// Note: This field may return null, indicating that no valid values can be obtained.
	ListenerName *string `json:"ListenerName,omitnil,omitempty" name:"ListenerName"`

	// Listener protocol
	// Note: This field may return null, indicating that no valid values can be obtained.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Listener port
	// Note: This field may return null, indicating that no valid values can be obtained.
	Vport *int64 `json:"Vport,omitnil,omitempty" name:"Vport"`

	// Location URL
	// Note: This field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Configuration ID
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`
}

type CertIdRelatedWithLoadBalancers struct {
	// Certificate ID
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// List of CLB instances associated with the certificate
	LoadBalancers []*LoadBalancer `json:"LoadBalancers,omitnil,omitempty" name:"LoadBalancers"`
}

type ClassicalListener struct {
	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// CLB listener port
	ListenerPort *int64 `json:"ListenerPort,omitnil,omitempty" name:"ListenerPort"`

	// Listener backend forwarding port
	InstancePort *int64 `json:"InstancePort,omitnil,omitempty" name:"InstancePort"`

	// listener name
	ListenerName *string `json:"ListenerName,omitnil,omitempty" name:"ListenerName"`

	// Listener protocol type
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Session hold time
	SessionExpire *int64 `json:"SessionExpire,omitnil,omitempty" name:"SessionExpire"`

	// Whether health check is enabled. 1: Enabled; 0: Disabled
	HealthSwitch *int64 `json:"HealthSwitch,omitnil,omitempty" name:"HealthSwitch"`

	// Response timeout duration
	TimeOut *int64 `json:"TimeOut,omitnil,omitempty" name:"TimeOut"`

	// check interval
	IntervalTime *int64 `json:"IntervalTime,omitnil,omitempty" name:"IntervalTime"`

	// health threshold
	HealthNum *int64 `json:"HealthNum,omitnil,omitempty" name:"HealthNum"`

	// unhealthy threshold
	AbnormalNum *int64 `json:"AbnormalNum,omitnil,omitempty" name:"AbnormalNum"`

	// Request balancing method for listeners of the classic public network CLB. An empty string or wrr indicates weighted round robin. ip_hash indicates consistent hashing based on the accessed source IP address. least_conn indicates least connections.
	HttpHash *string `json:"HttpHash,omitnil,omitempty" name:"HttpHash"`

	// Health check return code for HTTP and HTTPS listeners of a public network Classic CLB instance. For more information, refer to the explanation of this field in the listener creation API.
	HttpCode *int64 `json:"HttpCode,omitnil,omitempty" name:"HttpCode"`

	// Health check path for HTTP and HTTPS listeners of a public network Classic CLB instance
	HttpCheckPath *string `json:"HttpCheckPath,omitnil,omitempty" name:"HttpCheckPath"`

	// Authentication method for an HTTPS listener of a public network Classic CLB instance
	SSLMode *string `json:"SSLMode,omitnil,omitempty" name:"SSLMode"`

	// Server certificate ID for an HTTPS listener of a public network Classic CLB instance
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// Client certificate ID for an HTTPS listener of a public network Classic CLB instance
	CertCaId *string `json:"CertCaId,omitnil,omitempty" name:"CertCaId"`

	// Listener status. 0: Creating; 1: Running
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

// Predefined struct for user
type CloneLoadBalancerRequestParams struct {
	// CLB ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// The name of the cloned CLB instance. Rule: 1-60 English letters, Chinese characters, digits, hyphens "-", or underscores "_".
	// Note: If the name is the same as an existing Cloud Load Balancer instance in the system, the system will automatically generate the name of the created CLB instance.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// The project ID associated with the Cloud Load Balancer instance can be obtained through the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API. If this parameter is not specified, it will be used as the default project.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Applicable only to public network CLB. Sets the primary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.
	// Note: The primary AZ loads traffic, while the secondary AZ does not load traffic by default and is used only if the primary AZ becomes unavailable. The platform will automatically select the optimal secondary AZ. You can call the [DescribeResources](https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1) API to query the primary AZ list of a region.
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// Applicable only to public network CLB. Sets the secondary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.
	// Note: The secondary AZ sustains traffic when the primary AZ encounters faults. You can call the [DescribeResources](https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1) API to query the list of primary/secondary AZs in a region.
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// Applicable only to public network CLB. Availability zone ID. Specify an availability zone to create a Cloud Load Balancer instance, for example, ap-guangzhou-1. If not specified, queries CVM instances in all AZs. If needed, call the DescribeZones API (https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1) to query the availability zone list.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// CLB network billing mode, applicable only to public network CLB instances.
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// It only applies to public CLB. Currently, the static single-line IP type is supported only for the regions of Guangzhou, Shanghai, Nanjing, Jinan, Hangzhou, Fuzhou, Beijing, Shijiazhuang, Wuhan, Changsha, Chengdu, and Chongqing. If you need to experience it, contact your business manager. After approval, you can select the ISP type as China Mobile (CMCC), China Unicom (CUCC), or China Telecom (CTCC). The network billing mode should be selected as billing by bandwidth package (BANDWIDTH_PACKAGE). If this parameter is not specified, BGP is used by default. You can use the DescribeResources API to query ISPs supported for a region.
	VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"`

	// Designate a Vip to apply for Cloud Load Balancer.
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// When you purchase Cloud Load Balancer (CLB), you can tag it.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Exclusive cluster information.
	ExclusiveCluster *ExclusiveCluster `json:"ExclusiveCluster,omitnil,omitempty" name:"ExclusiveCluster"`

	// Bandwidth package ID. If this parameter is specified, the network billing mode (InternetAccessible.InternetChargeType) supports only billing by bandwidth package (BANDWIDTH_PACKAGE).
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

	// Whether to support the feature of binding IP addresses across regions/VPCs.
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// SNAT IP addresses to be created when the feature of cross-region/cross-VPC IP address binding is enabled.
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Public network exclusive cluster ID or CDCId.
	ClusterIds []*string `json:"ClusterIds,omitnil,omitempty" name:"ClusterIds"`

	// Performance capacity specification.<li>clb.c2.medium (standard type)</li><li>clb.c3.small (advanced type 1)</li><li>clb.c3.medium (advanced type 2)</li><li>clb.c4.small (high-strength type 1)</li><li>clb.c4.medium (high-strength type 2)</li><li>clb.c4.large (high-strength type 3)</li><li>clb.c4.xlarge (high-strength type 4)</li>
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// Exclusive STGW cluster tag.
	ClusterTag *string `json:"ClusterTag,omitnil,omitempty" name:"ClusterTag"`

	// Applicable only to private network CLB. When connected to nearby via private network, select availability zone for deployment. You can call the [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1) API to query the availability zone list.
	Zones []*string `json:"Zones,omitnil,omitempty" name:"Zones"`

	// Unique ID of an EIP, in the format of eip-11112222, which is applicable only for binding EIP to private network CLB.
	EipAddressId *string `json:"EipAddressId,omitnil,omitempty" name:"EipAddressId"`
}

type CloneLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// CLB ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// The name of the cloned CLB instance. Rule: 1-60 English letters, Chinese characters, digits, hyphens "-", or underscores "_".
	// Note: If the name is the same as an existing Cloud Load Balancer instance in the system, the system will automatically generate the name of the created CLB instance.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// The project ID associated with the Cloud Load Balancer instance can be obtained through the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API. If this parameter is not specified, it will be used as the default project.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Applicable only to public network CLB. Sets the primary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.
	// Note: The primary AZ loads traffic, while the secondary AZ does not load traffic by default and is used only if the primary AZ becomes unavailable. The platform will automatically select the optimal secondary AZ. You can call the [DescribeResources](https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1) API to query the primary AZ list of a region.
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// Applicable only to public network CLB. Sets the secondary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.
	// Note: The secondary AZ sustains traffic when the primary AZ encounters faults. You can call the [DescribeResources](https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1) API to query the list of primary/secondary AZs in a region.
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// Applicable only to public network CLB. Availability zone ID. Specify an availability zone to create a Cloud Load Balancer instance, for example, ap-guangzhou-1. If not specified, queries CVM instances in all AZs. If needed, call the DescribeZones API (https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1) to query the availability zone list.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// CLB network billing mode, applicable only to public network CLB instances.
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// It only applies to public CLB. Currently, the static single-line IP type is supported only for the regions of Guangzhou, Shanghai, Nanjing, Jinan, Hangzhou, Fuzhou, Beijing, Shijiazhuang, Wuhan, Changsha, Chengdu, and Chongqing. If you need to experience it, contact your business manager. After approval, you can select the ISP type as China Mobile (CMCC), China Unicom (CUCC), or China Telecom (CTCC). The network billing mode should be selected as billing by bandwidth package (BANDWIDTH_PACKAGE). If this parameter is not specified, BGP is used by default. You can use the DescribeResources API to query ISPs supported for a region.
	VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"`

	// Designate a Vip to apply for Cloud Load Balancer.
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// When you purchase Cloud Load Balancer (CLB), you can tag it.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Exclusive cluster information.
	ExclusiveCluster *ExclusiveCluster `json:"ExclusiveCluster,omitnil,omitempty" name:"ExclusiveCluster"`

	// Bandwidth package ID. If this parameter is specified, the network billing mode (InternetAccessible.InternetChargeType) supports only billing by bandwidth package (BANDWIDTH_PACKAGE).
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

	// Whether to support the feature of binding IP addresses across regions/VPCs.
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// SNAT IP addresses to be created when the feature of cross-region/cross-VPC IP address binding is enabled.
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Public network exclusive cluster ID or CDCId.
	ClusterIds []*string `json:"ClusterIds,omitnil,omitempty" name:"ClusterIds"`

	// Performance capacity specification.<li>clb.c2.medium (standard type)</li><li>clb.c3.small (advanced type 1)</li><li>clb.c3.medium (advanced type 2)</li><li>clb.c4.small (high-strength type 1)</li><li>clb.c4.medium (high-strength type 2)</li><li>clb.c4.large (high-strength type 3)</li><li>clb.c4.xlarge (high-strength type 4)</li>
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// Exclusive STGW cluster tag.
	ClusterTag *string `json:"ClusterTag,omitnil,omitempty" name:"ClusterTag"`

	// Applicable only to private network CLB. When connected to nearby via private network, select availability zone for deployment. You can call the [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1) API to query the availability zone list.
	Zones []*string `json:"Zones,omitnil,omitempty" name:"Zones"`

	// Unique ID of an EIP, in the format of eip-11112222, which is applicable only for binding EIP to private network CLB.
	EipAddressId *string `json:"EipAddressId,omitnil,omitempty" name:"EipAddressId"`
}

func (r *CloneLoadBalancerRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CloneLoadBalancerRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerId")
	delete(f, "LoadBalancerName")
	delete(f, "ProjectId")
	delete(f, "MasterZoneId")
	delete(f, "SlaveZoneId")
	delete(f, "ZoneId")
	delete(f, "InternetAccessible")
	delete(f, "VipIsp")
	delete(f, "Vip")
	delete(f, "Tags")
	delete(f, "ExclusiveCluster")
	delete(f, "BandwidthPackageId")
	delete(f, "SnatPro")
	delete(f, "SnatIps")
	delete(f, "ClusterIds")
	delete(f, "SlaType")
	delete(f, "ClusterTag")
	delete(f, "Zones")
	delete(f, "EipAddressId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CloneLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CloneLoadBalancerResponseParams struct {
	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CloneLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *CloneLoadBalancerResponseParams `json:"Response"`
}

func (r *CloneLoadBalancerResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CloneLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type ClusterItem struct {
	// Cluster unique ID.
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Cluster name.
	ClusterName *string `json:"ClusterName,omitnil,omitempty" name:"ClusterName"`

	// AZ of the cluster, such as ap-guangzhou-1
	// Note: This field may return null, indicating that no valid values can be obtained.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`
}

type ConfigListItem struct {
	// Configuration ID
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// Configuration type
	ConfigType *string `json:"ConfigType,omitnil,omitempty" name:"ConfigType"`

	// Configuration name
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Configuration content
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`

	// Configuration creation time
	CreateTimestamp *string `json:"CreateTimestamp,omitnil,omitempty" name:"CreateTimestamp"`

	// Configuration modification time
	UpdateTimestamp *string `json:"UpdateTimestamp,omitnil,omitempty" name:"UpdateTimestamp"`

	// Tag.
	Tag []*TagInfo `json:"Tag,omitnil,omitempty" name:"Tag"`
}

// Predefined struct for user
type CreateLoadBalancerRequestParams struct {
	// <p>Network type of the Cloud Load Balancer instance:<br>OPEN: public network attribute, INTERNAL: private network attribute.</p>
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// <p>Type of the Cloud Load Balancer instance. 1: Common Cloud Load Balancer instance. Currently only support input 1.</p>
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// <p>The name of a Cloud Load Balancer instance takes effect only when creating an instance. Rule: 1-80 characters in internationally compatible languages, including English letters, Chinese characters, digits, hyphens "-", underscores "_", and other common characters (Unicode supplementary characters such as emojis and rare Chinese characters are forbidden). Note: If the name is identical to that of an existing Cloud Load Balancer instance in the system, the system will automatically generate a name for the newly created CLB instance.</p>
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// <p>The network ID of the backend target device belonging to the Cloud Load Balancer, such as vpc-12345678, can be obtained through the <a href="https://www.tencentcloud.com/document/product/215/15778?from_cn_redirect=1">DescribeVpcs</a> API. It defaults to DefaultVPC if this parameter is not specified. This parameter is required when creating a private network CLB instance.</p>
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// <p>A subnet ID must be specified when you purchase a private network CLB instance under a VPC. The VIP of the private network CLB instance is generated in this subnet. This parameter is required when you create a private network CLB instance but not supported when you create a public network IPv4 CLB instance.</p>
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// <p>The project ID associated with the Cloud Load Balancer instance can be obtained through the <a href="https://www.tencentcloud.com/document/api/651/78725?from_cn_redirect=1">DescribeProject</a> API. If this parameter is left blank, it will be used as the default project.</p>
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// <p>Applicable only to public network CLB. IP version, valid values: IPV4, IPV6, IPv6FullChain, case-insensitive, default value IPV4. Description: A value of IPV6 means IPV6 NAT64 version; a value of IPv6FullChain means IPv6 version.</p>
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// <p>Count of Cloud Load Balancers to create. Default value: 1.</p>
	Number *uint64 `json:"Number,omitnil,omitempty" name:"Number"`

	// <p>Applicable only to public network IPv4 Cloud Load Balancer. Sets the primary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.<br>Note: The primary AZ loads traffic. The secondary AZ does not load traffic by default and is used only if the primary AZ becomes unavailable. Currently, primary and secondary AZs are supported only for IPv4 CLB instances in Guangzhou, Shanghai, Nanjing, Beijing, Chengdu, Shenzhen Finance, Hong Kong (China), Seoul, Frankfurt, and Singapore regions. You can call the <a href="https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1">DescribeResources</a> API to query the primary AZ list of a region. [If you need to experience this feature, submit a ticket](https://console.cloud.tencent.com/workorder/category).</p>
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// <p>Applicable only to public network load balancing with IPv4 version. Availability zone ID. Designated availability zone to create a CLB instance, for example: ap-guangzhou-1.</p>
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// <p>Maximum outbound bandwidth under the network billing mode. It applies only to LCU-supported instances of the private network type and all instances of the public network type.</p>
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// <p>Applicable only to public network CLB. Currently, static single-line IP type is supported in Guangzhou, Shanghai, Nanjing, Jinan, Hangzhou, Fuzhou, Beijing, Shijiazhuang, Wuhan, Changsha, Chengdu, and Chongqing regions. If you need to experience it, contact business manager to submit a request. After approval, just select CMCC, CUCC, or CTCC as the operator type. Only can be used BANDWIDTH_PACKAGE for network billing mode. If this parameter is not specified, use BGP by default. You can check ISPs supported in a region via the <a href="https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1">DescribeResources</a> api query.</p>
	VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"`

	// <p>When you purchase Cloud Load Balancer (CLB), you can tag it with up to 20 tag key-value pairs.</p>
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// <p>Apply for a Cloud Load Balancer with a designated VIP. This parameter is optional. If this parameter is not specified, the VIP is assigned by system. This parameter is supported for IPv4 and IPv6 types but unsupported for IPv6 NAT64 type.<br>Note: When specifying a VIP to create a private network instance or a public IPv6 BGP instance, creation fails if the VIP is not within the specified VPC subnet or if the VIP is already occupied.</p>
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// <p>Bandwidth package ID. If this parameter is specified, the network billing mode (InternetAccessible.InternetChargeType) will only support billing by bandwidth package (BANDWIDTH_PACKAGE). The attributes of the bandwidth package determine the settlement method. For IPv6 CLB instances purchased by non-promoted users, if the ISP type is not BGP, the bandwidth package ID cannot be specified.</p>
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

	// <p>Dedicated instance info. This parameter is required when creating a private network CLB instance of exclusive type.</p>
	ExclusiveCluster *ExclusiveCluster `json:"ExclusiveCluster,omitnil,omitempty" name:"ExclusiveCluster"`

	// <p>Performance capacity specification.</p><ul><li>If you need to create an LCU-supported instance, this parameter is required. Valid values:<ul><li> clb.c2.medium: Standard </li><li> clb.c3.small: Advanced 1 </li><li> clb.c3.medium: Advanced 2 </li><li> clb.c4.small: Super Large 1 </li><li> clb.c4.medium: Super Large 2 </li><li> clb.c4.large: Super Large 3 </li><li> clb.c4.xlarge: Super Large 4 </li></ul></li><li>For domestic site users, this parameter is not required when creating a shared instance. For international site users, the default purchased instance is standard if this parameter is not passed.</li></ul> For specification details, see [Instance Specifications Comparison](https://www.tencentcloud.com/document/product/214/84689?from_cn_redirect=1).
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// <p>A string used to ensure request idempotency. This string is generated by the customer and must be unique among different requests, with a maximum value of no more than 64 ASCII characters. If not specified, request idempotency cannot be guaranteed.</p>
	ClientToken *string `json:"ClientToken,omitnil,omitempty" name:"ClientToken"`

	// <p>Whether the cross-regional or cross-Vpc IP binding feature is supported.</p>
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// <p>After enabling the cross-regional/cross-Vpc IP binding feature, create a SnatIp.</p>
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// <p>Tag of the Stgw exclusive cluster.</p>
	ClusterTag *string `json:"ClusterTag,omitnil,omitempty" name:"ClusterTag"`

	// <p>Applicable only to public network load balancing with IPv4 version. Sets the secondary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.<br>Note: The secondary AZ is the availability zone that needs to carry traffic after primary availability zone failure. You can query a region's list of primary/secondary AZs via the <a href="https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1">DescribeResources</a> API. [If you need to trial the feature, submit a <a href="https://console.cloud.tencent.com/workorder/category">ticket application</a>]</p>
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// <p>Unique ID of EIP, such as eip-11112222, applicable only to private network CLB to bind EIP.</p>
	EipAddressId *string `json:"EipAddressId,omitnil,omitempty" name:"EipAddressId"`

	// <p>Allow CLB traffic to the Target. Enable (true): verify security groups on CLB; deny CLB traffic to the Target (false): verify security groups on both CLB and backend instances.</p>
	LoadBalancerPassToTarget *bool `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	// <p>Network outbound</p>
	Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"`

	// <p>Prepaid billing attributes of the Cloud Load Balancer instance</p>
	LBChargePrepaid *LBChargePrepaid `json:"LBChargePrepaid,omitnil,omitempty" name:"LBChargePrepaid"`

	// <p>Billing type of the CLB instance. Valid values: POSTPAID_BY_HOUR and PREPAID. Default value: POSTPAID_BY_HOUR.</p>
	LBChargeType *string `json:"LBChargeType,omitnil,omitempty" name:"LBChargeType"`

	// <p>L7 access log topic ID</p>
	AccessLogTopicId *string `json:"AccessLogTopicId,omitnil,omitempty" name:"AccessLogTopicId"`

	// <p>Whether layer-7 advanced routing is enabled</p>
	AdvancedRoute *bool `json:"AdvancedRoute,omitnil,omitempty" name:"AdvancedRoute"`

	// <p>Availability zone affinity info</p>
	AvailableZoneAffinityInfo *AvailableZoneAffinityInfo `json:"AvailableZoneAffinityInfo,omitnil,omitempty" name:"AvailableZoneAffinityInfo"`
}

type CreateLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// <p>Network type of the Cloud Load Balancer instance:<br>OPEN: public network attribute, INTERNAL: private network attribute.</p>
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// <p>Type of the Cloud Load Balancer instance. 1: Common Cloud Load Balancer instance. Currently only support input 1.</p>
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// <p>The name of a Cloud Load Balancer instance takes effect only when creating an instance. Rule: 1-80 characters in internationally compatible languages, including English letters, Chinese characters, digits, hyphens "-", underscores "_", and other common characters (Unicode supplementary characters such as emojis and rare Chinese characters are forbidden). Note: If the name is identical to that of an existing Cloud Load Balancer instance in the system, the system will automatically generate a name for the newly created CLB instance.</p>
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// <p>The network ID of the backend target device belonging to the Cloud Load Balancer, such as vpc-12345678, can be obtained through the <a href="https://www.tencentcloud.com/document/product/215/15778?from_cn_redirect=1">DescribeVpcs</a> API. It defaults to DefaultVPC if this parameter is not specified. This parameter is required when creating a private network CLB instance.</p>
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// <p>A subnet ID must be specified when you purchase a private network CLB instance under a VPC. The VIP of the private network CLB instance is generated in this subnet. This parameter is required when you create a private network CLB instance but not supported when you create a public network IPv4 CLB instance.</p>
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// <p>The project ID associated with the Cloud Load Balancer instance can be obtained through the <a href="https://www.tencentcloud.com/document/api/651/78725?from_cn_redirect=1">DescribeProject</a> API. If this parameter is left blank, it will be used as the default project.</p>
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// <p>Applicable only to public network CLB. IP version, valid values: IPV4, IPV6, IPv6FullChain, case-insensitive, default value IPV4. Description: A value of IPV6 means IPV6 NAT64 version; a value of IPv6FullChain means IPv6 version.</p>
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// <p>Count of Cloud Load Balancers to create. Default value: 1.</p>
	Number *uint64 `json:"Number,omitnil,omitempty" name:"Number"`

	// <p>Applicable only to public network IPv4 Cloud Load Balancer. Sets the primary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.<br>Note: The primary AZ loads traffic. The secondary AZ does not load traffic by default and is used only if the primary AZ becomes unavailable. Currently, primary and secondary AZs are supported only for IPv4 CLB instances in Guangzhou, Shanghai, Nanjing, Beijing, Chengdu, Shenzhen Finance, Hong Kong (China), Seoul, Frankfurt, and Singapore regions. You can call the <a href="https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1">DescribeResources</a> API to query the primary AZ list of a region. [If you need to experience this feature, submit a ticket](https://console.cloud.tencent.com/workorder/category).</p>
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// <p>Applicable only to public network load balancing with IPv4 version. Availability zone ID. Designated availability zone to create a CLB instance, for example: ap-guangzhou-1.</p>
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// <p>Maximum outbound bandwidth under the network billing mode. It applies only to LCU-supported instances of the private network type and all instances of the public network type.</p>
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// <p>Applicable only to public network CLB. Currently, static single-line IP type is supported in Guangzhou, Shanghai, Nanjing, Jinan, Hangzhou, Fuzhou, Beijing, Shijiazhuang, Wuhan, Changsha, Chengdu, and Chongqing regions. If you need to experience it, contact business manager to submit a request. After approval, just select CMCC, CUCC, or CTCC as the operator type. Only can be used BANDWIDTH_PACKAGE for network billing mode. If this parameter is not specified, use BGP by default. You can check ISPs supported in a region via the <a href="https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1">DescribeResources</a> api query.</p>
	VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"`

	// <p>When you purchase Cloud Load Balancer (CLB), you can tag it with up to 20 tag key-value pairs.</p>
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// <p>Apply for a Cloud Load Balancer with a designated VIP. This parameter is optional. If this parameter is not specified, the VIP is assigned by system. This parameter is supported for IPv4 and IPv6 types but unsupported for IPv6 NAT64 type.<br>Note: When specifying a VIP to create a private network instance or a public IPv6 BGP instance, creation fails if the VIP is not within the specified VPC subnet or if the VIP is already occupied.</p>
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// <p>Bandwidth package ID. If this parameter is specified, the network billing mode (InternetAccessible.InternetChargeType) will only support billing by bandwidth package (BANDWIDTH_PACKAGE). The attributes of the bandwidth package determine the settlement method. For IPv6 CLB instances purchased by non-promoted users, if the ISP type is not BGP, the bandwidth package ID cannot be specified.</p>
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

	// <p>Dedicated instance info. This parameter is required when creating a private network CLB instance of exclusive type.</p>
	ExclusiveCluster *ExclusiveCluster `json:"ExclusiveCluster,omitnil,omitempty" name:"ExclusiveCluster"`

	// <p>Performance capacity specification.</p><ul><li>If you need to create an LCU-supported instance, this parameter is required. Valid values:<ul><li> clb.c2.medium: Standard </li><li> clb.c3.small: Advanced 1 </li><li> clb.c3.medium: Advanced 2 </li><li> clb.c4.small: Super Large 1 </li><li> clb.c4.medium: Super Large 2 </li><li> clb.c4.large: Super Large 3 </li><li> clb.c4.xlarge: Super Large 4 </li></ul></li><li>For domestic site users, this parameter is not required when creating a shared instance. For international site users, the default purchased instance is standard if this parameter is not passed.</li></ul> For specification details, see [Instance Specifications Comparison](https://www.tencentcloud.com/document/product/214/84689?from_cn_redirect=1).
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// <p>A string used to ensure request idempotency. This string is generated by the customer and must be unique among different requests, with a maximum value of no more than 64 ASCII characters. If not specified, request idempotency cannot be guaranteed.</p>
	ClientToken *string `json:"ClientToken,omitnil,omitempty" name:"ClientToken"`

	// <p>Whether the cross-regional or cross-Vpc IP binding feature is supported.</p>
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// <p>After enabling the cross-regional/cross-Vpc IP binding feature, create a SnatIp.</p>
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// <p>Tag of the Stgw exclusive cluster.</p>
	ClusterTag *string `json:"ClusterTag,omitnil,omitempty" name:"ClusterTag"`

	// <p>Applicable only to public network load balancing with IPv4 version. Sets the secondary AZ ID for cross-AZ disaster recovery, such as 100001 or ap-guangzhou-1.<br>Note: The secondary AZ is the availability zone that needs to carry traffic after primary availability zone failure. You can query a region's list of primary/secondary AZs via the <a href="https://www.tencentcloud.com/document/api/214/70213?from_cn_redirect=1">DescribeResources</a> API. [If you need to trial the feature, submit a <a href="https://console.cloud.tencent.com/workorder/category">ticket application</a>]</p>
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// <p>Unique ID of EIP, such as eip-11112222, applicable only to private network CLB to bind EIP.</p>
	EipAddressId *string `json:"EipAddressId,omitnil,omitempty" name:"EipAddressId"`

	// <p>Allow CLB traffic to the Target. Enable (true): verify security groups on CLB; deny CLB traffic to the Target (false): verify security groups on both CLB and backend instances.</p>
	LoadBalancerPassToTarget *bool `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	// <p>Network outbound</p>
	Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"`

	// <p>Prepaid billing attributes of the Cloud Load Balancer instance</p>
	LBChargePrepaid *LBChargePrepaid `json:"LBChargePrepaid,omitnil,omitempty" name:"LBChargePrepaid"`

	// <p>Billing type of the CLB instance. Valid values: POSTPAID_BY_HOUR and PREPAID. Default value: POSTPAID_BY_HOUR.</p>
	LBChargeType *string `json:"LBChargeType,omitnil,omitempty" name:"LBChargeType"`

	// <p>L7 access log topic ID</p>
	AccessLogTopicId *string `json:"AccessLogTopicId,omitnil,omitempty" name:"AccessLogTopicId"`

	// <p>Whether layer-7 advanced routing is enabled</p>
	AdvancedRoute *bool `json:"AdvancedRoute,omitnil,omitempty" name:"AdvancedRoute"`

	// <p>Availability zone affinity info</p>
	AvailableZoneAffinityInfo *AvailableZoneAffinityInfo `json:"AvailableZoneAffinityInfo,omitnil,omitempty" name:"AvailableZoneAffinityInfo"`
}

func (r *CreateLoadBalancerRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateLoadBalancerRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerType")
	delete(f, "Forward")
	delete(f, "LoadBalancerName")
	delete(f, "VpcId")
	delete(f, "SubnetId")
	delete(f, "ProjectId")
	delete(f, "AddressIPVersion")
	delete(f, "Number")
	delete(f, "MasterZoneId")
	delete(f, "ZoneId")
	delete(f, "InternetAccessible")
	delete(f, "VipIsp")
	delete(f, "Tags")
	delete(f, "Vip")
	delete(f, "BandwidthPackageId")
	delete(f, "ExclusiveCluster")
	delete(f, "SlaType")
	delete(f, "ClientToken")
	delete(f, "SnatPro")
	delete(f, "SnatIps")
	delete(f, "ClusterTag")
	delete(f, "SlaveZoneId")
	delete(f, "EipAddressId")
	delete(f, "LoadBalancerPassToTarget")
	delete(f, "Egress")
	delete(f, "LBChargePrepaid")
	delete(f, "LBChargeType")
	delete(f, "AccessLogTopicId")
	delete(f, "AdvancedRoute")
	delete(f, "AvailableZoneAffinityInfo")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateLoadBalancerResponseParams struct {
	// <p>An array of unique IDs of Cloud Load Balancer instances.<br>In certain scenarios, such as a delay in creation, this field may return null. At this point, you can query the created resource ID through the DescribeTaskStatus API using the RequestId or DealName parameter returned by the API.</p>
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// <p>Order ID.</p>
	DealName *string `json:"DealName,omitnil,omitempty" name:"DealName"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *CreateLoadBalancerResponseParams `json:"Response"`
}

func (r *CreateLoadBalancerResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClassicalLBListenersRequestParams struct {
	// CLB instance ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// CLB listener ID list.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// Protocols for Cloud Load Balancer listeners: 'TCP', 'UDP', 'HTTP', 'HTTPS'.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// CLB listening port, range [1-65535].
	ListenerPort *int64 `json:"ListenerPort,omitnil,omitempty" name:"ListenerPort"`

	// Listener status. 0: Creating; 1: Running.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type DescribeClassicalLBListenersRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// CLB listener ID list.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// Protocols for Cloud Load Balancer listeners: 'TCP', 'UDP', 'HTTP', 'HTTPS'.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// CLB listening port, range [1-65535].
	ListenerPort *int64 `json:"ListenerPort,omitnil,omitempty" name:"ListenerPort"`

	// Listener status. 0: Creating; 1: Running.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

func (r *DescribeClassicalLBListenersRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeClassicalLBListenersRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerId")
	delete(f, "ListenerIds")
	delete(f, "Protocol")
	delete(f, "ListenerPort")
	delete(f, "Status")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClassicalLBListenersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClassicalLBListenersResponseParams struct {
	// Listener list.
	Listeners []*ClassicalListener `json:"Listeners,omitnil,omitempty" name:"Listeners"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeClassicalLBListenersResponse struct {
	*tchttp.BaseResponse
	Response *DescribeClassicalLBListenersResponseParams `json:"Response"`
}

func (r *DescribeClassicalLBListenersResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeClassicalLBListenersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCustomizedConfigAssociateListRequestParams struct {
	// Configuration ID
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// Start position of the binding list. Default: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of binding lists to pull. Default: 20.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// search domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type DescribeCustomizedConfigAssociateListRequest struct {
	*tchttp.BaseRequest
	
	// Configuration ID
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// Start position of the binding list. Default: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of binding lists to pull. Default: 20.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// search domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

func (r *DescribeCustomizedConfigAssociateListRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeCustomizedConfigAssociateListRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ConfigId")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "Domain")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCustomizedConfigAssociateListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCustomizedConfigAssociateListResponseParams struct {
	// Binding relationship list
	BindList []*BindDetailItem `json:"BindList,omitnil,omitempty" name:"BindList"`

	// Total number of binding relationships
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeCustomizedConfigAssociateListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomizedConfigAssociateListResponseParams `json:"Response"`
}

func (r *DescribeCustomizedConfigAssociateListResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeCustomizedConfigAssociateListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCustomizedConfigListRequestParams struct {
	// Configuration type. CLB: CLB dimension; SERVER: Domain name dimension; LOCATION: Rule dimension.
	ConfigType *string `json:"ConfigType,omitnil,omitempty" name:"ConfigType"`

	// Pagination offset. Default: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of results. Default: 20
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specify the name of configurations to query. Fuzzy match is supported.
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Configuration ID
	ConfigIds []*string `json:"ConfigIds,omitnil,omitempty" name:"ConfigIds"`

	// Filter criteria are as follows:
	// <li> loadbalancer-id - String - Required: No - (Filter condition) Filter by CLB ID, for example: "lb-12345678".</li>
	// <li> vip - String - Required: No - (Filter condition) Filter by CLB vip, for example: "1.1.1.1", "2204::22:3".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeCustomizedConfigListRequest struct {
	*tchttp.BaseRequest
	
	// Configuration type. CLB: CLB dimension; SERVER: Domain name dimension; LOCATION: Rule dimension.
	ConfigType *string `json:"ConfigType,omitnil,omitempty" name:"ConfigType"`

	// Pagination offset. Default: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of results. Default: 20
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specify the name of configurations to query. Fuzzy match is supported.
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Configuration ID
	ConfigIds []*string `json:"ConfigIds,omitnil,omitempty" name:"ConfigIds"`

	// Filter criteria are as follows:
	// <li> loadbalancer-id - String - Required: No - (Filter condition) Filter by CLB ID, for example: "lb-12345678".</li>
	// <li> vip - String - Required: No - (Filter condition) Filter by CLB vip, for example: "1.1.1.1", "2204::22:3".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

func (r *DescribeCustomizedConfigListRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeCustomizedConfigListRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ConfigType")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "ConfigName")
	delete(f, "ConfigIds")
	delete(f, "Filters")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCustomizedConfigListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCustomizedConfigListResponseParams struct {
	// Configuration list
	ConfigList []*ConfigListItem `json:"ConfigList,omitnil,omitempty" name:"ConfigList"`

	// Number of configurations
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeCustomizedConfigListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomizedConfigListResponseParams `json:"Response"`
}

func (r *DescribeCustomizedConfigListResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeCustomizedConfigListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancerListByCertIdRequestParams struct {
	// Server or client certificate ID
	CertIds []*string `json:"CertIds,omitnil,omitempty" name:"CertIds"`
}

type DescribeLoadBalancerListByCertIdRequest struct {
	*tchttp.BaseRequest
	
	// Server or client certificate ID
	CertIds []*string `json:"CertIds,omitnil,omitempty" name:"CertIds"`
}

func (r *DescribeLoadBalancerListByCertIdRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLoadBalancerListByCertIdRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "CertIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLoadBalancerListByCertIdRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancerListByCertIdResponseParams struct {
	// Certificate ID and the list of CLB instances associated with the certificate ID
	CertSet []*CertIdRelatedWithLoadBalancers `json:"CertSet,omitnil,omitempty" name:"CertSet"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeLoadBalancerListByCertIdResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLoadBalancerListByCertIdResponseParams `json:"Response"`
}

func (r *DescribeLoadBalancerListByCertIdResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLoadBalancerListByCertIdResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancersDetailRequestParams struct {
	// Return the number of Cloud Load Balancer (CLB) lists. Default is 20. Maximum value is 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset for returning the list of CLB instances, with a default value of 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Select the Fields list to return. The system will only return the Fields filled in Fields. For fillable field details, see <a href="https://www.tencentcloud.com/document/api/214/30694?from_cn_redirect=1#LoadBalancerDetail">LoadBalancerDetail</a>. If a related field is not in Fields, this field returns null. The LoadBalancerId and LoadBalancerName Fields are added by default in Fields.
	Fields []*string `json:"Fields,omitnil,omitempty" name:"Fields"`

	// When the Fields include TargetId, TargetAddress, TargetPort, TargetWeight, ListenerId, Protocol, Port, LocationId, Domain, and Url, you must select exporting the Target of the target group or a non-target group. Valid values: NODE, GROUP.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Query the detailed information list of Cloud Load Balancer. Detailed filter criteria:
	// <li> loadbalancer-id - String - Required: No - (Filter condition) Filter by CLB ID, for example: "lb-12345678".</li>
	// <li> project-id - String - Required: No - (Filter condition) Filter by project ID, for example: "0", "123".</li>
	// <li>network - String - Required: No - (Filter condition) Filter by CLB network type, such as "Public" or "Private".</li>
	// <li> vip - String - Required: No - (Filter condition) Filter by CLB vip, for example: "1.1.1.1", "2204::22:3".</li>
	// <li> target-ip - String - Required: No - (Filtering Conditions) Filter by private ip of the target real server, such as "1.1.1.1", "2203::214:4".</li>
	// <li> vpcid - String - Required: No - (Filter condition) Filter by the associated vpc ID of the Cloud Load Balancer (CLB), such as "vpc-12345678".</li>
	// <li> zone - String - Required: No - (Filtering Conditions) Filter by the availability zone the load balancing belongs to, such as "ap-guangzhou-1".</li>
	// <li>tag-key - String - required: no - (filter condition) filter by tag key of Cloud Load Balancer, such as "name".</li>
	// <li> tag:* - String - Required: No - (Filter criteria) Filter by the tag of Cloud Load Balancer (CLB), where ':' is followed by the tag key. For example, to filter by tag key 'name' and tag values 'zhangsan' and 'lisi', use {"Name": "tag:name","Values": ["zhangsan", "lisi"]}.</li>
	// <li>fuzzy-search - String - required: no - (filter condition) fuzzy search by CLB Vip and CLB name, for example: "1.1".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeLoadBalancersDetailRequest struct {
	*tchttp.BaseRequest
	
	// Return the number of Cloud Load Balancer (CLB) lists. Default is 20. Maximum value is 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset for returning the list of CLB instances, with a default value of 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Select the Fields list to return. The system will only return the Fields filled in Fields. For fillable field details, see <a href="https://www.tencentcloud.com/document/api/214/30694?from_cn_redirect=1#LoadBalancerDetail">LoadBalancerDetail</a>. If a related field is not in Fields, this field returns null. The LoadBalancerId and LoadBalancerName Fields are added by default in Fields.
	Fields []*string `json:"Fields,omitnil,omitempty" name:"Fields"`

	// When the Fields include TargetId, TargetAddress, TargetPort, TargetWeight, ListenerId, Protocol, Port, LocationId, Domain, and Url, you must select exporting the Target of the target group or a non-target group. Valid values: NODE, GROUP.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Query the detailed information list of Cloud Load Balancer. Detailed filter criteria:
	// <li> loadbalancer-id - String - Required: No - (Filter condition) Filter by CLB ID, for example: "lb-12345678".</li>
	// <li> project-id - String - Required: No - (Filter condition) Filter by project ID, for example: "0", "123".</li>
	// <li>network - String - Required: No - (Filter condition) Filter by CLB network type, such as "Public" or "Private".</li>
	// <li> vip - String - Required: No - (Filter condition) Filter by CLB vip, for example: "1.1.1.1", "2204::22:3".</li>
	// <li> target-ip - String - Required: No - (Filtering Conditions) Filter by private ip of the target real server, such as "1.1.1.1", "2203::214:4".</li>
	// <li> vpcid - String - Required: No - (Filter condition) Filter by the associated vpc ID of the Cloud Load Balancer (CLB), such as "vpc-12345678".</li>
	// <li> zone - String - Required: No - (Filtering Conditions) Filter by the availability zone the load balancing belongs to, such as "ap-guangzhou-1".</li>
	// <li>tag-key - String - required: no - (filter condition) filter by tag key of Cloud Load Balancer, such as "name".</li>
	// <li> tag:* - String - Required: No - (Filter criteria) Filter by the tag of Cloud Load Balancer (CLB), where ':' is followed by the tag key. For example, to filter by tag key 'name' and tag values 'zhangsan' and 'lisi', use {"Name": "tag:name","Values": ["zhangsan", "lisi"]}.</li>
	// <li>fuzzy-search - String - required: no - (filter condition) fuzzy search by CLB Vip and CLB name, for example: "1.1".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

func (r *DescribeLoadBalancersDetailRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLoadBalancersDetailRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Limit")
	delete(f, "Offset")
	delete(f, "Fields")
	delete(f, "TargetType")
	delete(f, "Filters")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLoadBalancersDetailRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancersDetailResponseParams struct {
	// Total number of items in CLB detail list.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Cloud Load Balancer detail list.
	LoadBalancerDetailSet []*LoadBalancerDetail `json:"LoadBalancerDetailSet,omitnil,omitempty" name:"LoadBalancerDetailSet"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeLoadBalancersDetailResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLoadBalancersDetailResponseParams `json:"Response"`
}

func (r *DescribeLoadBalancersDetailResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLoadBalancersDetailResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancersRequestParams struct {
	// CLB instance ID. There can be up to 20 IDs.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Network type of the CLB instance:
	// OPEN: Public network attribute. INTERNAL: Private network attribute.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB instance type. 1: General CLB instance; 0: Classic CLB instance. If this parameter is not specified, all types of CLB instances will be queried.
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// CLB instance name.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Domain name assigned for a CLB instance by the cloud platform.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// VIP address of a CLB instance (there can be multiple addresses).
	LoadBalancerVips []*string `json:"LoadBalancerVips,omitnil,omitempty" name:"LoadBalancerVips"`

	// The public network IP of the backend service bound to Cloud Load Balancer (CLB) only supports querying the public IP of Cloud Virtual Machine (CVM).
	BackendPublicIps []*string `json:"BackendPublicIps,omitnil,omitempty" name:"BackendPublicIps"`

	// The private network IP of the backend service bound to Cloud Load Balancer (CLB) only supports querying the private IP address of Cloud Virtual Machine (CVM).
	BackendPrivateIps []*string `json:"BackendPrivateIps,omitnil,omitempty" name:"BackendPrivateIps"`

	// Data offset. Default: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of CLB instances returned. Default: 20. Maximum: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// A sorting parameter. Valid values: LoadBalancerName, CreateTime, Domain, and LoadBalancerType.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// 1: Reverse; 0: Sequential. Default: reverse by creation time
	OrderType *int64 `json:"OrderType,omitnil,omitempty" name:"OrderType"`

	// Search field, supporting fuzzy match by name, domain, and VIP.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// The ID of the project to which the CLB instance belongs. This parameter can be obtained through the DescribeProject API.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Whether CLB is bound to a real server. 0: No; 1: Yes; -1: Query all.
	WithRs *int64 `json:"WithRs,omitnil,omitempty" name:"WithRs"`

	// Unique VPC ID of the CLB instance, such as vpc-bhqkbhdx
	// Basic network allows input '0'.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Security group ID, for example sg-m1cc****.
	SecurityGroup *string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Primary availability zone ID, such as 100001 (corresponding to Guangzhou Zone 1). You can obtain the list of availability zones through [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1).
	MasterZone *string `json:"MasterZone,omitnil,omitempty" name:"MasterZone"`

	// Each request can have up to 10 `Filters` values and 100 `Filter.Values` values.<br/>`Filter.Name` and `Filter.Values` are required items. The detailed filter criteria are as follows:
	// <li> charge-type - String - Required: No - (Filter condition) Filter by the CLB instance billing mode, including "PREPAID", "POSTPAID_BY_HOUR".</li>
	// <li> internet-charge-type - String - Required: No - (Filter condition) Filter by CLB network billing mode, including "BANDWIDTH_PREPAID", "TRAFFIC_POSTPAID_BY_HOUR", "BANDWIDTH_POSTPAID_BY_HOUR", "BANDWIDTH_PACKAGE".</li>
	// <li> master-zone-id - String - Required: No - (Filter condition) Filter by primary AZ ID of CLB, such as "100001" (corresponding to Guangzhou Zone 1).</li>
	// <li>tag-key - String - required: no - (filter condition) filter by CLB tag key.</li>
	// <li>tag:tag-key - String - Required: no - (Filter condition) Filter by CLB Tag key-value pair. Replace tag-key with a specific tag key.</li>
	// <li> function-name - String - Required: No - (Filter condition) Filter by the function name of the Serverless Cloud Function (SCF) bound to the CLB backend.</li>
	// <li> vip-isp - String - Required: No - (Filter condition) Filter by operator type of CLB VIP, such as "BGP", "INTERNAL", "CMCC", "CTCC", "CUCC".</li>
	// <li>sla-type - String - required: no - (filter condition) filter by CLB performance capacity specification, including "clb.c2.medium", "clb.c3.small", "clb.c3.medium", "clb.c4.small", "clb.c4.medium", "clb.c4.large", "clb.c4.xlarge".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Select the expansion fields to return. If not specified, expansion fields are not returned by default. The supported expansion fields are as follows:
	// <li> TargetCount: Number of real servers bound to it</li>
	AdditionalFields []*string `json:"AdditionalFields,omitnil,omitempty" name:"AdditionalFields"`
}

type DescribeLoadBalancersRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance ID. There can be up to 20 IDs.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Network type of the CLB instance:
	// OPEN: Public network attribute. INTERNAL: Private network attribute.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB instance type. 1: General CLB instance; 0: Classic CLB instance. If this parameter is not specified, all types of CLB instances will be queried.
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// CLB instance name.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Domain name assigned for a CLB instance by the cloud platform.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// VIP address of a CLB instance (there can be multiple addresses).
	LoadBalancerVips []*string `json:"LoadBalancerVips,omitnil,omitempty" name:"LoadBalancerVips"`

	// The public network IP of the backend service bound to Cloud Load Balancer (CLB) only supports querying the public IP of Cloud Virtual Machine (CVM).
	BackendPublicIps []*string `json:"BackendPublicIps,omitnil,omitempty" name:"BackendPublicIps"`

	// The private network IP of the backend service bound to Cloud Load Balancer (CLB) only supports querying the private IP address of Cloud Virtual Machine (CVM).
	BackendPrivateIps []*string `json:"BackendPrivateIps,omitnil,omitempty" name:"BackendPrivateIps"`

	// Data offset. Default: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of CLB instances returned. Default: 20. Maximum: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// A sorting parameter. Valid values: LoadBalancerName, CreateTime, Domain, and LoadBalancerType.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// 1: Reverse; 0: Sequential. Default: reverse by creation time
	OrderType *int64 `json:"OrderType,omitnil,omitempty" name:"OrderType"`

	// Search field, supporting fuzzy match by name, domain, and VIP.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// The ID of the project to which the CLB instance belongs. This parameter can be obtained through the DescribeProject API.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Whether CLB is bound to a real server. 0: No; 1: Yes; -1: Query all.
	WithRs *int64 `json:"WithRs,omitnil,omitempty" name:"WithRs"`

	// Unique VPC ID of the CLB instance, such as vpc-bhqkbhdx
	// Basic network allows input '0'.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Security group ID, for example sg-m1cc****.
	SecurityGroup *string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Primary availability zone ID, such as 100001 (corresponding to Guangzhou Zone 1). You can obtain the list of availability zones through [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1).
	MasterZone *string `json:"MasterZone,omitnil,omitempty" name:"MasterZone"`

	// Each request can have up to 10 `Filters` values and 100 `Filter.Values` values.<br/>`Filter.Name` and `Filter.Values` are required items. The detailed filter criteria are as follows:
	// <li> charge-type - String - Required: No - (Filter condition) Filter by the CLB instance billing mode, including "PREPAID", "POSTPAID_BY_HOUR".</li>
	// <li> internet-charge-type - String - Required: No - (Filter condition) Filter by CLB network billing mode, including "BANDWIDTH_PREPAID", "TRAFFIC_POSTPAID_BY_HOUR", "BANDWIDTH_POSTPAID_BY_HOUR", "BANDWIDTH_PACKAGE".</li>
	// <li> master-zone-id - String - Required: No - (Filter condition) Filter by primary AZ ID of CLB, such as "100001" (corresponding to Guangzhou Zone 1).</li>
	// <li>tag-key - String - required: no - (filter condition) filter by CLB tag key.</li>
	// <li>tag:tag-key - String - Required: no - (Filter condition) Filter by CLB Tag key-value pair. Replace tag-key with a specific tag key.</li>
	// <li> function-name - String - Required: No - (Filter condition) Filter by the function name of the Serverless Cloud Function (SCF) bound to the CLB backend.</li>
	// <li> vip-isp - String - Required: No - (Filter condition) Filter by operator type of CLB VIP, such as "BGP", "INTERNAL", "CMCC", "CTCC", "CUCC".</li>
	// <li>sla-type - String - required: no - (filter condition) filter by CLB performance capacity specification, including "clb.c2.medium", "clb.c3.small", "clb.c3.medium", "clb.c4.small", "clb.c4.medium", "clb.c4.large", "clb.c4.xlarge".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Select the expansion fields to return. If not specified, expansion fields are not returned by default. The supported expansion fields are as follows:
	// <li> TargetCount: Number of real servers bound to it</li>
	AdditionalFields []*string `json:"AdditionalFields,omitnil,omitempty" name:"AdditionalFields"`
}

func (r *DescribeLoadBalancersRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLoadBalancersRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerIds")
	delete(f, "LoadBalancerType")
	delete(f, "Forward")
	delete(f, "LoadBalancerName")
	delete(f, "Domain")
	delete(f, "LoadBalancerVips")
	delete(f, "BackendPublicIps")
	delete(f, "BackendPrivateIps")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "OrderBy")
	delete(f, "OrderType")
	delete(f, "SearchKey")
	delete(f, "ProjectId")
	delete(f, "WithRs")
	delete(f, "VpcId")
	delete(f, "SecurityGroup")
	delete(f, "MasterZone")
	delete(f, "Filters")
	delete(f, "AdditionalFields")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLoadBalancersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancersResponseParams struct {
	// Total number of CLB instances that meet the filter criteria. This value is independent of the Limit in the input parameters.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Returned CLB instance array.
	LoadBalancerSet []*LoadBalancer `json:"LoadBalancerSet,omitnil,omitempty" name:"LoadBalancerSet"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeLoadBalancersResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLoadBalancersResponseParams `json:"Response"`
}

func (r *DescribeLoadBalancersResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLoadBalancersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetHealthRequestParams struct {
	// List of CLB instance IDs to query.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Listener ID list to query.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// List of forwarding rule IDs to query.
	LocationIds []*string `json:"LocationIds,omitnil,omitempty" name:"LocationIds"`
}

type DescribeTargetHealthRequest struct {
	*tchttp.BaseRequest
	
	// List of CLB instance IDs to query.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Listener ID list to query.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// List of forwarding rule IDs to query.
	LocationIds []*string `json:"LocationIds,omitnil,omitempty" name:"LocationIds"`
}

func (r *DescribeTargetHealthRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeTargetHealthRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerIds")
	delete(f, "ListenerIds")
	delete(f, "LocationIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTargetHealthRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetHealthResponseParams struct {
	// LoadBalancer list.
	LoadBalancers []*LoadBalancerHealth `json:"LoadBalancers,omitnil,omitempty" name:"LoadBalancers"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeTargetHealthResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTargetHealthResponseParams `json:"Response"`
}

func (r *DescribeTargetHealthResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeTargetHealthResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type ExclusiveCluster struct {
	// Layer-4 exclusive cluster list
	// Note: This field may return null, indicating that no valid values can be obtained.
	L4Clusters []*ClusterItem `json:"L4Clusters,omitnil,omitempty" name:"L4Clusters"`

	// Layer-7 exclusive cluster list
	// Note: This field may return null, indicating that no valid values can be obtained.
	L7Clusters []*ClusterItem `json:"L7Clusters,omitnil,omitempty" name:"L7Clusters"`

	// VPCGW cluster
	// Note: This field may return null, indicating that no valid values can be obtained.
	ClassicalCluster *ClusterItem `json:"ClassicalCluster,omitnil,omitempty" name:"ClassicalCluster"`
}

type ExtraInfo struct {
	// Whether to enable VIP Direct Connect
	Dnat *bool `json:"Dnat,omitnil,omitempty" name:"Dnat"`

	// TgwGroup name
	TgwGroupName *string `json:"TgwGroupName,omitnil,omitempty" name:"TgwGroupName"`
}

type Filter struct {
	// Filter name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Filter value array
	Values []*string `json:"Values,omitnil,omitempty" name:"Values"`
}

type InternetAccessible struct {
	// TRAFFIC_POSTPAID_BY_HOUR: postpaid by traffic on an hourly basis;
	InternetChargeType *string `json:"InternetChargeType,omitnil,omitempty" name:"InternetChargeType"`

	// Maximum outbound bandwidth in Mbps. It applies only to shared, LCU-supported, and exclusive CLB instances of the public network type and LCU-supported CLB instances of the private network type.
	// -For shared type and exclusive CLB instances with public network attributes, the maximum outbound bandwidth ranges from 1Mbps to 2048Mbps.
	// -For LCU-supported CLB instances with public network attributes and private network attributes, the maximum outbound bandwidth ranges from 1Mbps to 61440Mbps.
	// (If this parameter is not specified when CreateLoadBalancer is called to create a CLB instance, the default value of 10 Mbps is used. This value can be modified.)
	InternetMaxBandwidthOut *int64 `json:"InternetMaxBandwidthOut,omitnil,omitempty" name:"InternetMaxBandwidthOut"`

	// Bandwidth package type, such as SINGLEISP (single ISP) and BGP (multi ISP).
	// Note: This field may return null, indicating that no valid values can be obtained.
	BandwidthPackageSubType *string `json:"BandwidthPackageSubType,omitnil,omitempty" name:"BandwidthPackageSubType"`
}

type LBChargePrepaid struct {
	// Reserved field.
	RenewFlag *string `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Reserved field.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`
}

type ListenerHealth struct {
	// Listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// listener name
	ListenerName *string `json:"ListenerName,omitnil,omitempty" name:"ListenerName"`

	// Listener protocol
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Listener port
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// List of forwarding rules of the listener
	Rules []*RuleHealth `json:"Rules,omitnil,omitempty" name:"Rules"`
}

type LoadBalancer struct {
	// CLB instance ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// CLB instance name.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Network type of the CLB instance:
	// OPEN: Public network attribute. INTERNAL: Intranet attribute. For a CLB with intranet attribute, you can bind EIP for public network access. For details, see the EIP document.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// Load balancer type identifier. 1: CLB; 0: Classic CLB.
	Forward *uint64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// The domain name of the Cloud Load Balancer instance. This field is only provided by public network-based and domain name-based CLB instances. It is being gradually phased out. We recommend using LoadBalancerDomain instead.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// List of VIPs of a CLB instance.
	LoadBalancerVips []*string `json:"LoadBalancerVips,omitnil,omitempty" name:"LoadBalancerVips"`

	// CLB instance state, including
	// 0: creating, 1: normal operation.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// CLB instance creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Last status transition time of the CLB instance.
	StatusTime *string `json:"StatusTime,omitnil,omitempty" name:"StatusTime"`

	// The ID of the project to which the CLB instance belongs. 0: Default project.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// VPC ID
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Anti-DDoS Pro identifier for CLB. 1: CLB with Anti-DDoS Pro; 0: CLB without Anti-DDoS Pro.
	OpenBgp *uint64 `json:"OpenBgp,omitnil,omitempty" name:"OpenBgp"`

	// Private network Classic CLB instances before December 2016 had SNAT enabled.
	Snat *bool `json:"Snat,omitnil,omitempty" name:"Snat"`

	// 0: Not isolated; 1: Isolated.
	Isolation *uint64 `json:"Isolation,omitnil,omitempty" name:"Isolation"`

	// User-enabled log information. Only public network CLB instances that have an HTTP or HTTPS listener can generate logs.
	Log *string `json:"Log,omitnil,omitempty" name:"Log"`

	// Subnet of the CLB instance (applicable only to VPC-type CLB instances on private networks)
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// CLB instance tag information
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Security group of the CLB instance
	SecureGroups []*string `json:"SecureGroups,omitnil,omitempty" name:"SecureGroups"`

	// Basic information of real servers bound to the CLB instance
	TargetRegionInfo *TargetRegionInfo `json:"TargetRegionInfo,omitnil,omitempty" name:"TargetRegionInfo"`

	// Anycast CLB release domain. For non-anycast CLB, this field returns an empty string.
	AnycastZone *string `json:"AnycastZone,omitnil,omitempty" name:"AnycastZone"`

	// IP Version, ipv4 | ipv6
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// VPC ID in numerical format
	NumericalVpcId *uint64 `json:"NumericalVpcId,omitnil,omitempty" name:"NumericalVpcId"`

	// ISP of the load balancer IP. Value ranges from BGP to CUCC.
	// Note: This field may return null, indicating that no valid values can be obtained.
	VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"`

	// Primary AZ.
	// Note: This field may return null, indicating that no valid values can be obtained.
	MasterZone *ZoneInfo `json:"MasterZone,omitnil,omitempty" name:"MasterZone"`

	// standby availability zone
	// Note: This field may return null, indicating that no valid values can be obtained.
	BackupZoneSet []*ZoneInfo `json:"BackupZoneSet,omitnil,omitempty" name:"BackupZoneSet"`

	// CLB instance isolation time
	// Note: This field may return null, indicating that no valid values can be obtained.
	IsolatedTime *string `json:"IsolatedTime,omitnil,omitempty" name:"IsolatedTime"`

	// Expiration Time of the CLB instance
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExpireTime *string `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Billing type of the Cloud Load Balancer instance, PREPAID: Monthly Subscription, POSTPAID_BY_HOUR: Pay-As-You-Go
	// Note: This field may return null, indicating that no valid values can be obtained.
	ChargeType *string `json:"ChargeType,omitnil,omitempty" name:"ChargeType"`

	// CLB instance network attributes
	// Note: This field may return null, indicating that no valid values can be obtained.
	NetworkAttributes *InternetAccessible `json:"NetworkAttributes,omitnil,omitempty" name:"NetworkAttributes"`

	// Reserved field.
	// Note: This field may return null, indicating that no valid values can be obtained.
	PrepaidAttributes *LBChargePrepaid `json:"PrepaidAttributes,omitnil,omitempty" name:"PrepaidAttributes"`

	// Log set ID of Cloud Log Service (CLS) for CLB
	LogSetId *string `json:"LogSetId,omitnil,omitempty" name:"LogSetId"`

	// Log topic ID of Cloud Log Service (CLS) for CLB
	LogTopicId *string `json:"LogTopicId,omitnil,omitempty" name:"LogTopicId"`

	// IPv6 address of the CLB instance
	// Note: This field may return null, indicating that no valid values can be obtained.
	AddressIPv6 *string `json:"AddressIPv6,omitnil,omitempty" name:"AddressIPv6"`

	// Reserved. Generally unnecessary for users to concern.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExtraInfo *ExtraInfo `json:"ExtraInfo,omitnil,omitempty" name:"ExtraInfo"`

	// Whether an Anti-DDoS Pro instance can be bound
	IsDDos *bool `json:"IsDDos,omitnil,omitempty" name:"IsDDos"`

	// Custom configuration IDs of CLB instances
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// Whether the real server allows traffic from CLB
	LoadBalancerPassToTarget *bool `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	// Exclusive cluster on the private network
	ExclusiveCluster *ExclusiveCluster `json:"ExclusiveCluster,omitnil,omitempty" name:"ExclusiveCluster"`

	// This field is meaningful when the IP address version is IPv6. IPv6Nat64 | IPv6FullChain
	// Note: This field may return null, indicating that no valid values can be obtained.
	IPv6Mode *string `json:"IPv6Mode,omitnil,omitempty" name:"IPv6Mode"`

	// Is SnatPro enabled?
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// After enabling SnatPro load balancing, the SnatIp list.
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Performance capacity specification.<ul><li> clb.c1.small: Minimalist specification </li><li> clb.c2.medium: Standard specification </li><li> clb.c3.small: High-tier 1 specification </li><li> clb.c3.medium: High-tier 2 specification </li><li> clb.c4.small: Super-tier 1 specification </li><li> clb.c4.medium: Super-tier 2 specification </li><li> clb.c4.large: Super-tier 3 specification </li><li> clb.c4.xlarge: Super-tier 4 specification </li><li>"": Non-LCU-supported instance</li></ul>
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// Whether VIP is blocked
	IsBlock *bool `json:"IsBlock,omitnil,omitempty" name:"IsBlock"`

	// Blocking or unblocking time
	IsBlockTime *string `json:"IsBlockTime,omitnil,omitempty" name:"IsBlockTime"`

	// Whether the IP type is Local BGP
	LocalBgp *bool `json:"LocalBgp,omitnil,omitempty" name:"LocalBgp"`

	// Layer-7 exclusive tag.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ClusterTag *string `json:"ClusterTag,omitnil,omitempty" name:"ClusterTag"`

	// If the layer-7 listener of an IPv6FullChain CLB instance is enabled, the CLB instance can be bound with IPv4 and IPv6 CVM instances simultaneously.
	MixIpTarget *bool `json:"MixIpTarget,omitnil,omitempty" name:"MixIpTarget"`

	// VPC-based private network CLB. AZ where the rule is in proximity access mode
	// Note: This field may return null, indicating that no valid values can be obtained.
	Zones []*string `json:"Zones,omitnil,omitempty" name:"Zones"`

	// Whether CLB is NFV. Empty: No; l7nfv: NFV for layer 7.
	NfvInfo *string `json:"NfvInfo,omitnil,omitempty" name:"NfvInfo"`

	// Health check log set ID of Cloud Log Service (CLS) for CLB
	HealthLogSetId *string `json:"HealthLogSetId,omitnil,omitempty" name:"HealthLogSetId"`

	// Health check log topic ID of Cloud Log Service (CLS) for CLB
	HealthLogTopicId *string `json:"HealthLogTopicId,omitnil,omitempty" name:"HealthLogTopicId"`

	// Cluster ID
	// Note: This field may return null, indicating that no valid values can be obtained.
	ClusterIds []*string `json:"ClusterIds,omitnil,omitempty" name:"ClusterIds"`

	// Attributes of Cloud Load Balancer
	AttributeFlags []*string `json:"AttributeFlags,omitnil,omitempty" name:"AttributeFlags"`

	// Domain name of the CLB instance.
	LoadBalancerDomain *string `json:"LoadBalancerDomain,omitnil,omitempty" name:"LoadBalancerDomain"`

	// Network outbound
	Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"`

	// Whether the instance type is exclusive type. 1: Dedicated instance. 0: Non-dedicated instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Exclusive *uint64 `json:"Exclusive,omitnil,omitempty" name:"Exclusive"`

	// Number of bound backend services.
	TargetCount *uint64 `json:"TargetCount,omitnil,omitempty" name:"TargetCount"`

	// Endpoint Id associated with the CLB instance.
	AssociateEndpoint *string `json:"AssociateEndpoint,omitnil,omitempty" name:"AssociateEndpoint"`

	// Availability zone forward affinity info
	AvailableZoneAffinityInfo *AvailableZoneAffinityInfo `json:"AvailableZoneAffinityInfo,omitnil,omitempty" name:"AvailableZoneAffinityInfo"`
}

type LoadBalancerDetail struct {
	// CLB instance ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// CLB instance name.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Network type of the CLB instance:
	// OPEN: public network attribute, INTERNAL: private network attribute. For a Cloud Load Balancer with private network attribute, you can bind EIP for outbound public network access. For details, see the EIP document.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB instance state, including
	// 0: creating, 1: normal operation.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// VIP of the CLB instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Address *string `json:"Address,omitnil,omitempty" name:"Address"`

	// IPv6 address of the VIP in the CLB instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	AddressIPv6 *string `json:"AddressIPv6,omitnil,omitempty" name:"AddressIPv6"`

	// IP version of the Cloud Load Balancer instance, IPv4 | IPv6.
	// Note: This field may return null, indicating that no valid values can be obtained.
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// IPv6 address type of the Cloud Load Balancer instance: IPv6Nat64 | IPv6FullChain.
	// Note: This field may return null, indicating that no valid values can be obtained.
	IPv6Mode *string `json:"IPv6Mode,omitnil,omitempty" name:"IPv6Mode"`

	// Availability Zone of the Cloud Load Balancer instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// The ISP to which the IP address of the CLB instance belongs. Value ranges from BGP (multi-line), CMCC (China Mobile), CUCC (China Unicom), CTCC (China Telecom) to INTERNAL (private network).
	// Note: This field may return null, indicating that no valid values can be obtained.
	AddressIsp *string `json:"AddressIsp,omitnil,omitempty" name:"AddressIsp"`

	// ID of the VPC that the CLB instance belongs to.
	// Note: This field may return null, indicating that no valid values can be obtained.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// The ID of the project to which the CLB instance belongs. 0: Default project.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// CLB instance creation time
	// Note: This field may return null, indicating that no valid values can be obtained.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Billing type of the CLB instance. Valid values: PREPAID and POSTPAID_BY_HOUR (pay-as-you-go).
	// Note: This field may return null, indicating that no valid values can be obtained.
	ChargeType *string `json:"ChargeType,omitnil,omitempty" name:"ChargeType"`

	// Network properties of the CLB instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	NetworkAttributes *InternetAccessible `json:"NetworkAttributes,omitnil,omitempty" name:"NetworkAttributes"`

	// Prepaid billing attributes of the Cloud Load Balancer instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	PrepaidAttributes *LBChargePrepaid `json:"PrepaidAttributes,omitnil,omitempty" name:"PrepaidAttributes"`

	// Reserved. Generally unnecessary for users to concern.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExtraInfo *ExtraInfo `json:"ExtraInfo,omitnil,omitempty" name:"ExtraInfo"`

	// Personalized configuration ID of the Cloud Load Balancer (CLB) dimension. Multiple configurations are separated by commas.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// Tag information of the GWLB instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// CLB listener ID.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Listener protocol.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Listener port.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Forwarding rule ID.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Domain name of the forwarding rule
	// Note: This field may return null, indicating that no valid values can be obtained.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Path of forwarding rules.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Backend target ID.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetId *string `json:"TargetId,omitnil,omitempty" name:"TargetId"`

	// Backend target IP address.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetAddress *string `json:"TargetAddress,omitnil,omitempty" name:"TargetAddress"`

	// Backend target listening port.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetPort *uint64 `json:"TargetPort,omitnil,omitempty" name:"TargetPort"`

	// Backend target forwarding weight.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetWeight *uint64 `json:"TargetWeight,omitnil,omitempty" name:"TargetWeight"`

	// 0: Not isolated; 1: Isolated.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Isolation *uint64 `json:"Isolation,omitnil,omitempty" name:"Isolation"`

	// List of security groups bound to Cloud Load Balancer (CLB).
	// Note: This field may return null, indicating that no valid values can be obtained.
	SecurityGroup []*string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Valid values: 1 (enabled), 0 (not enabled). Value ranges from 1 to 0.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LoadBalancerPassToTarget *uint64 `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	// Backend target health status.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetHealth *string `json:"TargetHealth,omitnil,omitempty" name:"TargetHealth"`

	// Domain name list of the forwarding rule.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Domains *string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Multi-availability zone Cloud Load Balancer instance selected backup availability zone
	// Note: This field may return null, indicating that no valid values can be obtained.
	SlaveZone []*string `json:"SlaveZone,omitnil,omitempty" name:"SlaveZone"`

	// The availability zone of the private network CLB instance is controlled by the allowlist CLB_Internal_Zone.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Zones []*string `json:"Zones,omitnil,omitempty" name:"Zones"`

	// Whether to enable the SNI feature. 1: enable; 0: disable (this parameter is applicable only to HTTPS listeners).
	// Note: This field may return null, indicating that no valid values can be obtained.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// Domain name of the CLB instance.
	LoadBalancerDomain *string `json:"LoadBalancerDomain,omitnil,omitempty" name:"LoadBalancerDomain"`

	// Network outbound
	Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"`

	// Attributes of Cloud Load Balancer
	AttributeFlags []*string `json:"AttributeFlags,omitnil,omitempty" name:"AttributeFlags"`

	// Specification type information of Cloud Load Balancer instance<ul><li> clb.c1.small: Minimalist specification </li><li>clb.c2.medium: Standard specification </li><li> clb.c3.small: Advanced type 1 specification </li><li> clb.c3.medium: Advanced type 2 specification </li><li> clb.c4.small: Super type 1 specification </li><li> clb.c4.medium: Super type 2 specification </li><li> clb.c4.large: Super type 3 specification </li><li> clb.c4.xlarge: Super type 4 specification </li><li>\"\": Non-LCU-supported instance</li></ul>
	// Note: This field may return null, indicating that no valid values can be obtained.
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// 0: Non-exclusive type instance; 1: Exclusive type instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Exclusive *uint64 `json:"Exclusive,omitnil,omitempty" name:"Exclusive"`

	// Availability zone forward affinity info
	// Note: This field may return null, indicating that no valid values can be obtained.
	AvailableZoneAffinityInfo *AvailableZoneAffinityInfo `json:"AvailableZoneAffinityInfo,omitnil,omitempty" name:"AvailableZoneAffinityInfo"`
}

type LoadBalancerHealth struct {
	// CLB instance ID
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Load balancing instance name
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Listener list
	Listeners []*ListenerHealth `json:"Listeners,omitnil,omitempty" name:"Listeners"`
}

type RsWeightRule struct {
	// CLB listener ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers for which weights are to be modified.
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Forwarding rule ID, which is required only for Layer-7 rules but not for Layer-4 rules.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Domain name of the target rule. This parameter will not take effect when LocationId parameter is provided.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// URL of the target rule. This parameter will not take effect when the LocationId parameter is provided.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// The forwarding weight of the backend service after modification, value ranges from 0 to 100. This parameter has a lower priority than the Weight parameter in the Target (https://www.tencentcloud.com/document/api/214/30694?from_cn_redirect=1#Target). The final weight value is determined by the Weight parameter in the Target, and only when the Weight parameter in the Target is empty, the Weight parameter in the RsWeightRule takes effect.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

type RuleHealth struct {
	// Forwarding rule ID.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Domain name of the forwarding rule
	// Note: This field may return null, indicating that no valid values can be obtained.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// URL of the forwarding rule
	// Note: This field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Advanced routing rule ID
	RuleId *string `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Health check status of the backend service bound to this rule
	Targets []*TargetHealth `json:"Targets,omitnil,omitempty" name:"Targets"`
}

// Predefined struct for user
type SetCustomizedConfigForLoadBalancerRequestParams struct {
	// Operation type.
	// -ADD
	// - DELETE: delete.
	// -UPDATE: Modify
	// -BIND: bind
	// -UNBIND: unbound
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// This field is required except for creating custom configurations. Example: pz-1234abcd
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// Personalized configuration content. This field is required when creating custom configuration or modifying the content of custom configuration.
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`

	// This field is required when you create or modify the name of a custom configuration.
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Load balancing instance ID. This field is required for bind/unbind.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Tag.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type SetCustomizedConfigForLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// Operation type.
	// -ADD
	// - DELETE: delete.
	// -UPDATE: Modify
	// -BIND: bind
	// -UNBIND: unbound
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// This field is required except for creating custom configurations. Example: pz-1234abcd
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// Personalized configuration content. This field is required when creating custom configuration or modifying the content of custom configuration.
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`

	// This field is required when you create or modify the name of a custom configuration.
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Load balancing instance ID. This field is required for bind/unbind.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Tag.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`
}

func (r *SetCustomizedConfigForLoadBalancerRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *SetCustomizedConfigForLoadBalancerRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "OperationType")
	delete(f, "ConfigId")
	delete(f, "ConfigContent")
	delete(f, "ConfigName")
	delete(f, "LoadBalancerIds")
	delete(f, "Tags")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SetCustomizedConfigForLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetCustomizedConfigForLoadBalancerResponseParams struct {
	// Custom configuration ID, such as pz-1234abcd
	ConfigId *string `json:"ConfigId,omitnil,omitempty" name:"ConfigId"`

	// 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.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type SetCustomizedConfigForLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *SetCustomizedConfigForLoadBalancerResponseParams `json:"Response"`
}

func (r *SetCustomizedConfigForLoadBalancerResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *SetCustomizedConfigForLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type SnatIp struct {
	// Unique ID of the VPC subnet, such as subnet-12345678
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// IP address, such as 192.168.0.1
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`
}

type TagInfo struct {
	// Tag key
	TagKey *string `json:"TagKey,omitnil,omitempty" name:"TagKey"`

	// Tag value
	TagValue *string `json:"TagValue,omitnil,omitempty" name:"TagValue"`
}

type Target struct {
	// Listening port of the backend service.
	// Note: This parameter must be specified when binding to CVM (Cloud Virtual Machine) or ENI (Elastic Network Interface).
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Backend service type, optional: CVM (Cloud Virtual Machine), ENI (Elastic Network Interface). As an input parameter, this parameter does not take effect.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// This parameter must be passed in when binding to CVM. It represents the unique ID of the CVM and can be obtained from the InstanceId field in the response of the DescribeInstances API. It indicates binding to the primary IPv4 address of the primary network interface. The following scenarios do not support specifying InstanceId: binding to non-CVM resources, binding to auxiliary network interface IPs on CVM, binding to CVM through cross-region 2.0, and binding to IPv6 addresses of CVM.
	// Note: You can only input one of the InstanceId or EniIp parameter.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// The forwarding weight of the backend service after modification, with a value range of [0, 100], defaults to 10. This parameter has a higher priority than the Weight parameter in [RsWeightRule](https://www.tencentcloud.com/document/api/214/30694?from_cn_redirect=1#RsWeightRule). The final weight value is based on this Weight parameter. Only when this Weight parameter is empty, the Weight parameter in RsWeightRule will be used.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// This parameter must be passed in for IP binding. It supports ENI IPs and other private IP addresses. If it is an ENI, it must first bind to a CVM before binding to a CLB instance.
	// Note: You can only input one of the InstanceId or EniIp parameter. If it is binding a dual-stack IPV6 instance, you must pass this parameter. If it is cross-region binding, you must pass the parameter, and the InstanceId parameter is not supported.
	EniIp *string `json:"EniIp,omitnil,omitempty" name:"EniIp"`
}

type TargetHealth struct {
	// Private network IP of target
	IP *string `json:"IP,omitnil,omitempty" name:"IP"`

	// Port bound to the target
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Detailed information of the current health status. For example: Alive, Dead, Unknown, Close. Alive status is healthy, Dead state is abnormal, Unknown status includes not started, checking, unknown status, Close means health check disabled or listener status stop.
	HealthStatus *bool `json:"HealthStatus,omitnil,omitempty" name:"HealthStatus"`

	// Target instance ID, such as ins-12345678
	TargetId *string `json:"TargetId,omitnil,omitempty" name:"TargetId"`

	// Detailed information about the current health status. Alive: Healthy; Dead: Exceptional; Unknown: Check not started/Checking/Unknown status.
	HealthStatusDetail *string `json:"HealthStatusDetail,omitnil,omitempty" name:"HealthStatusDetail"`

	// Target group unique ID.
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Weight of the Target
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

type TargetRegionInfo struct {
	// Region of the target, such as ap-guangzhou
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Network of the target. For VPC, the format is vpc-abcd1234. For a basic network, the value is 0.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Target's network, in the format of 86323 for a private network, or 0 if it is a basic network
	NumericalVpcId *int64 `json:"NumericalVpcId,omitnil,omitempty" name:"NumericalVpcId"`
}

type ZoneInfo struct {
	// Unique ID of the AZ in numeric form, such as 100001
	ZoneId *uint64 `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Unique ID of the AZ in string format, such as ap-guangzhou-1
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// AZ name, such as Guangzhou 1
	ZoneName *string `json:"ZoneName,omitnil,omitempty" name:"ZoneName"`

	// Region of the availability zone, such as ap-guangzhou.
	ZoneRegion *string `json:"ZoneRegion,omitnil,omitempty" name:"ZoneRegion"`

	// Whether the availability zone is a local availability zone. For example, false.
	LocalZone *bool `json:"LocalZone,omitnil,omitempty" name:"LocalZone"`

	// Whether the availability zone is an edge availability zone. For example, false.
	EdgeZone *bool `json:"EdgeZone,omitnil,omitempty" name:"EdgeZone"`
}