// 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 v20180317

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"
)

// Predefined struct for user
type AddCustomizedConfigRequestParams struct {
	// Configuration name
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Configuration type. valid values: ["CLB", "SERVER", "LOCATION"], respectively indicating CLB configuration, SERVER configuration, and LOCATION configuration.
	ConfigType *string `json:"ConfigType,omitnil,omitempty" name:"ConfigType"`

	// Specifies the configuration content.
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`

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

type AddCustomizedConfigRequest struct {
	*tchttp.BaseRequest
	
	// Configuration name
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Configuration type. valid values: ["CLB", "SERVER", "LOCATION"], respectively indicating CLB configuration, SERVER configuration, and LOCATION configuration.
	ConfigType *string `json:"ConfigType,omitnil,omitempty" name:"ConfigType"`

	// Specifies the configuration content.
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`

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

func (r *AddCustomizedConfigRequest) 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 *AddCustomizedConfigRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ConfigName")
	delete(f, "ConfigType")
	delete(f, "ConfigContent")
	delete(f, "Tags")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddCustomizedConfigRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AddCustomizedConfigResponseParams struct {
	// Configuration ID.
	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 AddCustomizedConfigResponse struct {
	*tchttp.BaseResponse
	Response *AddCustomizedConfigResponseParams `json:"Response"`
}

func (r *AddCustomizedConfigResponse) 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 *AddCustomizedConfigResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AssociateCustomizedConfigRequestParams struct {
	// Configuration ID.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// Associated server or location
	BindList []*BindItem `json:"BindList,omitnil,omitempty" name:"BindList"`
}

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

	// Associated server or location
	BindList []*BindItem `json:"BindList,omitnil,omitempty" name:"BindList"`
}

func (r *AssociateCustomizedConfigRequest) 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 *AssociateCustomizedConfigRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "UconfigId")
	delete(f, "BindList")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AssociateCustomizedConfigRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AssociateCustomizedConfigResponseParams 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 AssociateCustomizedConfigResponse struct {
	*tchttp.BaseResponse
	Response *AssociateCustomizedConfigResponseParams `json:"Response"`
}

func (r *AssociateCustomizedConfigResponse) 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 *AssociateCustomizedConfigResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AssociateTargetGroupsRequestParams struct {
	// Specifies the binding relationship array. the target group type should be the same.
	// Specifies the maximum number of requests supported in a single request is 20.
	Associations []*TargetGroupAssociation `json:"Associations,omitnil,omitempty" name:"Associations"`
}

type AssociateTargetGroupsRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the binding relationship array. the target group type should be the same.
	// Specifies the maximum number of requests supported in a single request is 20.
	Associations []*TargetGroupAssociation `json:"Associations,omitnil,omitempty" name:"Associations"`
}

func (r *AssociateTargetGroupsRequest) 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 *AssociateTargetGroupsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Associations")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AssociateTargetGroupsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AssociateTargetGroupsResponseParams 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 AssociateTargetGroupsResponse struct {
	*tchttp.BaseResponse
	Response *AssociateTargetGroupsResponseParams `json:"Response"`
}

func (r *AssociateTargetGroupsResponse) 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 *AssociateTargetGroupsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// ID of associated listener
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

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

	// Protocol type of associated listener, such as HTTP or TCP
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Port of associated listener
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Domain name of associated 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 associated forwarding rule
	// Note: this field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

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

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

	// Weight associated with the target group. this parameter takes effect only for the new version v2 target group.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

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

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

	// `HTTPS:443` listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// The domain name to be redirected under the listener `HTTPS:443`. If it is left empty, all domain names under the listener `HTTPS:443` will be configured with redirects.
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Redirection status code. Valid values: 301, 302, and 307.
	RewriteCodes []*int64 `json:"RewriteCodes,omitnil,omitempty" name:"RewriteCodes"`

	// Whether the matched URL is carried in redirection.
	TakeUrls []*bool `json:"TakeUrls,omitnil,omitempty" name:"TakeUrls"`
}

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

	// `HTTPS:443` listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// The domain name to be redirected under the listener `HTTPS:443`. If it is left empty, all domain names under the listener `HTTPS:443` will be configured with redirects.
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Redirection status code. Valid values: 301, 302, and 307.
	RewriteCodes []*int64 `json:"RewriteCodes,omitnil,omitempty" name:"RewriteCodes"`

	// Whether the matched URL is carried in redirection.
	TakeUrls []*bool `json:"TakeUrls,omitnil,omitempty" name:"TakeUrls"`
}

func (r *AutoRewriteRequest) 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 *AutoRewriteRequest) 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, "ListenerId")
	delete(f, "Domains")
	delete(f, "RewriteCodes")
	delete(f, "TakeUrls")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AutoRewriteRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AutoRewriteResponseParams 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 AutoRewriteResponse struct {
	*tchttp.BaseResponse
	Response *AutoRewriteResponseParams `json:"Response"`
}

func (r *AutoRewriteResponse) 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 *AutoRewriteResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type AvailableZoneAffinityInfo struct {

	Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"`


	ExitRatio *uint64 `json:"ExitRatio,omitnil,omitempty" name:"ExitRatio"`


	ReentryRatio *uint64 `json:"ReentryRatio,omitnil,omitempty" name:"ReentryRatio"`
}

type Backend struct {
	// Specifies the backend service type. valid values: CVM, ENI, CCN, EVM, GLOBALROUTE, NAT, SRV.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Unique ID of a real server, which can be obtained from the unInstanceId field in the return of the DescribeInstances API
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the listening port of the backend service. if it is a full listening target group bound to a port range listener, this port returns 0, indicating an invalid port. the port of the bound backend service follows the listener port.
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Forwarding weight of a real server. Value range: [0, 100]. Default value: 10.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Public IP of a real server
	// Note: This field may return null, indicating that no valid values can be obtained.
	PublicIpAddresses []*string `json:"PublicIpAddresses,omitnil,omitempty" name:"PublicIpAddresses"`

	// Private network IP of the real server
	PrivateIpAddresses []*string `json:"PrivateIpAddresses,omitnil,omitempty" name:"PrivateIpAddresses"`

	// Real server instance names
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Real server binding time
	RegisteredTime *string `json:"RegisteredTime,omitnil,omitempty" name:"RegisteredTime"`

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

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

type BasicTargetGroupInfo struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Target group name
	TargetGroupName *string `json:"TargetGroupName,omitnil,omitempty" name:"TargetGroupName"`

	// Specifies the weight of the target group.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

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

	// Unbinding targets
	Targets []*BatchTarget `json:"Targets,omitnil,omitempty" name:"Targets"`
}

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

	// Unbinding targets
	Targets []*BatchTarget `json:"Targets,omitnil,omitempty" name:"Targets"`
}

func (r *BatchDeregisterTargetsRequest) 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 *BatchDeregisterTargetsRequest) 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, "Targets")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "BatchDeregisterTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type BatchDeregisterTargetsResponseParams struct {
	// IDs of the listeners failed to unbind
	FailListenerIdSet []*string `json:"FailListenerIdSet,omitnil,omitempty" name:"FailListenerIdSet"`

	// Failed to unbind error reason information.
	Message *string `json:"Message,omitnil,omitempty" name:"Message"`

	// 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 BatchDeregisterTargetsResponse struct {
	*tchttp.BaseResponse
	Response *BatchDeregisterTargetsResponseParams `json:"Response"`
}

func (r *BatchDeregisterTargetsResponse) 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 *BatchDeregisterTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

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

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

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

func (r *BatchModifyTargetTagRequest) 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 *BatchModifyTargetTagRequest) 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", "BatchModifyTargetTagRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type BatchModifyTargetTagResponseParams 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 BatchModifyTargetTagResponse struct {
	*tchttp.BaseResponse
	Response *BatchModifyTargetTagResponseParams `json:"Response"`
}

func (r *BatchModifyTargetTagResponse) 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 *BatchModifyTargetTagResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// 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)
}

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

	// Binding target
	Targets []*BatchTarget `json:"Targets,omitnil,omitempty" name:"Targets"`
}

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

	// Binding target
	Targets []*BatchTarget `json:"Targets,omitnil,omitempty" name:"Targets"`
}

func (r *BatchRegisterTargetsRequest) 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 *BatchRegisterTargetsRequest) 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, "Targets")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "BatchRegisterTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type BatchRegisterTargetsResponseParams struct {
	// ID of the listener failed to bind. Empty indicates all listeners are bound successfully.
	FailListenerIdSet []*string `json:"FailListenerIdSet,omitnil,omitempty" name:"FailListenerIdSet"`

	// Information of the binding failure cause.
	Message *string `json:"Message,omitnil,omitempty" name:"Message"`

	// 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 BatchRegisterTargetsResponse struct {
	*tchttp.BaseResponse
	Response *BatchRegisterTargetsResponseParams `json:"Response"`
}

func (r *BatchRegisterTargetsResponse) 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 *BatchRegisterTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// The port to Bind
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// CVM instance ID. The primary IP of the primary ENI will be bound.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// It is required for binding an IP. It supports an ENI IP or any other private IP. To bind an ENI IP, the ENI should be bound to a CVM instance before being bound to a CLB instance.
	// Note: either `InstanceId` or `EniIp` must be passed in, which is required for binding a dual-stack IPv6 CVM instance.
	EniIp *string `json:"EniIp,omitnil,omitempty" name:"EniIp"`

	// Weight of the CVM instance. Value range: [0, 100]. If it is not specified for binding the instance, 10 will be used by default.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Layer-7 rule ID. This parameter is required for Layer-7 CLB.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

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

type BindDetailItem struct {
	// Specifies the ID of CLB to be bound
	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
	ListenerName *string `json:"ListenerName,omitnil,omitempty" name:"ListenerName"`

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

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

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

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

type BindItem 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"`
}

type BlockedIP struct {
	// Blacklisted IP
	IP *string `json:"IP,omitnil,omitempty" name:"IP"`

	// Blacklisted time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Expiration time
	ExpireTime *string `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`
}

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 CertInfo struct {
	// ID of the certificate. If it's not specified, `CertContent` and `CertKey` are required. For a server certificate, you also need to specify `CertName`. 
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// Name of the uploaded certificate. It's required if `CertId` is not specified.
	CertName *string `json:"CertName,omitnil,omitempty" name:"CertName"`

	// Public key of the uploaded certificate. This is required if `CertId` is not specified.
	CertContent *string `json:"CertContent,omitnil,omitempty" name:"CertContent"`

	// Private key of the uploaded server certificate. This is required if `CertId` is not specified.
	CertKey *string `json:"CertKey,omitnil,omitempty" name:"CertKey"`
}

type CertificateInput struct {
	// Authentication type. UNIDIRECTIONAL: one-way authentication; MUTUAL: mutual authentication.
	// Default value: UNIDIRECTIONAL.
	SSLMode *string `json:"SSLMode,omitnil,omitempty" name:"SSLMode"`

	// Whether to enable client authentication for mutual authentication. ON: enable it; OPTIONAL: client certificate not required. Default value: ON.
	SSLVerifyClient *string `json:"SSLVerifyClient,omitnil,omitempty" name:"SSLVerifyClient"`

	// Server certificate ID. If this parameter is not specified, you need to upload a certificate and specify CertContent (server certificate content), CertKey (server certificate key), and CertName (server certificate name).
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// ID of a client certificate. When the listener adopts mutual authentication (i.e., SSLMode = mutual), if you leave this parameter empty, you must upload the client certificate, including CertCaContent and CertCaName.
	CertCaId *string `json:"CertCaId,omitnil,omitempty" name:"CertCaId"`

	// Name of the uploaded server certificate. If there is no CertId, this parameter is required.
	CertName *string `json:"CertName,omitnil,omitempty" name:"CertName"`

	// Key of the uploaded server certificate. If there is no CertId, this parameter is required.
	CertKey *string `json:"CertKey,omitnil,omitempty" name:"CertKey"`

	// Content of the uploaded server certificate. If there is no CertId, this parameter is required.
	CertContent *string `json:"CertContent,omitnil,omitempty" name:"CertContent"`

	// Upload client CA certificate name. if SSLMode=MUTUAL and there is no CertCaId, this parameter is required.
	CertCaName *string `json:"CertCaName,omitnil,omitempty" name:"CertCaName"`

	// Upload client certificate content. if SSLMode is MUTUAL and there is no CertCaId, this parameter is required.
	CertCaContent *string `json:"CertCaContent,omitnil,omitempty" name:"CertCaContent"`
}

type CertificateOutput struct {
	// Authentication type. Value range: UNIDIRECTIONAL (unidirectional authentication), MUTUAL (mutual authentication)
	SSLMode *string `json:"SSLMode,omitnil,omitempty" name:"SSLMode"`

	// Specifies whether client certificate verification is enabled. this parameter is valid only when mutual authentication is enabled.
	SSLVerifyClient *string `json:"SSLVerifyClient,omitnil,omitempty" name:"SSLVerifyClient"`

	// Server certificate ID.
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// Client certificate ID.
	CertCaId *string `json:"CertCaId,omitnil,omitempty" name:"CertCaId"`

	// Specifies the server certificate ID for multi-server certificate scenario expansion.
	ExtCertIds []*string `json:"ExtCertIds,omitnil,omitempty" name:"ExtCertIds"`
}

type ClassicalHealth struct {
	// Private IP of a real server
	IP *string `json:"IP,omitnil,omitempty" name:"IP"`

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

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

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

	// Health check result. Value range: 1 (healthy), 0 (unhealthy)
	HealthStatus *int64 `json:"HealthStatus,omitnil,omitempty" name:"HealthStatus"`
}

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"`

	// Backend forwarding port of a listener
	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 persistence 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 period
	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
	UnhealthNum *int64 `json:"UnhealthNum,omitnil,omitempty" name:"UnhealthNum"`

	// 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. For more information, see the explanation of the field in the listener creating API.
	HttpCode *int64 `json:"HttpCode,omitnil,omitempty" name:"HttpCode"`

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

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

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

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

	// Listener status. Value range: 0 (creating), 1 (running)
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type ClassicalLoadBalancerInfo struct {
	// Real server ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// CLB instance ID list
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`
}

type ClassicalTarget struct {
	// Real server type. Value range: CVM, ENI (coming soon)
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Unique ID of a real server, which can be obtained from the unInstanceId field in the return of the DescribeInstances API
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Forwarding weight of a real server. Value range: [0, 100]. Default value: 10.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Public network IP of the real server
	PublicIpAddresses []*string `json:"PublicIpAddresses,omitnil,omitempty" name:"PublicIpAddresses"`

	// Private network IP of the real server
	PrivateIpAddresses []*string `json:"PrivateIpAddresses,omitnil,omitempty" name:"PrivateIpAddresses"`

	// Instance name of the real server
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Backend service status.
	// 1: failed; 2: running; 3: creating; 4: shut down; 5: returned; 6: returning; 7: restarting; 8: starting; 9: shutting down; 10: resetting password; 11: formatting; 12: making image; 13: setting bandwidth; 14: reinstalling system; 19: upgrading; 21: hot migrating.
	RunFlag *int64 `json:"RunFlag,omitnil,omitempty" name:"RunFlag"`
}

type ClassicalTargetInfo struct {
	// Real server ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Weight. Value range: [0, 100]
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

// Predefined struct for user
type CloneLoadBalancerRequestParams struct {
	// Specifies the clb ID. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the name of the cloned load balancing instance. rule: 1-60 english letters, chinese characters, digits, connecting lines "-", or underscores "_".
	// Note: if the name is identical to that of an existing load balancing instance in the system, the system will automatically generate a name for the created cloud load balancer instance.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// ID of the project to which a CLB instance belongs, which can be obtained through the `DescribeProject` API. If this parameter is not passed in, the default project will be used.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Sets the primary AZ ID for cross-AZ disaster recovery, such as `100001` or `ap-guangzhou-1`, which is applicable only to public network CLB.
	// Note: A primary AZ loads traffic, while a secondary AZ does not load traffic by default and will be used only if the primary AZ becomes unavailable. The platform will automatically select the optimal secondary AZ. You can use the `DescribeResource` API to query the primary AZ list of a region.
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// Specifies the secondary AZ ID for cross-AZ disaster recovery, such as `100001` or `ap-guangzhou-1`. It is applicable only to public network CLB.
	// Note: A secondary AZ will load traffic if the primary AZ is faulty. You can use the `DescribeMasterZones` API to query the primary and secondary AZ list of a region.
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// Applicable only to public network clb. AZ ID, both availability zone ID and name are supported. specify availability zone to create a load balancing instance, for example: 100001 or ap-guangzhou-1. if not passed, queries CVM instances in all azs. if needed, call the API for the query DescribeZones (https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1) to specify availability zone.
	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"`

	// Specifies the Vip to apply for cloud load balancer.
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// Proceed to purchase cloud load balancer and Tag it at the same time.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

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

	// BANDWIDTH PACKAGE ID, which can be obtained through the [DescribeBandwidthPackages](https://www.tencentcloud.com/document/api/215/19209?from_cn_redirect=1) api. specifies this parameter indicates the network billing mode (InternetAccessible.InternetChargeType) supports only billing by BANDWIDTH PACKAGE (BANDWIDTH_PACKAGE).
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

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

	// Enables cross-regional or cross-Vpc IP binding and creates a SnatIp.
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Cluster ID. This cluster identifier is used for configuring a public cloud exclusive cluster or a cloud dedicated cluster. To apply for a public cloud exclusive cluster, [submit a ticket](https://console.cloud.tencent.com/workorder/category). 
	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"`

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

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

	// The unique ID of EIP, such as EIP-qhx8udkc, applicable only to private network clb binding EIP, can be queried through the DescribeAddresses API (https://www.tencentcloud.com/document/product/215/16702?from_cn_redirect=1).
	EipAddressId *string `json:"EipAddressId,omitnil,omitempty" name:"EipAddressId"`
}

type CloneLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the clb ID. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the name of the cloned load balancing instance. rule: 1-60 english letters, chinese characters, digits, connecting lines "-", or underscores "_".
	// Note: if the name is identical to that of an existing load balancing instance in the system, the system will automatically generate a name for the created cloud load balancer instance.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// ID of the project to which a CLB instance belongs, which can be obtained through the `DescribeProject` API. If this parameter is not passed in, the default project will be used.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Sets the primary AZ ID for cross-AZ disaster recovery, such as `100001` or `ap-guangzhou-1`, which is applicable only to public network CLB.
	// Note: A primary AZ loads traffic, while a secondary AZ does not load traffic by default and will be used only if the primary AZ becomes unavailable. The platform will automatically select the optimal secondary AZ. You can use the `DescribeResource` API to query the primary AZ list of a region.
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// Specifies the secondary AZ ID for cross-AZ disaster recovery, such as `100001` or `ap-guangzhou-1`. It is applicable only to public network CLB.
	// Note: A secondary AZ will load traffic if the primary AZ is faulty. You can use the `DescribeMasterZones` API to query the primary and secondary AZ list of a region.
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// Applicable only to public network clb. AZ ID, both availability zone ID and name are supported. specify availability zone to create a load balancing instance, for example: 100001 or ap-guangzhou-1. if not passed, queries CVM instances in all azs. if needed, call the API for the query DescribeZones (https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1) to specify availability zone.
	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"`

	// Specifies the Vip to apply for cloud load balancer.
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// Proceed to purchase cloud load balancer and Tag it at the same time.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

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

	// BANDWIDTH PACKAGE ID, which can be obtained through the [DescribeBandwidthPackages](https://www.tencentcloud.com/document/api/215/19209?from_cn_redirect=1) api. specifies this parameter indicates the network billing mode (InternetAccessible.InternetChargeType) supports only billing by BANDWIDTH PACKAGE (BANDWIDTH_PACKAGE).
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

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

	// Enables cross-regional or cross-Vpc IP binding and creates a SnatIp.
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Cluster ID. This cluster identifier is used for configuring a public cloud exclusive cluster or a cloud dedicated cluster. To apply for a public cloud exclusive cluster, [submit a ticket](https://console.cloud.tencent.com/workorder/category). 
	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"`

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

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

	// The unique ID of EIP, such as EIP-qhx8udkc, applicable only to private network clb binding EIP, can be queried through the DescribeAddresses API (https://www.tencentcloud.com/document/product/215/16702?from_cn_redirect=1).
	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 {
	// Unique cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

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

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

	// Configuration type. available values: CLB (instance dimension configuration), SERVER (service dimension configuration), LOCATION (rule dimension configuration).
	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"`

	// Specifies the configured creation time.
	// Format: YYYY-MM-DD HH:MM:ss.
	CreateTimestamp *string `json:"CreateTimestamp,omitnil,omitempty" name:"CreateTimestamp"`

	// Specifies the modification time of the configuration.
	// Format: YYYY-MM-DD HH:MM:ss.
	UpdateTimestamp *string `json:"UpdateTimestamp,omitnil,omitempty" name:"UpdateTimestamp"`
}

// Predefined struct for user
type CreateClsLogSetRequestParams struct {
	// Logset name, which must be unique among all CLS logsets; default value: clb_logset
	LogsetName *string `json:"LogsetName,omitnil,omitempty" name:"LogsetName"`

	// Logset retention period (in days)
	//
	// Deprecated: Period is deprecated.
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Logset type. Valid values: ACCESS (access logs; default value) and HEALTH (health check logs).
	LogsetType *string `json:"LogsetType,omitnil,omitempty" name:"LogsetType"`
}

type CreateClsLogSetRequest struct {
	*tchttp.BaseRequest
	
	// Logset name, which must be unique among all CLS logsets; default value: clb_logset
	LogsetName *string `json:"LogsetName,omitnil,omitempty" name:"LogsetName"`

	// Logset retention period (in days)
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Logset type. Valid values: ACCESS (access logs; default value) and HEALTH (health check logs).
	LogsetType *string `json:"LogsetType,omitnil,omitempty" name:"LogsetType"`
}

func (r *CreateClsLogSetRequest) 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 *CreateClsLogSetRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LogsetName")
	delete(f, "Period")
	delete(f, "LogsetType")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateClsLogSetRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateClsLogSetResponseParams struct {
	// Logset ID.
	LogsetId *string `json:"LogsetId,omitnil,omitempty" name:"LogsetId"`

	// 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 CreateClsLogSetResponse struct {
	*tchttp.BaseResponse
	Response *CreateClsLogSetResponseParams `json:"Response"`
}

func (r *CreateClsLogSetResponse) 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 *CreateClsLogSetResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateListenerRequestParams struct {
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://intl.cloud.tencent.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Ports for creating listeners. Each port corresponds to a listener.
	// Port range: 1–65535.
	Ports []*int64 `json:"Ports,omitnil,omitempty" name:"Ports"`

	// Listener protocol. Valid values: TCP, UDP, HTTP, HTTPS, TCP_SSL, and QUIC.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// List of names of listeners to be created. The names correspond to ports one by one. This parameter can be left blank if you do not want to name the listeners immediately.
	ListenerNames []*string `json:"ListenerNames,omitnil,omitempty" name:"ListenerNames"`

	// Health check parameter. This parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners.
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Certificate-related information. The parameter limitations are as follows:
	// <li>This parameter applies only to TCP_SSL listeners and HTTPS listeners with the SNI feature disabled.</li>
	// <li>Either this parameter or the MultiCertInfo parameter should be specified when you create a TCP_SSL listener or an HTTPS listener with the SNI feature disabled. You cannot specify them at the same time.</li>
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Session persistence duration, in seconds. Value range: 30–3600. Default value: 0, indicating that session persistence is not enabled by default. This parameter applies only to TCP and UDP listeners.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Listener forwarding mode. valid values: WRR (weighted round-robin), LEAST_CONN (LEAST connections).
	// Default value: WRR. This parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Whether to enable the SNI feature. This parameter applies only to HTTPS listeners. 0: disable; 1: enable.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// Real server type. NODE: ordinary node; TARGETGROUP: real server group. This parameter applies only to TCP and UDP listeners. For layer-7 listeners, set the type in forwarding rules.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Session persistence type. If this parameter is not specified or the value is set to NORMAL, the default session persistence type is used. QUIC_CID: perform session persistence based on QUIC connection ID. If the value is set to QUIC_CID, only the UDP protocol is supported. This parameter applies only to TCP and UDP listeners. For layer-7 listeners, set the type in forwarding rules. (If the value is set to QUIC_CID, the Protocol value should be UDP, the Scheduler value should be WRR, and only IPv4 addresses are supported.)
	SessionType *string `json:"SessionType,omitnil,omitempty" name:"SessionType"`

	// Whether to enable the persistent connection feature. This parameter applies only to HTTP and HTTPS listeners. 0: disable; 1: enable. This feature is disabled by default.
	// Enable this feature with caution if the maximum number of connections is limited for real servers. This feature is in beta testing. To use it, submit a [beta testing application](https://intl.cloud.tencent.com/apply/p/tsodp6qm21?from_cn_redirect=1).
	KeepaliveEnable *int64 `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// End port. This parameter is required for creating a listener with a port range. In this case, the input parameter Ports allows only one value to indicate the start port. To experience the port range feature, [submit a ticket for application](https://console.cloud.tencent.com/workorder/category).
	EndPort *uint64 `json:"EndPort,omitnil,omitempty" name:"EndPort"`

	// Reschedules when unbinding real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	DeregisterTargetRst *bool `json:"DeregisterTargetRst,omitnil,omitempty" name:"DeregisterTargetRst"`

	// Certificate information. You can import multiple server certificates with different algorithms at the same time. The parameter limitations are as follows:
	// <li>This parameter applies only to TCP_SSL listeners and HTTPS listeners with the SNI feature disabled.</li>
	// <li>Either this parameter or the Certificate parameter should be specified when you create a TCP_SSL listener or an HTTPS listener with the SNI feature disabled. You cannot specify them at the same time.</li>
	MultiCertInfo *MultiCertInfo `json:"MultiCertInfo,omitnil,omitempty" name:"MultiCertInfo"`

	// Maximum number of connections to a listener. Currently, this parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners of LCU-supported instances. If this parameter is not specified or the value is set to -1, the maximum number of connections is not limited. This parameter is not supported for classic network-based instances.
	MaxConn *int64 `json:"MaxConn,omitnil,omitempty" name:"MaxConn"`

	// Maximum number of new connections to a listener. Currently, this parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners of LCU-supported instances. If this parameter is not specified or the value is set to -1, the maximum number of new connections is not limited. This parameter is not supported for classic network-based instances.
	MaxCps *int64 `json:"MaxCps,omitnil,omitempty" name:"MaxCps"`

	// Specifies the idle connection timeout in seconds. this parameter applies only to TCP/UDP listeners. default value: 900 for TCP listeners and 300 for UDP listeners. value range: 10–900 for shared instances and dedicated instances and 10–1980 for lcu-supported instances. to set a value exceeding the permissible range, [submit a ticket for application](https://console.cloud.tencent.com/workorder/category).
	IdleConnectTimeout *int64 `json:"IdleConnectTimeout,omitnil,omitempty" name:"IdleConnectTimeout"`

	// Specifies whether PP is supported for TCP_SSL and QUIC.
	ProxyProtocol *bool `json:"ProxyProtocol,omitnil,omitempty" name:"ProxyProtocol"`

	// Whether SNAT (source IP replacement) is enabled. valid values: True (enabled), False (disabled). disabled by default. note: when SnatEnable is enabled, the client source IP will be replaced, at this point the `pass through client source IP` option is disabled, and vice versa.
	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`

	// End port of a listener with a port range. Range of the port: 2–65535.
	FullEndPorts []*int64 `json:"FullEndPorts,omitnil,omitempty" name:"FullEndPorts"`

	// Enable private network http listener h2c switch. valid values: True (enable), False (disable).
	// Disabled by default.
	H2cSwitch *bool `json:"H2cSwitch,omitnil,omitempty" name:"H2cSwitch"`

	// Whether to disable SSL for TCP_SSL listeners. dual-stack binding is still supported after SSL is disabled. valid values: True (disable), False (enable).
	// Disabled by default.
	SslCloseSwitch *bool `json:"SslCloseSwitch,omitnil,omitempty" name:"SslCloseSwitch"`

	// Data compression mode. Valid values: transparent (passthrough mode) and compatibility (compatibility mode).
	DataCompressMode *string `json:"DataCompressMode,omitnil,omitempty" name:"DataCompressMode"`

	// Reschedules when setting backend server weight to 0. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleTargetZeroWeight *bool `json:"RescheduleTargetZeroWeight,omitnil,omitempty" name:"RescheduleTargetZeroWeight"`

	// Reschedules when health check exceptions occur on real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleUnhealthy *bool `json:"RescheduleUnhealthy,omitnil,omitempty" name:"RescheduleUnhealthy"`

	// Reschedules when adding or removing backend servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleExpandTarget *bool `json:"RescheduleExpandTarget,omitnil,omitempty" name:"RescheduleExpandTarget"`

	// Specifies the trigger start time for rescheduling. value range: 0-3600s. supported only by TCP/UDP listeners.
	RescheduleStartTime *int64 `json:"RescheduleStartTime,omitnil,omitempty" name:"RescheduleStartTime"`

	// Rescheduling trigger duration. valid values: 0-3600s. only TCP/UDP listeners support this.
	RescheduleInterval *int64 `json:"RescheduleInterval,omitnil,omitempty" name:"RescheduleInterval"`
}

type CreateListenerRequest struct {
	*tchttp.BaseRequest
	
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://intl.cloud.tencent.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Ports for creating listeners. Each port corresponds to a listener.
	// Port range: 1–65535.
	Ports []*int64 `json:"Ports,omitnil,omitempty" name:"Ports"`

	// Listener protocol. Valid values: TCP, UDP, HTTP, HTTPS, TCP_SSL, and QUIC.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// List of names of listeners to be created. The names correspond to ports one by one. This parameter can be left blank if you do not want to name the listeners immediately.
	ListenerNames []*string `json:"ListenerNames,omitnil,omitempty" name:"ListenerNames"`

	// Health check parameter. This parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners.
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Certificate-related information. The parameter limitations are as follows:
	// <li>This parameter applies only to TCP_SSL listeners and HTTPS listeners with the SNI feature disabled.</li>
	// <li>Either this parameter or the MultiCertInfo parameter should be specified when you create a TCP_SSL listener or an HTTPS listener with the SNI feature disabled. You cannot specify them at the same time.</li>
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Session persistence duration, in seconds. Value range: 30–3600. Default value: 0, indicating that session persistence is not enabled by default. This parameter applies only to TCP and UDP listeners.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Listener forwarding mode. valid values: WRR (weighted round-robin), LEAST_CONN (LEAST connections).
	// Default value: WRR. This parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Whether to enable the SNI feature. This parameter applies only to HTTPS listeners. 0: disable; 1: enable.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// Real server type. NODE: ordinary node; TARGETGROUP: real server group. This parameter applies only to TCP and UDP listeners. For layer-7 listeners, set the type in forwarding rules.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Session persistence type. If this parameter is not specified or the value is set to NORMAL, the default session persistence type is used. QUIC_CID: perform session persistence based on QUIC connection ID. If the value is set to QUIC_CID, only the UDP protocol is supported. This parameter applies only to TCP and UDP listeners. For layer-7 listeners, set the type in forwarding rules. (If the value is set to QUIC_CID, the Protocol value should be UDP, the Scheduler value should be WRR, and only IPv4 addresses are supported.)
	SessionType *string `json:"SessionType,omitnil,omitempty" name:"SessionType"`

	// Whether to enable the persistent connection feature. This parameter applies only to HTTP and HTTPS listeners. 0: disable; 1: enable. This feature is disabled by default.
	// Enable this feature with caution if the maximum number of connections is limited for real servers. This feature is in beta testing. To use it, submit a [beta testing application](https://intl.cloud.tencent.com/apply/p/tsodp6qm21?from_cn_redirect=1).
	KeepaliveEnable *int64 `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// End port. This parameter is required for creating a listener with a port range. In this case, the input parameter Ports allows only one value to indicate the start port. To experience the port range feature, [submit a ticket for application](https://console.cloud.tencent.com/workorder/category).
	EndPort *uint64 `json:"EndPort,omitnil,omitempty" name:"EndPort"`

	// Reschedules when unbinding real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	DeregisterTargetRst *bool `json:"DeregisterTargetRst,omitnil,omitempty" name:"DeregisterTargetRst"`

	// Certificate information. You can import multiple server certificates with different algorithms at the same time. The parameter limitations are as follows:
	// <li>This parameter applies only to TCP_SSL listeners and HTTPS listeners with the SNI feature disabled.</li>
	// <li>Either this parameter or the Certificate parameter should be specified when you create a TCP_SSL listener or an HTTPS listener with the SNI feature disabled. You cannot specify them at the same time.</li>
	MultiCertInfo *MultiCertInfo `json:"MultiCertInfo,omitnil,omitempty" name:"MultiCertInfo"`

	// Maximum number of connections to a listener. Currently, this parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners of LCU-supported instances. If this parameter is not specified or the value is set to -1, the maximum number of connections is not limited. This parameter is not supported for classic network-based instances.
	MaxConn *int64 `json:"MaxConn,omitnil,omitempty" name:"MaxConn"`

	// Maximum number of new connections to a listener. Currently, this parameter applies only to TCP, UDP, TCP_SSL, and QUIC listeners of LCU-supported instances. If this parameter is not specified or the value is set to -1, the maximum number of new connections is not limited. This parameter is not supported for classic network-based instances.
	MaxCps *int64 `json:"MaxCps,omitnil,omitempty" name:"MaxCps"`

	// Specifies the idle connection timeout in seconds. this parameter applies only to TCP/UDP listeners. default value: 900 for TCP listeners and 300 for UDP listeners. value range: 10–900 for shared instances and dedicated instances and 10–1980 for lcu-supported instances. to set a value exceeding the permissible range, [submit a ticket for application](https://console.cloud.tencent.com/workorder/category).
	IdleConnectTimeout *int64 `json:"IdleConnectTimeout,omitnil,omitempty" name:"IdleConnectTimeout"`

	// Specifies whether PP is supported for TCP_SSL and QUIC.
	ProxyProtocol *bool `json:"ProxyProtocol,omitnil,omitempty" name:"ProxyProtocol"`

	// Whether SNAT (source IP replacement) is enabled. valid values: True (enabled), False (disabled). disabled by default. note: when SnatEnable is enabled, the client source IP will be replaced, at this point the `pass through client source IP` option is disabled, and vice versa.
	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`

	// End port of a listener with a port range. Range of the port: 2–65535.
	FullEndPorts []*int64 `json:"FullEndPorts,omitnil,omitempty" name:"FullEndPorts"`

	// Enable private network http listener h2c switch. valid values: True (enable), False (disable).
	// Disabled by default.
	H2cSwitch *bool `json:"H2cSwitch,omitnil,omitempty" name:"H2cSwitch"`

	// Whether to disable SSL for TCP_SSL listeners. dual-stack binding is still supported after SSL is disabled. valid values: True (disable), False (enable).
	// Disabled by default.
	SslCloseSwitch *bool `json:"SslCloseSwitch,omitnil,omitempty" name:"SslCloseSwitch"`

	// Data compression mode. Valid values: transparent (passthrough mode) and compatibility (compatibility mode).
	DataCompressMode *string `json:"DataCompressMode,omitnil,omitempty" name:"DataCompressMode"`

	// Reschedules when setting backend server weight to 0. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleTargetZeroWeight *bool `json:"RescheduleTargetZeroWeight,omitnil,omitempty" name:"RescheduleTargetZeroWeight"`

	// Reschedules when health check exceptions occur on real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleUnhealthy *bool `json:"RescheduleUnhealthy,omitnil,omitempty" name:"RescheduleUnhealthy"`

	// Reschedules when adding or removing backend servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleExpandTarget *bool `json:"RescheduleExpandTarget,omitnil,omitempty" name:"RescheduleExpandTarget"`

	// Specifies the trigger start time for rescheduling. value range: 0-3600s. supported only by TCP/UDP listeners.
	RescheduleStartTime *int64 `json:"RescheduleStartTime,omitnil,omitempty" name:"RescheduleStartTime"`

	// Rescheduling trigger duration. valid values: 0-3600s. only TCP/UDP listeners support this.
	RescheduleInterval *int64 `json:"RescheduleInterval,omitnil,omitempty" name:"RescheduleInterval"`
}

func (r *CreateListenerRequest) 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 *CreateListenerRequest) 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, "Ports")
	delete(f, "Protocol")
	delete(f, "ListenerNames")
	delete(f, "HealthCheck")
	delete(f, "Certificate")
	delete(f, "SessionExpireTime")
	delete(f, "Scheduler")
	delete(f, "SniSwitch")
	delete(f, "TargetType")
	delete(f, "SessionType")
	delete(f, "KeepaliveEnable")
	delete(f, "EndPort")
	delete(f, "DeregisterTargetRst")
	delete(f, "MultiCertInfo")
	delete(f, "MaxConn")
	delete(f, "MaxCps")
	delete(f, "IdleConnectTimeout")
	delete(f, "ProxyProtocol")
	delete(f, "SnatEnable")
	delete(f, "FullEndPorts")
	delete(f, "H2cSwitch")
	delete(f, "SslCloseSwitch")
	delete(f, "DataCompressMode")
	delete(f, "RescheduleTargetZeroWeight")
	delete(f, "RescheduleUnhealthy")
	delete(f, "RescheduleExpandTarget")
	delete(f, "RescheduleStartTime")
	delete(f, "RescheduleInterval")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateListenerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateListenerResponseParams struct {
	// Array of the unique IDs of created listeners.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// 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 CreateListenerResponse struct {
	*tchttp.BaseResponse
	Response *CreateListenerResponseParams `json:"Response"`
}

func (r *CreateListenerResponse) 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 *CreateListenerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateLoadBalancerRequestParams struct {
	// CLB instance network type:
	// OPEN: public network; INTERNAL: private network.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB instance type. Valid value: 1 (generic CLB instance).
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// CLB instance name, which takes effect only when only one instance is to be created in the request. It can consist 1 to 60 letters, digits, hyphens (-), or underscores (_).
	// Note: if the name of the new CLB instance already exists, a default name will be generated automatically.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Network ID of the target device on the CLB backend, such as `vpc-12345678`, which can be obtained through the `DescribeVpcEx` API. If this parameter is not entered, `DefaultVPC` is used by default. This parameter is required when creating a private network instance.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// A subnet ID should be specified when you purchase a private network CLB instance under a VPC. The VIP of the private network CLB instance is 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.
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// ID of the project to which a CLB instance belongs, which can be obtained through the `DescribeProject` API. If this parameter is not entered, the default project will be used.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// It's only applicable to public network CLB instances. IP version. Values: `IPV4`, `IPV6` and `IPv6FullChain` (case-insensitive). Default: `IPV4`. Note: `IPV6` indicates IPv6 NAT64, while `IPv6FullChain` indicates IPv6. 
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// Specifies the count of cloud load balancers to create, with a default value of 1. the count must not exceed the maximum value allowed for the account, with a default creation maximum value of 20.
	Number *uint64 `json:"Number,omitnil,omitempty" name:"Number"`

	// Applicable only to public network IPv4 cloud load balancer instances. specifies the primary AZ ID for cross-az disaster recovery. both AZ ID and name are supported, such as 100001 or ap-guangzhou-1.
	// 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.
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// Applicable only to public network IPv4 clb instances. specifies the AZ ID or availability zone name for creating a clb instance. for example, 100001 or ap-guangzhou-1.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Network billing mode by the maximum outbound bandwidth. It applies only to private network LCU-supported instances and all public network instances. The feature of purchasing yearly/monthly subscription instances via an API is under grayscale release. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// ISP of VIP. Values: `CMCC` (China Mobile), `CUCC` (China Unicom) and `CTCC` (China Telecom). You need to activate static single-line IPs. This feature is in beta and is only available in Guangzhou, Shanghai, Nanjing, Jinan, Hangzhou, Fuzhou, Beijing, Shijiazhuang, Wuhan, Changsha, Chengdu and Chongqing regions. To try it out, please contact your sales rep. If it's specified, the network billing mode must be `BANDWIDTH_PACKAGE`. If it's not specified, BGP is used by default. To query ISPs supported in a region, please use [DescribeResources](https://intl.cloud.tencent.com/document/api/214/70213?from_cn_redirect=1). 
	VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"`

	// Tags the CLB instance when purchasing it. Up to 20 tag key value pairs are supported.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Specifies the VIP for the application of a CLB instance. This parameter is optional. If you do not specify this parameter, the system automatically assigns a value for the parameter. IPv4 and IPv6 CLB instances support this parameter, but IPv6 NAT64 CLB instances do not.
	// Note: If the specified VIP is occupied or is not within the IP range of the specified VPC subnet, you cannot use the VIP to create a CLB instance in a private network or an IPv6 BGP CLB instance in a public network.
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// BANDWIDTH PACKAGE ID, which can be obtained through the [DescribeBandwidthPackages](https://www.tencentcloud.com/document/api/215/19209?from_cn_redirect=1) api. specifies the BANDWIDTH PACKAGE ID. when this parameter is specified, the network billing mode (InternetAccessible.InternetChargeType) supports only 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 operator type is not BGP, the BANDWIDTH PACKAGE ID cannot be specified.
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

	// Information about the dedicated CLB instance. You must specify this parameter when you create a dedicated CLB instance in a private network.
	ExclusiveCluster *ExclusiveCluster `json:"ExclusiveCluster,omitnil,omitempty" name:"ExclusiveCluster"`

	// Specification of the LCU-supported instance.<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>If you need to create a shared instance, this parameter is not required.</li></ul> For specification details, see [Instance Specifications Comparison](https://intl.cloud.tencent.com/document/product/214/84689?from_cn_redirect=1).
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// Cluster ID. This cluster identifier is used for configuring a public cloud exclusive cluster or a cloud dedicated cluster. To apply for a public cloud exclusive cluster, [submit a ticket](https://console.cloud.tencent.com/workorder/category). For cloud dedicated clusters, see the descriptions in [Cloud Dedicated Cluster](https://intl.cloud.tencent.com/document/product/1346?from_cn_redirect=1).
	ClusterIds []*string `json:"ClusterIds,omitnil,omitempty" name:"ClusterIds"`

	// A unique string supplied by the client to ensure that the request is idempotent. Its maximum length is 64 ASCII characters. If this parameter is not specified, the idempotency of the request cannot be guaranteed.
	ClientToken *string `json:"ClientToken,omitnil,omitempty" name:"ClientToken"`

	// Whether Binding IPs of other VPCs feature switch
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// Creates `SnatIp` when the binding IPs of other VPCs feature is enabled
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Tag for the STGW exclusive cluster.
	ClusterTag *string `json:"ClusterTag,omitnil,omitempty" name:"ClusterTag"`

	// Applicable only to public network IPv4 clb instances. specifies the secondary AZ ID for cross-az disaster recovery. both AZ ID and name are supported, 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. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// The unique ID of EIP, which can be queried through the DescribeAddresses API (https://www.tencentcloud.com/document/product/215/16702?from_cn_redirect=1). format: EIP-qhx8udkc. applicable only to private network clb binding EIP.
	EipAddressId *string `json:"EipAddressId,omitnil,omitempty" name:"EipAddressId"`

	// Specifies whether to allow CLB traffic to the Target. enable (true): verify security groups on CLB. disable (false): verify security groups on both CLB and backend instances. IPv6 CLB security group default permit, this parameter is not required.
	LoadBalancerPassToTarget *bool `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	// Upgrades to domain name-based CLB
	DynamicVip *bool `json:"DynamicVip,omitnil,omitempty" name:"DynamicVip"`

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

	// Prepayment-related attributes of a CLB instance. The feature of purchasing yearly/monthly subscription instances via an API is under grayscale release. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	LBChargePrepaid *LBChargePrepaid `json:"LBChargePrepaid,omitnil,omitempty" name:"LBChargePrepaid"`

	// Billing type of a CLB instance. Valid values: POSTPAID_BY_HOUR and PREPAID. Default value: POSTPAID_BY_HOUR. The feature of purchasing yearly/monthly subscription instances via an API is under grayscale release. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	LBChargeType *string `json:"LBChargeType,omitnil,omitempty" name:"LBChargeType"`

	// Topic ID of logs of traffic access over layer-7 protocols.
	AccessLogTopicId *string `json:"AccessLogTopicId,omitnil,omitempty" name:"AccessLogTopicId"`

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

type CreateLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance network type:
	// OPEN: public network; INTERNAL: private network.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB instance type. Valid value: 1 (generic CLB instance).
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// CLB instance name, which takes effect only when only one instance is to be created in the request. It can consist 1 to 60 letters, digits, hyphens (-), or underscores (_).
	// Note: if the name of the new CLB instance already exists, a default name will be generated automatically.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Network ID of the target device on the CLB backend, such as `vpc-12345678`, which can be obtained through the `DescribeVpcEx` API. If this parameter is not entered, `DefaultVPC` is used by default. This parameter is required when creating a private network instance.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// A subnet ID should be specified when you purchase a private network CLB instance under a VPC. The VIP of the private network CLB instance is 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.
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// ID of the project to which a CLB instance belongs, which can be obtained through the `DescribeProject` API. If this parameter is not entered, the default project will be used.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// It's only applicable to public network CLB instances. IP version. Values: `IPV4`, `IPV6` and `IPv6FullChain` (case-insensitive). Default: `IPV4`. Note: `IPV6` indicates IPv6 NAT64, while `IPv6FullChain` indicates IPv6. 
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// Specifies the count of cloud load balancers to create, with a default value of 1. the count must not exceed the maximum value allowed for the account, with a default creation maximum value of 20.
	Number *uint64 `json:"Number,omitnil,omitempty" name:"Number"`

	// Applicable only to public network IPv4 cloud load balancer instances. specifies the primary AZ ID for cross-az disaster recovery. both AZ ID and name are supported, such as 100001 or ap-guangzhou-1.
	// 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.
	MasterZoneId *string `json:"MasterZoneId,omitnil,omitempty" name:"MasterZoneId"`

	// Applicable only to public network IPv4 clb instances. specifies the AZ ID or availability zone name for creating a clb instance. for example, 100001 or ap-guangzhou-1.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Network billing mode by the maximum outbound bandwidth. It applies only to private network LCU-supported instances and all public network instances. The feature of purchasing yearly/monthly subscription instances via an API is under grayscale release. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// ISP of VIP. Values: `CMCC` (China Mobile), `CUCC` (China Unicom) and `CTCC` (China Telecom). You need to activate static single-line IPs. This feature is in beta and is only available in Guangzhou, Shanghai, Nanjing, Jinan, Hangzhou, Fuzhou, Beijing, Shijiazhuang, Wuhan, Changsha, Chengdu and Chongqing regions. To try it out, please contact your sales rep. If it's specified, the network billing mode must be `BANDWIDTH_PACKAGE`. If it's not specified, BGP is used by default. To query ISPs supported in a region, please use [DescribeResources](https://intl.cloud.tencent.com/document/api/214/70213?from_cn_redirect=1). 
	VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"`

	// Tags the CLB instance when purchasing it. Up to 20 tag key value pairs are supported.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Specifies the VIP for the application of a CLB instance. This parameter is optional. If you do not specify this parameter, the system automatically assigns a value for the parameter. IPv4 and IPv6 CLB instances support this parameter, but IPv6 NAT64 CLB instances do not.
	// Note: If the specified VIP is occupied or is not within the IP range of the specified VPC subnet, you cannot use the VIP to create a CLB instance in a private network or an IPv6 BGP CLB instance in a public network.
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// BANDWIDTH PACKAGE ID, which can be obtained through the [DescribeBandwidthPackages](https://www.tencentcloud.com/document/api/215/19209?from_cn_redirect=1) api. specifies the BANDWIDTH PACKAGE ID. when this parameter is specified, the network billing mode (InternetAccessible.InternetChargeType) supports only 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 operator type is not BGP, the BANDWIDTH PACKAGE ID cannot be specified.
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`

	// Information about the dedicated CLB instance. You must specify this parameter when you create a dedicated CLB instance in a private network.
	ExclusiveCluster *ExclusiveCluster `json:"ExclusiveCluster,omitnil,omitempty" name:"ExclusiveCluster"`

	// Specification of the LCU-supported instance.<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>If you need to create a shared instance, this parameter is not required.</li></ul> For specification details, see [Instance Specifications Comparison](https://intl.cloud.tencent.com/document/product/214/84689?from_cn_redirect=1).
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// Cluster ID. This cluster identifier is used for configuring a public cloud exclusive cluster or a cloud dedicated cluster. To apply for a public cloud exclusive cluster, [submit a ticket](https://console.cloud.tencent.com/workorder/category). For cloud dedicated clusters, see the descriptions in [Cloud Dedicated Cluster](https://intl.cloud.tencent.com/document/product/1346?from_cn_redirect=1).
	ClusterIds []*string `json:"ClusterIds,omitnil,omitempty" name:"ClusterIds"`

	// A unique string supplied by the client to ensure that the request is idempotent. Its maximum length is 64 ASCII characters. If this parameter is not specified, the idempotency of the request cannot be guaranteed.
	ClientToken *string `json:"ClientToken,omitnil,omitempty" name:"ClientToken"`

	// Whether Binding IPs of other VPCs feature switch
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// Creates `SnatIp` when the binding IPs of other VPCs feature is enabled
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Tag for the STGW exclusive cluster.
	ClusterTag *string `json:"ClusterTag,omitnil,omitempty" name:"ClusterTag"`

	// Applicable only to public network IPv4 clb instances. specifies the secondary AZ ID for cross-az disaster recovery. both AZ ID and name are supported, 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. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	SlaveZoneId *string `json:"SlaveZoneId,omitnil,omitempty" name:"SlaveZoneId"`

	// The unique ID of EIP, which can be queried through the DescribeAddresses API (https://www.tencentcloud.com/document/product/215/16702?from_cn_redirect=1). format: EIP-qhx8udkc. applicable only to private network clb binding EIP.
	EipAddressId *string `json:"EipAddressId,omitnil,omitempty" name:"EipAddressId"`

	// Specifies whether to allow CLB traffic to the Target. enable (true): verify security groups on CLB. disable (false): verify security groups on both CLB and backend instances. IPv6 CLB security group default permit, this parameter is not required.
	LoadBalancerPassToTarget *bool `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	// Upgrades to domain name-based CLB
	DynamicVip *bool `json:"DynamicVip,omitnil,omitempty" name:"DynamicVip"`

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

	// Prepayment-related attributes of a CLB instance. The feature of purchasing yearly/monthly subscription instances via an API is under grayscale release. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	LBChargePrepaid *LBChargePrepaid `json:"LBChargePrepaid,omitnil,omitempty" name:"LBChargePrepaid"`

	// Billing type of a CLB instance. Valid values: POSTPAID_BY_HOUR and PREPAID. Default value: POSTPAID_BY_HOUR. The feature of purchasing yearly/monthly subscription instances via an API is under grayscale release. If you want to experience this feature, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
	LBChargeType *string `json:"LBChargeType,omitnil,omitempty" name:"LBChargeType"`

	// Topic ID of logs of traffic access over layer-7 protocols.
	AccessLogTopicId *string `json:"AccessLogTopicId,omitnil,omitempty" name:"AccessLogTopicId"`

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

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, "ClusterIds")
	delete(f, "ClientToken")
	delete(f, "SnatPro")
	delete(f, "SnatIps")
	delete(f, "ClusterTag")
	delete(f, "SlaveZoneId")
	delete(f, "EipAddressId")
	delete(f, "LoadBalancerPassToTarget")
	delete(f, "DynamicVip")
	delete(f, "Egress")
	delete(f, "LBChargePrepaid")
	delete(f, "LBChargeType")
	delete(f, "AccessLogTopicId")
	delete(f, "AdvancedRoute")
	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 {
	// Array of unique CLB instance IDs.
	// This field may return `null` in some cases, such as there is delay during instance creation. You can query the IDs of the created instances by invoking `DescribeTaskStatus` with the `RequestId` or `DealName` returned by this API.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Order ID.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	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 CreateLoadBalancerSnatIpsRequestParams struct {
	// Specifies the unique ID of the cloud load balancer. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID, such as lb-12345678.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Added SnatIp information. specify IP for request or designated subnet for automatic application. can be accessed through [DescribeSubnets](https://www.tencentcloud.com/document/api/215/15784?from_cn_redirect=1) to query and retrieve. the default upper limit for one CLB instance is 10.
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Number of SNAT IPs to be added. This parameter is used in conjunction with `SnatIps`. Note that if `Ip` is specified in `SnapIps`, this parameter is not available. It defaults to `1` and the upper limit is `10`.
	Number *uint64 `json:"Number,omitnil,omitempty" name:"Number"`
}

type CreateLoadBalancerSnatIpsRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the unique ID of the cloud load balancer. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID, such as lb-12345678.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Added SnatIp information. specify IP for request or designated subnet for automatic application. can be accessed through [DescribeSubnets](https://www.tencentcloud.com/document/api/215/15784?from_cn_redirect=1) to query and retrieve. the default upper limit for one CLB instance is 10.
	SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"`

	// Number of SNAT IPs to be added. This parameter is used in conjunction with `SnatIps`. Note that if `Ip` is specified in `SnapIps`, this parameter is not available. It defaults to `1` and the upper limit is `10`.
	Number *uint64 `json:"Number,omitnil,omitempty" name:"Number"`
}

func (r *CreateLoadBalancerSnatIpsRequest) 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 *CreateLoadBalancerSnatIpsRequest) 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, "SnatIps")
	delete(f, "Number")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLoadBalancerSnatIpsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateLoadBalancerSnatIpsResponseParams 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 CreateLoadBalancerSnatIpsResponse struct {
	*tchttp.BaseResponse
	Response *CreateLoadBalancerSnatIpsResponseParams `json:"Response"`
}

func (r *CreateLoadBalancerSnatIpsResponse) 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 *CreateLoadBalancerSnatIpsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRuleRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the listener ID, which can be obtained through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Information of the new forwarding rule
	Rules []*RuleInput `json:"Rules,omitnil,omitempty" name:"Rules"`
}

type CreateRuleRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the listener ID, which can be obtained through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Information of the new forwarding rule
	Rules []*RuleInput `json:"Rules,omitnil,omitempty" name:"Rules"`
}

func (r *CreateRuleRequest) 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 *CreateRuleRequest) 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, "ListenerId")
	delete(f, "Rules")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRuleResponseParams struct {
	// Array of unique IDs of created forwarding rules
	LocationIds []*string `json:"LocationIds,omitnil,omitempty" name:"LocationIds"`

	// 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 CreateRuleResponse struct {
	*tchttp.BaseResponse
	Response *CreateRuleResponseParams `json:"Response"`
}

func (r *CreateRuleResponse) 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 *CreateRuleResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateTargetGroupRequestParams struct {
	// Target group name (up to 50 characters)
	TargetGroupName *string `json:"TargetGroupName,omitnil,omitempty" name:"TargetGroupName"`

	// Specifies the vpc id attribute of the target group. uses the default vpc if left empty.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Specifies the default Port of the target group. the default Port can be used when servers are added subsequently. this parameter is not supported for full-listen target groups. for non-full-listen target groups, either Port or Port in TargetGroupInstances.N is required.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Specifies the real servers bound to the target group. supports up to 50 at a time.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`

	// Target group type, currently supported v1 (legacy version target group) and v2 (new version target group), defaults to v1 (legacy version target group).
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Backend forwarding protocol of the target group. this field is required for the new version (v2) target group. currently supports TCP, UDP, HTTP, HTTPS, GRPC.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Health check.
	HealthCheck *TargetGroupHealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Scheduling algorithm. this parameter is valid only for target groups of the new version V2 when the backend forwarding protocol is HTTP, HTTPS, or GRPC. available values:.
	// <ur><li>WRR: weighted round-robin.</li><li>LEAST_CONN: LEAST connection.</li><li>IP_HASH: based on IP HASH.</li><li>default is WRR.</li></ur>.
	ScheduleAlgorithm *string `json:"ScheduleAlgorithm,omitnil,omitempty" name:"ScheduleAlgorithm"`

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

	// Specifies the default weight of the backend service. among them:.
	// <ul><li>Value ranges from 0 to 100.</li><li>after setting this value, when adding a backend service to the target group, if the backend service does not set Weight separately, use the default Weight here.</li><li>Weight parameter settings not supported for v1 target group type.</li></ul>.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Full listen target group flag. valid values: true (yes), false (no). only target groups of the new version V2 event type support this parameter.
	FullListenSwitch *bool `json:"FullListenSwitch,omitnil,omitempty" name:"FullListenSwitch"`

	// Specifies whether to enable the persistent connection feature. this parameter applies only to HTTP and HTTPS target groups. 0: disable; 1: enable. this feature is off by default.
	KeepaliveEnable *bool `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Session hold time, unit: second. value range: 30-3600. default: 0, disabled. this parameter is supported only for target groups with HTTP/HTTPS/GRPC backend forwarding protocol in the new version V2.
	SessionExpireTime *uint64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// IP version type.
	IpVersion *string `json:"IpVersion,omitnil,omitempty" name:"IpVersion"`


	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`
}

type CreateTargetGroupRequest struct {
	*tchttp.BaseRequest
	
	// Target group name (up to 50 characters)
	TargetGroupName *string `json:"TargetGroupName,omitnil,omitempty" name:"TargetGroupName"`

	// Specifies the vpc id attribute of the target group. uses the default vpc if left empty.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Specifies the default Port of the target group. the default Port can be used when servers are added subsequently. this parameter is not supported for full-listen target groups. for non-full-listen target groups, either Port or Port in TargetGroupInstances.N is required.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Specifies the real servers bound to the target group. supports up to 50 at a time.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`

	// Target group type, currently supported v1 (legacy version target group) and v2 (new version target group), defaults to v1 (legacy version target group).
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Backend forwarding protocol of the target group. this field is required for the new version (v2) target group. currently supports TCP, UDP, HTTP, HTTPS, GRPC.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Health check.
	HealthCheck *TargetGroupHealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Scheduling algorithm. this parameter is valid only for target groups of the new version V2 when the backend forwarding protocol is HTTP, HTTPS, or GRPC. available values:.
	// <ur><li>WRR: weighted round-robin.</li><li>LEAST_CONN: LEAST connection.</li><li>IP_HASH: based on IP HASH.</li><li>default is WRR.</li></ur>.
	ScheduleAlgorithm *string `json:"ScheduleAlgorithm,omitnil,omitempty" name:"ScheduleAlgorithm"`

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

	// Specifies the default weight of the backend service. among them:.
	// <ul><li>Value ranges from 0 to 100.</li><li>after setting this value, when adding a backend service to the target group, if the backend service does not set Weight separately, use the default Weight here.</li><li>Weight parameter settings not supported for v1 target group type.</li></ul>.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Full listen target group flag. valid values: true (yes), false (no). only target groups of the new version V2 event type support this parameter.
	FullListenSwitch *bool `json:"FullListenSwitch,omitnil,omitempty" name:"FullListenSwitch"`

	// Specifies whether to enable the persistent connection feature. this parameter applies only to HTTP and HTTPS target groups. 0: disable; 1: enable. this feature is off by default.
	KeepaliveEnable *bool `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Session hold time, unit: second. value range: 30-3600. default: 0, disabled. this parameter is supported only for target groups with HTTP/HTTPS/GRPC backend forwarding protocol in the new version V2.
	SessionExpireTime *uint64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// IP version type.
	IpVersion *string `json:"IpVersion,omitnil,omitempty" name:"IpVersion"`

	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`
}

func (r *CreateTargetGroupRequest) 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 *CreateTargetGroupRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupName")
	delete(f, "VpcId")
	delete(f, "Port")
	delete(f, "TargetGroupInstances")
	delete(f, "Type")
	delete(f, "Protocol")
	delete(f, "HealthCheck")
	delete(f, "ScheduleAlgorithm")
	delete(f, "Tags")
	delete(f, "Weight")
	delete(f, "FullListenSwitch")
	delete(f, "KeepaliveEnable")
	delete(f, "SessionExpireTime")
	delete(f, "IpVersion")
	delete(f, "SnatEnable")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateTargetGroupRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateTargetGroupResponseParams struct {
	// ID generated after target group creation
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// 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 CreateTargetGroupResponse struct {
	*tchttp.BaseResponse
	Response *CreateTargetGroupResponseParams `json:"Response"`
}

func (r *CreateTargetGroupResponse) 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 *CreateTargetGroupResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateTopicRequestParams struct {
	// Log topic name
	TopicName *string `json:"TopicName,omitnil,omitempty" name:"TopicName"`

	// The number of topic partitions, which changes as partitions are split or merged. Each log topic can have up to 50 partitions. If this parameter is not passed in, 1 partition will be created by default and up to 10 partitions are allowed to be created.
	PartitionCount *uint64 `json:"PartitionCount,omitnil,omitempty" name:"PartitionCount"`

	// Log type. Valid values: ACCESS (access logs; default value) and HEALTH (health check logs).
	TopicType *string `json:"TopicType,omitnil,omitempty" name:"TopicType"`

	// Storage time in days, defaults to 30.
	// -Log access to standard storage supports 1 to 3600 days. a value of 3640 indicates permanent retention.
	// -Log access to infrequent storage supports 7 to 3600 days. a value of 3640 indicates permanent retention.
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Log topic storage type. Valid values: `hot` (STANDARD storage); `cold` (IA storage). Default value: `hot`.
	StorageType *string `json:"StorageType,omitnil,omitempty" name:"StorageType"`
}

type CreateTopicRequest struct {
	*tchttp.BaseRequest
	
	// Log topic name
	TopicName *string `json:"TopicName,omitnil,omitempty" name:"TopicName"`

	// The number of topic partitions, which changes as partitions are split or merged. Each log topic can have up to 50 partitions. If this parameter is not passed in, 1 partition will be created by default and up to 10 partitions are allowed to be created.
	PartitionCount *uint64 `json:"PartitionCount,omitnil,omitempty" name:"PartitionCount"`

	// Log type. Valid values: ACCESS (access logs; default value) and HEALTH (health check logs).
	TopicType *string `json:"TopicType,omitnil,omitempty" name:"TopicType"`

	// Storage time in days, defaults to 30.
	// -Log access to standard storage supports 1 to 3600 days. a value of 3640 indicates permanent retention.
	// -Log access to infrequent storage supports 7 to 3600 days. a value of 3640 indicates permanent retention.
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Log topic storage type. Valid values: `hot` (STANDARD storage); `cold` (IA storage). Default value: `hot`.
	StorageType *string `json:"StorageType,omitnil,omitempty" name:"StorageType"`
}

func (r *CreateTopicRequest) 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 *CreateTopicRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TopicName")
	delete(f, "PartitionCount")
	delete(f, "TopicType")
	delete(f, "Period")
	delete(f, "StorageType")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateTopicRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateTopicResponseParams struct {
	// Log topic ID
	TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"`

	// 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 CreateTopicResponse struct {
	*tchttp.BaseResponse
	Response *CreateTopicResponseParams `json:"Response"`
}

func (r *CreateTopicResponse) 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 *CreateTopicResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type CrossTargets struct {
	// VPC ID of the CLB instance
	LocalVpcId *string `json:"LocalVpcId,omitnil,omitempty" name:"LocalVpcId"`

	// VPC ID of the CVM or ENI instance
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// IP address of the CVM or ENI instance
	IP *string `json:"IP,omitnil,omitempty" name:"IP"`

	// VPC name of the CVM or ENI instance
	VpcName *string `json:"VpcName,omitnil,omitempty" name:"VpcName"`

	// ENI ID of the CVM instance
	EniId *string `json:"EniId,omitnil,omitempty" name:"EniId"`

	// Submachine instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Submachine instance name.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Region of the CVM or ENI instance
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`
}

// Predefined struct for user
type DeleteCustomizedConfigRequestParams struct {
	// Specifies the configuration ID list for deletion.
	UconfigIdList []*string `json:"UconfigIdList,omitnil,omitempty" name:"UconfigIdList"`
}

type DeleteCustomizedConfigRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the configuration ID list for deletion.
	UconfigIdList []*string `json:"UconfigIdList,omitnil,omitempty" name:"UconfigIdList"`
}

func (r *DeleteCustomizedConfigRequest) 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 *DeleteCustomizedConfigRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "UconfigIdList")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteCustomizedConfigRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteCustomizedConfigResponseParams 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 DeleteCustomizedConfigResponse struct {
	*tchttp.BaseResponse
	Response *DeleteCustomizedConfigResponseParams `json:"Response"`
}

func (r *DeleteCustomizedConfigResponse) 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 *DeleteCustomizedConfigResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteListenerRequestParams struct {
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// The listener ID to be deleted, can be accessed through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`
}

type DeleteListenerRequest struct {
	*tchttp.BaseRequest
	
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// The listener ID to be deleted, can be accessed through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`
}

func (r *DeleteListenerRequest) 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 *DeleteListenerRequest) 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, "ListenerId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteListenerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteListenerResponseParams 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 DeleteListenerResponse struct {
	*tchttp.BaseResponse
	Response *DeleteListenerResponseParams `json:"Response"`
}

func (r *DeleteListenerResponse) 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 *DeleteListenerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteLoadBalancerListenersRequestParams struct {
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the listener ID array to be deleted, with a maximum of 20 elements. if left blank, all listeners of the clb will be deleted. can be obtained through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`
}

type DeleteLoadBalancerListenersRequest struct {
	*tchttp.BaseRequest
	
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the listener ID array to be deleted, with a maximum of 20 elements. if left blank, all listeners of the clb will be deleted. can be obtained through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`
}

func (r *DeleteLoadBalancerListenersRequest) 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 *DeleteLoadBalancerListenersRequest) 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")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLoadBalancerListenersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteLoadBalancerListenersResponseParams 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 DeleteLoadBalancerListenersResponse struct {
	*tchttp.BaseResponse
	Response *DeleteLoadBalancerListenersResponseParams `json:"Response"`
}

func (r *DeleteLoadBalancerListenersResponse) 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 *DeleteLoadBalancerListenersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteLoadBalancerRequestParams struct {
	// CLB instance ID array to be deleted, which can be obtained by calling the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API. The array can include up to 20 elements.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Whether to forcibly delete the CLB instance. True indicates forced deletion; False indicates non-forced deletion, and blocking verification is required.
	// The default value is False.
	// The deletion operation is blocked by default in the following cases. If you confirm forced deletion, the value of the forced verification parameter ForceDelete should be set to True.
	// 1. The instance with 20 or more RS bound to the backend is deleted.
	// 2. The instance with RS bound to the backend and the maximum peak inbound/outbound bandwidth exceeding 10 Mbps within 5 minutes is deleted.
	// 3. Thirty or more instances are deleted within 5 minutes in a single region.
	ForceDelete *bool `json:"ForceDelete,omitnil,omitempty" name:"ForceDelete"`
}

type DeleteLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance ID array to be deleted, which can be obtained by calling the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API. The array can include up to 20 elements.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Whether to forcibly delete the CLB instance. True indicates forced deletion; False indicates non-forced deletion, and blocking verification is required.
	// The default value is False.
	// The deletion operation is blocked by default in the following cases. If you confirm forced deletion, the value of the forced verification parameter ForceDelete should be set to True.
	// 1. The instance with 20 or more RS bound to the backend is deleted.
	// 2. The instance with RS bound to the backend and the maximum peak inbound/outbound bandwidth exceeding 10 Mbps within 5 minutes is deleted.
	// 3. Thirty or more instances are deleted within 5 minutes in a single region.
	ForceDelete *bool `json:"ForceDelete,omitnil,omitempty" name:"ForceDelete"`
}

func (r *DeleteLoadBalancerRequest) 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 *DeleteLoadBalancerRequest) 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, "ForceDelete")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteLoadBalancerResponseParams 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 DeleteLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *DeleteLoadBalancerResponseParams `json:"Response"`
}

func (r *DeleteLoadBalancerResponse) 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 *DeleteLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteLoadBalancerSnatIpsRequestParams struct {
	// Specifies the unique ID of the cloud load balancer. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID, such as lb-12345678.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the address array of SnatIp to delete. maximum deletion supported is 20.
	Ips []*string `json:"Ips,omitnil,omitempty" name:"Ips"`
}

type DeleteLoadBalancerSnatIpsRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the unique ID of the cloud load balancer. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID, such as lb-12345678.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the address array of SnatIp to delete. maximum deletion supported is 20.
	Ips []*string `json:"Ips,omitnil,omitempty" name:"Ips"`
}

func (r *DeleteLoadBalancerSnatIpsRequest) 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 *DeleteLoadBalancerSnatIpsRequest) 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, "Ips")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLoadBalancerSnatIpsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteLoadBalancerSnatIpsResponseParams 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 DeleteLoadBalancerSnatIpsResponse struct {
	*tchttp.BaseResponse
	Response *DeleteLoadBalancerSnatIpsResponseParams `json:"Response"`
}

func (r *DeleteLoadBalancerSnatIpsResponse) 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 *DeleteLoadBalancerSnatIpsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// Source listener ID
	SourceListenerId *string `json:"SourceListenerId,omitnil,omitempty" name:"SourceListenerId"`

	// Target listener ID
	TargetListenerId *string `json:"TargetListenerId,omitnil,omitempty" name:"TargetListenerId"`

	// Redirection relationship between forwarding rules
	RewriteInfos []*RewriteLocationMap `json:"RewriteInfos,omitnil,omitempty" name:"RewriteInfos"`
}

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

	// Source listener ID
	SourceListenerId *string `json:"SourceListenerId,omitnil,omitempty" name:"SourceListenerId"`

	// Target listener ID
	TargetListenerId *string `json:"TargetListenerId,omitnil,omitempty" name:"TargetListenerId"`

	// Redirection relationship between forwarding rules
	RewriteInfos []*RewriteLocationMap `json:"RewriteInfos,omitnil,omitempty" name:"RewriteInfos"`
}

func (r *DeleteRewriteRequest) 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 *DeleteRewriteRequest) 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, "SourceListenerId")
	delete(f, "TargetListenerId")
	delete(f, "RewriteInfos")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRewriteRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRewriteResponseParams 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 DeleteRewriteResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRewriteResponseParams `json:"Response"`
}

func (r *DeleteRewriteResponse) 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 *DeleteRewriteResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRuleRequestParams struct {
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the CLB instance listener. You can call the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Array of ids of forwarding rules to be deleted, can be accessed through the [DescribeLoadBalancersDetail](https://www.tencentcloud.com/document/api/214/46916?from_cn_redirect=1) api.
	LocationIds []*string `json:"LocationIds,omitnil,omitempty" name:"LocationIds"`

	// Domain name of the forwarding rule to be deleted. if it is multiple domains, you can specify any one of the domain name list. it can be accessed through the [DescribeLoadBalancersDetail](https://www.tencentcloud.com/document/api/214/46916?from_cn_redirect=1) api.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Forwarding path of the forwarding rule to be deleted can be accessed through the DescribeLoadBalancersDetail api (https://www.tencentcloud.com/document/api/214/46916?from_cn_redirect=1).
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// A default domain name must be configured under the listener. when you need to delete the default domain name, you can specify another domain name as the new default domain name. if the new default domain name is multiple domains, you can specify any one of the domain name list. it can be accessed through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	NewDefaultServerDomain *string `json:"NewDefaultServerDomain,omitnil,omitempty" name:"NewDefaultServerDomain"`
}

type DeleteRuleRequest struct {
	*tchttp.BaseRequest
	
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the CLB instance listener. You can call the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Array of ids of forwarding rules to be deleted, can be accessed through the [DescribeLoadBalancersDetail](https://www.tencentcloud.com/document/api/214/46916?from_cn_redirect=1) api.
	LocationIds []*string `json:"LocationIds,omitnil,omitempty" name:"LocationIds"`

	// Domain name of the forwarding rule to be deleted. if it is multiple domains, you can specify any one of the domain name list. it can be accessed through the [DescribeLoadBalancersDetail](https://www.tencentcloud.com/document/api/214/46916?from_cn_redirect=1) api.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Forwarding path of the forwarding rule to be deleted can be accessed through the DescribeLoadBalancersDetail api (https://www.tencentcloud.com/document/api/214/46916?from_cn_redirect=1).
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// A default domain name must be configured under the listener. when you need to delete the default domain name, you can specify another domain name as the new default domain name. if the new default domain name is multiple domains, you can specify any one of the domain name list. it can be accessed through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	NewDefaultServerDomain *string `json:"NewDefaultServerDomain,omitnil,omitempty" name:"NewDefaultServerDomain"`
}

func (r *DeleteRuleRequest) 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 *DeleteRuleRequest) 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, "ListenerId")
	delete(f, "LocationIds")
	delete(f, "Domain")
	delete(f, "Url")
	delete(f, "NewDefaultServerDomain")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRuleResponseParams 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 DeleteRuleResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRuleResponseParams `json:"Response"`
}

func (r *DeleteRuleResponse) 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 *DeleteRuleResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteTargetGroupsRequestParams struct {
	// Specifies the ID array of the target group. supports up to 20 deletions.
	TargetGroupIds []*string `json:"TargetGroupIds,omitnil,omitempty" name:"TargetGroupIds"`
}

type DeleteTargetGroupsRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the ID array of the target group. supports up to 20 deletions.
	TargetGroupIds []*string `json:"TargetGroupIds,omitnil,omitempty" name:"TargetGroupIds"`
}

func (r *DeleteTargetGroupsRequest) 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 *DeleteTargetGroupsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteTargetGroupsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteTargetGroupsResponseParams 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 DeleteTargetGroupsResponse struct {
	*tchttp.BaseResponse
	Response *DeleteTargetGroupsResponseParams `json:"Response"`
}

func (r *DeleteTargetGroupsResponse) 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 *DeleteTargetGroupsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

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

	// List of functions to be unbound
	FunctionTargets []*FunctionTarget `json:"FunctionTargets,omitnil,omitempty" name:"FunctionTargets"`

	// The ID of target forwarding rule. To unbind a function from an L7 forwarding rule, either `LocationId` or `Domain+Url` is required. 
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Domain name of the target forwarding rule. It is ignored if `LocationId` is specified. 
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// URL of the target forwarding rule. It is ignored if `LocationId` is specified. 
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

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

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

	// List of functions to be unbound
	FunctionTargets []*FunctionTarget `json:"FunctionTargets,omitnil,omitempty" name:"FunctionTargets"`

	// The ID of target forwarding rule. To unbind a function from an L7 forwarding rule, either `LocationId` or `Domain+Url` is required. 
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Domain name of the target forwarding rule. It is ignored if `LocationId` is specified. 
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// URL of the target forwarding rule. It is ignored if `LocationId` is specified. 
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

func (r *DeregisterFunctionTargetsRequest) 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 *DeregisterFunctionTargetsRequest) 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, "ListenerId")
	delete(f, "FunctionTargets")
	delete(f, "LocationId")
	delete(f, "Domain")
	delete(f, "Url")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeregisterFunctionTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeregisterFunctionTargetsResponseParams 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 DeregisterFunctionTargetsResponse struct {
	*tchttp.BaseResponse
	Response *DeregisterFunctionTargetsResponseParams `json:"Response"`
}

func (r *DeregisterFunctionTargetsResponse) 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 *DeregisterFunctionTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeregisterTargetGroupInstancesRequestParams struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Specifies information on server to be unbound. supports bulk removal with the largest quantity of 20 per operation.
	// Port is a required item in this api.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

type DeregisterTargetGroupInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Specifies information on server to be unbound. supports bulk removal with the largest quantity of 20 per operation.
	// Port is a required item in this api.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

func (r *DeregisterTargetGroupInstancesRequest) 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 *DeregisterTargetGroupInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupId")
	delete(f, "TargetGroupInstances")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeregisterTargetGroupInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeregisterTargetGroupInstancesResponseParams 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 DeregisterTargetGroupInstancesResponse struct {
	*tchttp.BaseResponse
	Response *DeregisterTargetGroupInstancesResponseParams `json:"Response"`
}

func (r *DeregisterTargetGroupInstancesResponse) 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 *DeregisterTargetGroupInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// List of real server IDs
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

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

	// List of real server IDs
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

func (r *DeregisterTargetsFromClassicalLBRequest) 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 *DeregisterTargetsFromClassicalLBRequest) 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, "InstanceIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeregisterTargetsFromClassicalLBRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeregisterTargetsFromClassicalLBResponseParams 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 DeregisterTargetsFromClassicalLBResponse struct {
	*tchttp.BaseResponse
	Response *DeregisterTargetsFromClassicalLBResponseParams `json:"Response"`
}

func (r *DeregisterTargetsFromClassicalLBResponse) 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 *DeregisterTargetsFromClassicalLBResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeregisterTargetsRequestParams struct {
	// CLB instance ID in the format of "lb-12345678"
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Listener ID in the format of "lbl-12345678"
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers to be unbound. Array length limit: 20.
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Forwarding rule ID in the format of "loc-12345678". When unbinding a server from a layer-7 forwarding rule, you must provide either this parameter or Domain+Url.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

type DeregisterTargetsRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance ID in the format of "lb-12345678"
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Listener ID in the format of "lbl-12345678"
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers to be unbound. Array length limit: 20.
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Forwarding rule ID in the format of "loc-12345678". When unbinding a server from a layer-7 forwarding rule, you must provide either this parameter or Domain+Url.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

func (r *DeregisterTargetsRequest) 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 *DeregisterTargetsRequest) 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, "ListenerId")
	delete(f, "Targets")
	delete(f, "LocationId")
	delete(f, "Domain")
	delete(f, "Url")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeregisterTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeregisterTargetsResponseParams 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 DeregisterTargetsResponse struct {
	*tchttp.BaseResponse
	Response *DeregisterTargetsResponseParams `json:"Response"`
}

func (r *DeregisterTargetsResponse) 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 *DeregisterTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

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

	// Maximum number of IPs to be returned. Default value: 100,000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

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

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

	// Maximum number of IPs to be returned. Default value: 100,000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

func (r *DescribeBlockIPListRequest) 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 *DescribeBlockIPListRequest) 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, "Offset")
	delete(f, "Limit")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeBlockIPListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeBlockIPListResponseParams struct {
	// Number of returned IPs
	BlockedIPCount *uint64 `json:"BlockedIPCount,omitnil,omitempty" name:"BlockedIPCount"`

	// Field for getting real client IP
	ClientIPField *string `json:"ClientIPField,omitnil,omitempty" name:"ClientIPField"`

	// List of IPs added to blocklist 12360
	BlockedIPList []*BlockedIP `json:"BlockedIPList,omitnil,omitempty" name:"BlockedIPList"`

	// 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 DescribeBlockIPListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeBlockIPListResponseParams `json:"Response"`
}

func (r *DescribeBlockIPListResponse) 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 *DescribeBlockIPListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeBlockIPTaskRequestParams struct {
	// Async task ID returned by the `ModifyBlockIPList` API
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

type DescribeBlockIPTaskRequest struct {
	*tchttp.BaseRequest
	
	// Async task ID returned by the `ModifyBlockIPList` API
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

func (r *DescribeBlockIPTaskRequest) 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 *DescribeBlockIPTaskRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TaskId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeBlockIPTaskRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeBlockIPTaskResponseParams struct {
	// 1: running; 2: failed; 6: succeeded
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// 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 DescribeBlockIPTaskResponse struct {
	*tchttp.BaseResponse
	Response *DescribeBlockIPTaskResponseParams `json:"Response"`
}

func (r *DescribeBlockIPTaskResponse) 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 *DescribeBlockIPTaskResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClassicalLBByInstanceIdRequestParams struct {
	// List of real server IDs
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

type DescribeClassicalLBByInstanceIdRequest struct {
	*tchttp.BaseRequest
	
	// List of real server IDs
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

func (r *DescribeClassicalLBByInstanceIdRequest) 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 *DescribeClassicalLBByInstanceIdRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClassicalLBByInstanceIdRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClassicalLBByInstanceIdResponseParams struct {
	// CLB information list
	LoadBalancerInfoList []*ClassicalLoadBalancerInfo `json:"LoadBalancerInfoList,omitnil,omitempty" name:"LoadBalancerInfoList"`

	// 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 DescribeClassicalLBByInstanceIdResponse struct {
	*tchttp.BaseResponse
	Response *DescribeClassicalLBByInstanceIdResponseParams `json:"Response"`
}

func (r *DescribeClassicalLBByInstanceIdResponse) 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 *DescribeClassicalLBByInstanceIdResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`
}

func (r *DescribeClassicalLBHealthStatusRequest) 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 *DescribeClassicalLBHealthStatusRequest) 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, "ListenerId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClassicalLBHealthStatusRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClassicalLBHealthStatusResponseParams struct {
	// Backend health status list.
	HealthList []*ClassicalHealth `json:"HealthList,omitnil,omitempty" name:"HealthList"`

	// 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 DescribeClassicalLBHealthStatusResponse struct {
	*tchttp.BaseResponse
	Response *DescribeClassicalLBHealthStatusResponseParams `json:"Response"`
}

func (r *DescribeClassicalLBHealthStatusResponse) 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 *DescribeClassicalLBHealthStatusResponse) 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"`

	// List of CLB listener IDs
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// CLB listening protocol. Valid values: TCP, UDP, HTTP, and HTTPS.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

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

	// Listener status. Valid values: 0 (creating) and 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"`

	// List of CLB listener IDs
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// CLB listening protocol. Valid values: TCP, UDP, HTTP, and HTTPS.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

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

	// Listener status. Valid values: 0 (creating) and 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 {
	// Specifies the 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 DescribeClassicalLBTargetsRequestParams struct {
	// CLB instance ID
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`
}

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

func (r *DescribeClassicalLBTargetsRequest) 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 *DescribeClassicalLBTargetsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClassicalLBTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClassicalLBTargetsResponseParams struct {
	// Real server list.
	Targets []*ClassicalTarget `json:"Targets,omitnil,omitempty" name:"Targets"`

	// 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 DescribeClassicalLBTargetsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeClassicalLBTargetsResponseParams `json:"Response"`
}

func (r *DescribeClassicalLBTargetsResponse) 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 *DescribeClassicalLBTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClsLogSetRequestParams struct {

}

type DescribeClsLogSetRequest struct {
	*tchttp.BaseRequest
	
}

func (r *DescribeClsLogSetRequest) 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 *DescribeClsLogSetRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClsLogSetRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClsLogSetResponseParams struct {
	// Logset ID
	LogsetId *string `json:"LogsetId,omitnil,omitempty" name:"LogsetId"`

	// Health check logset ID
	HealthLogsetId *string `json:"HealthLogsetId,omitnil,omitempty" name:"HealthLogsetId"`

	// 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 DescribeClsLogSetResponse struct {
	*tchttp.BaseResponse
	Response *DescribeClsLogSetResponseParams `json:"Response"`
}

func (r *DescribeClsLogSetResponse) 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 *DescribeClsLogSetResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCrossTargetsRequestParams struct {
	// Number of real server lists returned. Default value: 20; maximum value: 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset of the real server list returned. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Filter conditions to query CVMs and ENIs
	// <li> `vpc-id` - String - Required: No - (Filter condition) Filter by VPC ID, such as "vpc-12345678".</li>
	// <li> `ip` - String - Required: No - (Filter condition) Filter by real server IP, such as "192.168.0.1".</li>
	// <li> `listener-id` - String - Required: No - (Filter condition) Filter by listener ID, such as "lbl-12345678".</li>
	// <li> `location-id` - String - Required: No - (Filter condition) Filter by forwarding rule ID of the layer-7 listener, such as "loc-12345678".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeCrossTargetsRequest struct {
	*tchttp.BaseRequest
	
	// Number of real server lists returned. Default value: 20; maximum value: 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset of the real server list returned. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Filter conditions to query CVMs and ENIs
	// <li> `vpc-id` - String - Required: No - (Filter condition) Filter by VPC ID, such as "vpc-12345678".</li>
	// <li> `ip` - String - Required: No - (Filter condition) Filter by real server IP, such as "192.168.0.1".</li>
	// <li> `listener-id` - String - Required: No - (Filter condition) Filter by listener ID, such as "lbl-12345678".</li>
	// <li> `location-id` - String - Required: No - (Filter condition) Filter by forwarding rule ID of the layer-7 listener, such as "loc-12345678".</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

func (r *DescribeCrossTargetsRequest) 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 *DescribeCrossTargetsRequest) 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, "Filters")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCrossTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCrossTargetsResponseParams struct {
	// Total number of real server lists
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Real server list
	CrossTargetSet []*CrossTargets `json:"CrossTargetSet,omitnil,omitempty" name:"CrossTargetSet"`

	// 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 DescribeCrossTargetsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCrossTargetsResponseParams `json:"Response"`
}

func (r *DescribeCrossTargetsResponse) 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 *DescribeCrossTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCustomizedConfigAssociateListRequestParams struct {
	// Specifies the configuration ID, which can be obtained through the [DescribeCustomizedConfigList](https://www.tencentcloud.com/document/product/214/60009?from_cn_redirect=1) api.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// 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. can be queried through the `Domain` field in the [DescribeLoadBalancersDetail](https://www.tencentcloud.com/document/product/214/46916?from_cn_redirect=1) API return value.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type DescribeCustomizedConfigAssociateListRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the configuration ID, which can be obtained through the [DescribeCustomizedConfigList](https://www.tencentcloud.com/document/product/214/60009?from_cn_redirect=1) api.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// 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. can be queried through the `Domain` field in the [DescribeLoadBalancersDetail](https://www.tencentcloud.com/document/product/214/46916?from_cn_redirect=1) API return value.
	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, "UconfigId")
	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 {
	// List of bound resources
	BindList []*BindDetailItem `json:"BindList,omitnil,omitempty" name:"BindList"`

	// Total number of bound resources
	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. Valid values: `CLB` (CLB-specific configs), `SERVER` (domain name-specific configs), and `LOCATION` (forwarding rule-specific configs).
	ConfigType *string `json:"ConfigType,omitnil,omitempty" name:"ConfigType"`

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

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

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

	// Configuration ID, can be accessed through the [DescribeCustomizedConfigList](https://www.tencentcloud.com/document/api/214/60009?from_cn_redirect=1) api.
	UconfigIds []*string `json:"UconfigIds,omitnil,omitempty" name:"UconfigIds"`

	// Filter criteria as follows:.
	// - loadbalancer-id
	// Filter by [cloud load balancer ID]. instance billing mode such as lb-9vxezxza.
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1).
	// - vip
	// Filter by [clb VIP]. network billing mode such as "1.1.1.1", "2204::22:3".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1).
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeCustomizedConfigListRequest struct {
	*tchttp.BaseRequest
	
	// Configuration type. Valid values: `CLB` (CLB-specific configs), `SERVER` (domain name-specific configs), and `LOCATION` (forwarding rule-specific configs).
	ConfigType *string `json:"ConfigType,omitnil,omitempty" name:"ConfigType"`

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

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

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

	// Configuration ID, can be accessed through the [DescribeCustomizedConfigList](https://www.tencentcloud.com/document/api/214/60009?from_cn_redirect=1) api.
	UconfigIds []*string `json:"UconfigIds,omitnil,omitempty" name:"UconfigIds"`

	// Filter criteria as follows:.
	// - loadbalancer-id
	// Filter by [cloud load balancer ID]. instance billing mode such as lb-9vxezxza.
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1).
	// - vip
	// Filter by [clb VIP]. network billing mode such as "1.1.1.1", "2204::22:3".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1).
	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, "UconfigIds")
	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 DescribeIdleLoadBalancersRequestParams struct {
	// Data offset. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

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

	// The Region of the cloud load balancer can be obtained through the `RegionSet.Region` field in the API return value of [DescribeRegions](https://www.tencentcloud.com/document/product/1596/77930?from_cn_redirect=1).
	LoadBalancerRegion *string `json:"LoadBalancerRegion,omitnil,omitempty" name:"LoadBalancerRegion"`
}

type DescribeIdleLoadBalancersRequest struct {
	*tchttp.BaseRequest
	
	// Data offset. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

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

	// The Region of the cloud load balancer can be obtained through the `RegionSet.Region` field in the API return value of [DescribeRegions](https://www.tencentcloud.com/document/product/1596/77930?from_cn_redirect=1).
	LoadBalancerRegion *string `json:"LoadBalancerRegion,omitnil,omitempty" name:"LoadBalancerRegion"`
}

func (r *DescribeIdleLoadBalancersRequest) 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 *DescribeIdleLoadBalancersRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "LoadBalancerRegion")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeIdleLoadBalancersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeIdleLoadBalancersResponseParams struct {
	// Idle instance list.
	IdleLoadBalancers []*IdleLoadBalancer `json:"IdleLoadBalancers,omitnil,omitempty" name:"IdleLoadBalancers"`

	// Total number of idle CLB instances
	TotalCount *uint64 `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 DescribeIdleLoadBalancersResponse struct {
	*tchttp.BaseResponse
	Response *DescribeIdleLoadBalancersResponseParams `json:"Response"`
}

func (r *DescribeIdleLoadBalancersResponse) 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 *DescribeIdleLoadBalancersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLBListenersRequestParams struct {
	// List of private network IPs to be queried.
	Backends []*LbRsItem `json:"Backends,omitnil,omitempty" name:"Backends"`
}

type DescribeLBListenersRequest struct {
	*tchttp.BaseRequest
	
	// List of private network IPs to be queried.
	Backends []*LbRsItem `json:"Backends,omitnil,omitempty" name:"Backends"`
}

func (r *DescribeLBListenersRequest) 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 *DescribeLBListenersRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Backends")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLBListenersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLBListenersResponseParams struct {
	// Listener rule associated with the real server.
	LoadBalancers []*LBItem `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 DescribeLBListenersResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLBListenersResponseParams `json:"Response"`
}

func (r *DescribeLBListenersResponse) 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 *DescribeLBListenersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLBOperateProtectRequestParams struct {
	// CLB instance ID.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`
}

type DescribeLBOperateProtectRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance ID.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`
}

func (r *DescribeLBOperateProtectRequest) 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 *DescribeLBOperateProtectRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLBOperateProtectRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLBOperateProtectResponseParams struct {
	// Describes the returned cloud load balancer operation protection information array.
	LoadBalancerSet []*LBOperateProtectInfo `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 DescribeLBOperateProtectResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLBOperateProtectResponseParams `json:"Response"`
}

func (r *DescribeLBOperateProtectResponse) 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 *DescribeLBOperateProtectResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeListenersRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/api/214/30685?from_cn_redirect=1) api to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the array of clb listener ids to query, with a maximum of 100. you can call the [DescribeListeners](https://www.tencentcloud.com/document/api/214/30686?from_cn_redirect=1) api to obtain the ids.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// Type of the listener protocols to be queried. Values: TCP`, `UDP`, `HTTP`, `HTTPS`, `TCP_SSL` and `QUIC`.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Port of listener to query. value range: 1-65535.
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`
}

type DescribeListenersRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/api/214/30685?from_cn_redirect=1) api to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies the array of clb listener ids to query, with a maximum of 100. you can call the [DescribeListeners](https://www.tencentcloud.com/document/api/214/30686?from_cn_redirect=1) api to obtain the ids.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

	// Type of the listener protocols to be queried. Values: TCP`, `UDP`, `HTTP`, `HTTPS`, `TCP_SSL` and `QUIC`.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Port of listener to query. value range: 1-65535.
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`
}

func (r *DescribeListenersRequest) 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 *DescribeListenersRequest) 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, "Port")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeListenersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

	// Total number of listeners (filtered by port, protocol, and listener ID).
	TotalCount *uint64 `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 DescribeListenersResponse struct {
	*tchttp.BaseResponse
	Response *DescribeListenersResponseParams `json:"Response"`
}

func (r *DescribeListenersResponse) 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 *DescribeListenersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancerListByCertIdRequestParams struct {
	// Specifies the server certificate ID or client certificate ID. can be accessed through the [DescribeCertificate](https://www.tencentcloud.com/document/api/400/41674?from_cn_redirect=1) api.
	// Specifies the maximum length of the array is 20.
	CertIds []*string `json:"CertIds,omitnil,omitempty" name:"CertIds"`
}

type DescribeLoadBalancerListByCertIdRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the server certificate ID or client certificate ID. can be accessed through the [DescribeCertificate](https://www.tencentcloud.com/document/api/400/41674?from_cn_redirect=1) api.
	// Specifies the maximum length of the array is 20.
	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 list of CLB instances associated with it
	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 DescribeLoadBalancerOverviewRequestParams struct {

}

type DescribeLoadBalancerOverviewRequest struct {
	*tchttp.BaseRequest
	
}

func (r *DescribeLoadBalancerOverviewRequest) 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 *DescribeLoadBalancerOverviewRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLoadBalancerOverviewRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancerOverviewResponseParams struct {
	// Total number of CLB instances
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Number of CLB instances that are running
	RunningCount *int64 `json:"RunningCount,omitnil,omitempty" name:"RunningCount"`

	// Number of CLB instances that are isolated
	IsolationCount *int64 `json:"IsolationCount,omitnil,omitempty" name:"IsolationCount"`

	// Number of CLB instances that are about to expire
	WillExpireCount *int64 `json:"WillExpireCount,omitnil,omitempty" name:"WillExpireCount"`

	// 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 DescribeLoadBalancerOverviewResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLoadBalancerOverviewResponseParams `json:"Response"`
}

func (r *DescribeLoadBalancerOverviewResponse) 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 *DescribeLoadBalancerOverviewResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancerTrafficRequestParams struct {
	// CLB instance region. If this parameter is not passed in, CLB instances in all regions will be returned.
	LoadBalancerRegion *string `json:"LoadBalancerRegion,omitnil,omitempty" name:"LoadBalancerRegion"`
}

type DescribeLoadBalancerTrafficRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance region. If this parameter is not passed in, CLB instances in all regions will be returned.
	LoadBalancerRegion *string `json:"LoadBalancerRegion,omitnil,omitempty" name:"LoadBalancerRegion"`
}

func (r *DescribeLoadBalancerTrafficRequest) 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 *DescribeLoadBalancerTrafficRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerRegion")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLoadBalancerTrafficRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancerTrafficResponseParams struct {
	// Load balance information sorted in descending order by outbound bandwidth.
	LoadBalancerTraffic []*LoadBalancerTraffic `json:"LoadBalancerTraffic,omitnil,omitempty" name:"LoadBalancerTraffic"`

	// 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 DescribeLoadBalancerTrafficResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLoadBalancerTrafficResponseParams `json:"Response"`
}

func (r *DescribeLoadBalancerTrafficResponse) 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 *DescribeLoadBalancerTrafficResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLoadBalancersDetailRequestParams struct {
	// Number of CLB instance lists returned. Default value: 20; maximum value: 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset of the CLB instance list returned. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// List of fields. Only fields specified will be returned. If it’s left blank, `null` is returned. The fields `LoadBalancerId` and `LoadBalancerName` are added by default. For details about fields, see <a href="https://intl.cloud.tencent.com/document/api/214/30694?from_cn_redirect=1#LoadBalancerDetail">LoadBalancerDetail</a>.
	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"`

	// Querying conditions for cloud load balancer detailed information list. detailed filter criteria.
	// - loadbalancer-id
	// Filter by [clb ID], for example: lb-rbw5skde.
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1).
	// - project-id
	// Filters by [project ID]. for example: "0", "123".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeProject](https://www.tencentcloud.com/document/api/651/78725?from_cn_redirect=1).
	// - network
	// Filters by [clb network type]. for example: Public.
	// Type: String.
	// Required: No
	// Valid values: Private (Private network), Public (Public network).
	// - vip
	// Filter by [cloud load balancer VIP], such as "1.1.1.1", "2204::22:3".
	// Type: String.
	// Required: No
	// - vpcid
	// Filter by the vpc to which the cloud load balancer belongs, such as "vpc-12345678".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1).
	// - target-ip
	// Filters by the private network IP of the backend destination. for example: "1.1.1.1", "2203::214:4".
	// Type: String.
	// Required: No
	// - zone
	// Filter by [availability zone of the cloud load balancer]. for example: "ap-guangzhou-1".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1).
	// - tag-key
	// Filters by [tag key of the cloud load balancer tag], for example: "name".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeTags](https://www.tencentcloud.com/document/api/651/35316?from_cn_redirect=1).
	// - tag:*
	// Filter by [cloud load balancer tag], where ':' is followed by the tag key. for example, to filter by tag key 'name' with tag Values 'zhangsan' and 'lisi', use {"name": "tag:name","Values": ["zhangsan", "lisi"]}.
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeTagKeys](https://www.tencentcloud.com/document/api/651/35318?from_cn_redirect=1).
	// - fuzzy-search
	// Searches by [clb VIP, clb name] using fuzzy search, for example: "1.1".
	// Type: String.
	// Required: No
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeLoadBalancersDetailRequest struct {
	*tchttp.BaseRequest
	
	// Number of CLB instance lists returned. Default value: 20; maximum value: 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset of the CLB instance list returned. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// List of fields. Only fields specified will be returned. If it’s left blank, `null` is returned. The fields `LoadBalancerId` and `LoadBalancerName` are added by default. For details about fields, see <a href="https://intl.cloud.tencent.com/document/api/214/30694?from_cn_redirect=1#LoadBalancerDetail">LoadBalancerDetail</a>.
	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"`

	// Querying conditions for cloud load balancer detailed information list. detailed filter criteria.
	// - loadbalancer-id
	// Filter by [clb ID], for example: lb-rbw5skde.
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1).
	// - project-id
	// Filters by [project ID]. for example: "0", "123".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeProject](https://www.tencentcloud.com/document/api/651/78725?from_cn_redirect=1).
	// - network
	// Filters by [clb network type]. for example: Public.
	// Type: String.
	// Required: No
	// Valid values: Private (Private network), Public (Public network).
	// - vip
	// Filter by [cloud load balancer VIP], such as "1.1.1.1", "2204::22:3".
	// Type: String.
	// Required: No
	// - vpcid
	// Filter by the vpc to which the cloud load balancer belongs, such as "vpc-12345678".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1).
	// - target-ip
	// Filters by the private network IP of the backend destination. for example: "1.1.1.1", "2203::214:4".
	// Type: String.
	// Required: No
	// - zone
	// Filter by [availability zone of the cloud load balancer]. for example: "ap-guangzhou-1".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeZones](https://www.tencentcloud.com/document/product/213/15707?from_cn_redirect=1).
	// - tag-key
	// Filters by [tag key of the cloud load balancer tag], for example: "name".
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeTags](https://www.tencentcloud.com/document/api/651/35316?from_cn_redirect=1).
	// - tag:*
	// Filter by [cloud load balancer tag], where ':' is followed by the tag key. for example, to filter by tag key 'name' with tag Values 'zhangsan' and 'lisi', use {"name": "tag:name","Values": ["zhangsan", "lisi"]}.
	// Type: String.
	// Required: No
	// Method for obtaining: [DescribeTagKeys](https://www.tencentcloud.com/document/api/651/35318?from_cn_redirect=1).
	// - fuzzy-search
	// Searches by [clb VIP, clb name] using fuzzy search, for example: "1.1".
	// Type: String.
	// Required: No
	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 lists describing CLB instance details.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Load balancing 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 IDs. There can be up to 20 IDs.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// CLB instance network type:
	// OPEN: public network; INTERNAL: private network.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB instance type. 1: generic CLB instance; 0: classic CLB instance
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// Specifies the name of the clb instance. fuzzy query is supported.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Tencent cloud assigns a domain name to the cloud load balancer instance. fuzzy query is supported.
	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"`

	// Public IPs of the backend services bound with the load balancer. Only the public IPs of CVMs are supported now.
	BackendPublicIps []*string `json:"BackendPublicIps,omitnil,omitempty" name:"BackendPublicIps"`

	// Private IPs of the backend services bound with the load balancer. Only the private IPs of CVMs are supported now.
	BackendPrivateIps []*string `json:"BackendPrivateIps,omitnil,omitempty" name:"BackendPrivateIps"`

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

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

	// Sorting parameter. supports the following fields:.
	// - LoadBalancerName
	// - CreateTime
	// - Domain
	// - LoadBalancerType
	// 
	// Defaults to CreateTime.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// 1 for descending, 0 for ascending, defaults to 1, sorted by creation time in descending order.
	OrderType *int64 `json:"OrderType,omitnil,omitempty" name:"OrderType"`

	// Specifies the fuzzy search field for fuzzy matching the name, domain name, VIP address, or ID of a cloud load balancer instance.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// Project ID of the cloud load balancer instance. you can call the [DescribeProject](https://www.tencentcloud.com/document/api/651/78725?from_cn_redirect=1) api to obtain the ID. defaults to all projects if not passed.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Whether a CLB instance is bound to a real server. 0: no; 1: yes; -1: query all.
	WithRs *int64 `json:"WithRs,omitnil,omitempty" name:"WithRs"`

	// Specifies the unique vpc ID of the load balancing instance, such as vpc-bhqkbhdx. you can call the [DescribeVpcs](https://www.tencentcloud.com/document/api/215/15778?from_cn_redirect=1) api to obtain it.
	// Searches for cloud load balancer of basic network type. allows input '0'.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Security group ID, such as sg-m1cc****, can be obtained through the API [DescribeSecurityGroups](https://www.tencentcloud.com/document/product/215/15808?from_cn_redirect=1).
	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://intl.cloud.tencent.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` and 100 `Filter.Values`. Detailed filter conditions:
	// <li> internet-charge-type - Type: String - Required: No - Filter by CLB network billing mode, including `TRAFFIC_POSTPAID_BY_HOUR`</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Specifies the expanded fields to return. not specified, expanded fields do not return by default. supported expanded fields are as follows:.
	// <Li>TargetCount: specifies the number of real servers bound to it.</li>.
	AdditionalFields []*string `json:"AdditionalFields,omitnil,omitempty" name:"AdditionalFields"`
}

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

	// CLB instance network type:
	// OPEN: public network; INTERNAL: private network.
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB instance type. 1: generic CLB instance; 0: classic CLB instance
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// Specifies the name of the clb instance. fuzzy query is supported.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// Tencent cloud assigns a domain name to the cloud load balancer instance. fuzzy query is supported.
	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"`

	// Public IPs of the backend services bound with the load balancer. Only the public IPs of CVMs are supported now.
	BackendPublicIps []*string `json:"BackendPublicIps,omitnil,omitempty" name:"BackendPublicIps"`

	// Private IPs of the backend services bound with the load balancer. Only the private IPs of CVMs are supported now.
	BackendPrivateIps []*string `json:"BackendPrivateIps,omitnil,omitempty" name:"BackendPrivateIps"`

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

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

	// Sorting parameter. supports the following fields:.
	// - LoadBalancerName
	// - CreateTime
	// - Domain
	// - LoadBalancerType
	// 
	// Defaults to CreateTime.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// 1 for descending, 0 for ascending, defaults to 1, sorted by creation time in descending order.
	OrderType *int64 `json:"OrderType,omitnil,omitempty" name:"OrderType"`

	// Specifies the fuzzy search field for fuzzy matching the name, domain name, VIP address, or ID of a cloud load balancer instance.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// Project ID of the cloud load balancer instance. you can call the [DescribeProject](https://www.tencentcloud.com/document/api/651/78725?from_cn_redirect=1) api to obtain the ID. defaults to all projects if not passed.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Whether a CLB instance is bound to a real server. 0: no; 1: yes; -1: query all.
	WithRs *int64 `json:"WithRs,omitnil,omitempty" name:"WithRs"`

	// Specifies the unique vpc ID of the load balancing instance, such as vpc-bhqkbhdx. you can call the [DescribeVpcs](https://www.tencentcloud.com/document/api/215/15778?from_cn_redirect=1) api to obtain it.
	// Searches for cloud load balancer of basic network type. allows input '0'.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Security group ID, such as sg-m1cc****, can be obtained through the API [DescribeSecurityGroups](https://www.tencentcloud.com/document/product/215/15808?from_cn_redirect=1).
	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://intl.cloud.tencent.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` and 100 `Filter.Values`. Detailed filter conditions:
	// <li> internet-charge-type - Type: String - Required: No - Filter by CLB network billing mode, including `TRAFFIC_POSTPAID_BY_HOUR`</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Specifies the expanded fields to return. not specified, expanded fields do not return by default. supported expanded fields are as follows:.
	// <Li>TargetCount: specifies the 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 parameter.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Array of returned CLB instances.
	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 DescribeQuotaRequestParams struct {

}

type DescribeQuotaRequest struct {
	*tchttp.BaseRequest
	
}

func (r *DescribeQuotaRequest) 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 *DescribeQuotaRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeQuotaRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeQuotaResponseParams struct {
	// Quota list
	QuotaSet []*Quota `json:"QuotaSet,omitnil,omitempty" name:"QuotaSet"`

	// 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 DescribeQuotaResponse struct {
	*tchttp.BaseResponse
	Response *DescribeQuotaResponseParams `json:"Response"`
}

func (r *DescribeQuotaResponse) 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 *DescribeQuotaResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeResourcesRequestParams struct {
	// Number of returned AZ resources. Default value: 20. Maximum value: 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset of the returned AZ resource list. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Specifies the conditions for querying the availability zone resource list. detailed filter criteria are as follows:.
	// - master-zone
	// Filters by regional availability zone, for example: ap-guangzhou-2.
	// Type: String.
	// Required: No
	// - ip-version
	// Filter by [IP type], such as IPv4.
	// Type: String.
	// Required: No
	// Valid values: IPv4, IPv6, IPv6_Nat.
	// - isp
	// Filters by [ISP type], for example: BGP.
	// Type: String.
	// Required: No
	// Optional. valid values: BGP, CMCC (china mobile), CUCC (china unicom), CTCC (china telecom), BGP_PRO, INTERNAL (private network).
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeResourcesRequest struct {
	*tchttp.BaseRequest
	
	// Number of returned AZ resources. Default value: 20. Maximum value: 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting offset of the returned AZ resource list. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Specifies the conditions for querying the availability zone resource list. detailed filter criteria are as follows:.
	// - master-zone
	// Filters by regional availability zone, for example: ap-guangzhou-2.
	// Type: String.
	// Required: No
	// - ip-version
	// Filter by [IP type], such as IPv4.
	// Type: String.
	// Required: No
	// Valid values: IPv4, IPv6, IPv6_Nat.
	// - isp
	// Filters by [ISP type], for example: BGP.
	// Type: String.
	// Required: No
	// Optional. valid values: BGP, CMCC (china mobile), CUCC (china unicom), CTCC (china telecom), BGP_PRO, INTERNAL (private network).
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

func (r *DescribeResourcesRequest) 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 *DescribeResourcesRequest) 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, "Filters")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeResourcesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeResourcesResponseParams struct {
	// List of resources supported by the AZ
	ZoneResourceSet []*ZoneResource `json:"ZoneResourceSet,omitnil,omitempty" name:"ZoneResourceSet"`

	// Number of entries in the AZ resource list.
	TotalCount *uint64 `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 DescribeResourcesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeResourcesResponseParams `json:"Response"`
}

func (r *DescribeResourcesResponse) 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 *DescribeResourcesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// Array of CLB listener IDs
	SourceListenerIds []*string `json:"SourceListenerIds,omitnil,omitempty" name:"SourceListenerIds"`

	// Array of CLB forwarding rule IDs
	SourceLocationIds []*string `json:"SourceLocationIds,omitnil,omitempty" name:"SourceLocationIds"`
}

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

	// Array of CLB listener IDs
	SourceListenerIds []*string `json:"SourceListenerIds,omitnil,omitempty" name:"SourceListenerIds"`

	// Array of CLB forwarding rule IDs
	SourceLocationIds []*string `json:"SourceLocationIds,omitnil,omitempty" name:"SourceLocationIds"`
}

func (r *DescribeRewriteRequest) 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 *DescribeRewriteRequest) 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, "SourceListenerIds")
	delete(f, "SourceLocationIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRewriteRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRewriteResponseParams struct {
	// Array of redirection forwarding rules. If there are no redirection rules, an empty array will be returned.
	RewriteSet []*RuleOutput `json:"RewriteSet,omitnil,omitempty" name:"RewriteSet"`

	// 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 DescribeRewriteResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRewriteResponseParams `json:"Response"`
}

func (r *DescribeRewriteResponse) 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 *DescribeRewriteResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetGroupInstancesRequestParams struct {
	// Filter criteria, currently supported by multiple conditions combined as TargetGroupId, BindIP, and InstanceId.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

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

	// Display offset. Default value: 0
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

type DescribeTargetGroupInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Filter criteria, currently supported by multiple conditions combined as TargetGroupId, BindIP, and InstanceId.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

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

	// Display offset. Default value: 0
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

func (r *DescribeTargetGroupInstancesRequest) 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 *DescribeTargetGroupInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Filters")
	delete(f, "Limit")
	delete(f, "Offset")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTargetGroupInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetGroupInstancesResponseParams struct {
	// Number of results returned for the current query
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Information of the bound server
	TargetGroupInstanceSet []*TargetGroupBackend `json:"TargetGroupInstanceSet,omitnil,omitempty" name:"TargetGroupInstanceSet"`

	// The actual total number of bound instances, which is not affected by the setting of `Limit`, `Offset` and the CAM permissions.
	RealCount *uint64 `json:"RealCount,omitnil,omitempty" name:"RealCount"`

	// 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 DescribeTargetGroupInstancesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTargetGroupInstancesResponseParams `json:"Response"`
}

func (r *DescribeTargetGroupInstancesResponse) 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 *DescribeTargetGroupInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetGroupListRequestParams struct {
	// Target group ID array
	TargetGroupIds []*string `json:"TargetGroupIds,omitnil,omitempty" name:"TargetGroupIds"`

	// Filter array, which is exclusive of `TargetGroupIds`. Valid values: `TargetGroupVpcId` and `TargetGroupName`. Target group ID will be used first.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Starting display offset
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Limit of the number of displayed results. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribeTargetGroupListRequest struct {
	*tchttp.BaseRequest
	
	// Target group ID array
	TargetGroupIds []*string `json:"TargetGroupIds,omitnil,omitempty" name:"TargetGroupIds"`

	// Filter array, which is exclusive of `TargetGroupIds`. Valid values: `TargetGroupVpcId` and `TargetGroupName`. Target group ID will be used first.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Starting display offset
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Limit of the number of displayed results. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

func (r *DescribeTargetGroupListRequest) 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 *DescribeTargetGroupListRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupIds")
	delete(f, "Filters")
	delete(f, "Offset")
	delete(f, "Limit")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTargetGroupListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetGroupListResponseParams struct {
	// Number of displayed results
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Information set of displayed target groups
	TargetGroupSet []*TargetGroupInfo `json:"TargetGroupSet,omitnil,omitempty" name:"TargetGroupSet"`

	// 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 DescribeTargetGroupListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTargetGroupListResponseParams `json:"Response"`
}

func (r *DescribeTargetGroupListResponse) 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 *DescribeTargetGroupListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetGroupsRequestParams struct {
	// Target group ID, which is exclusive of `Filters`.
	TargetGroupIds []*string `json:"TargetGroupIds,omitnil,omitempty" name:"TargetGroupIds"`

	// Limit of the number of displayed results. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting display offset
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Filter condition array, mutually exclusive with TargetGroupIds, supports TargetGroupVpcId (vpc ID), TargetGroupName (target group name), and Tag.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeTargetGroupsRequest struct {
	*tchttp.BaseRequest
	
	// Target group ID, which is exclusive of `Filters`.
	TargetGroupIds []*string `json:"TargetGroupIds,omitnil,omitempty" name:"TargetGroupIds"`

	// Limit of the number of displayed results. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting display offset
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Filter condition array, mutually exclusive with TargetGroupIds, supports TargetGroupVpcId (vpc ID), TargetGroupName (target group name), and Tag.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

func (r *DescribeTargetGroupsRequest) 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 *DescribeTargetGroupsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupIds")
	delete(f, "Limit")
	delete(f, "Offset")
	delete(f, "Filters")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTargetGroupsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetGroupsResponseParams struct {
	// Number of displayed results
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Information set of displayed target groups
	TargetGroupSet []*TargetGroupInfo `json:"TargetGroupSet,omitnil,omitempty" name:"TargetGroupSet"`

	// 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 DescribeTargetGroupsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTargetGroupsResponseParams `json:"Response"`
}

func (r *DescribeTargetGroupsResponse) 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 *DescribeTargetGroupsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

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

	// Specifies the list of rule ids to be queried.
	LocationIds []*string `json:"LocationIds,omitnil,omitempty" name:"LocationIds"`
}

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

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

	// Specifies the list of rule ids to be queried.
	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)
}

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

	// List of listener IDs (20 IDs at most).
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

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

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

	// Conditions for querying the list of real servers bound to the CLB. The filter criteria are as follows:<li> location-id - String - Required: No - (Filter criterion) Filter by rule ID, such as loc-12345678.</li><li> private-ip-address - String - Required: No - (Filter criterion) Filter by private IP address of the real server, such as 172.16.1.1.</li><li> tag - String - Required: No - (Filter criterion) Filter by tag, such as tag-test.</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

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

	// List of listener IDs (20 IDs at most).
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`

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

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

	// Conditions for querying the list of real servers bound to the CLB. The filter criteria are as follows:<li> location-id - String - Required: No - (Filter criterion) Filter by rule ID, such as loc-12345678.</li><li> private-ip-address - String - Required: No - (Filter criterion) Filter by private IP address of the real server, such as 172.16.1.1.</li><li> tag - String - Required: No - (Filter criterion) Filter by tag, such as tag-test.</li>
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`
}

func (r *DescribeTargetsRequest) 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 *DescribeTargetsRequest) 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, "Port")
	delete(f, "Filters")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTargetsResponseParams struct {
	// Information of real servers bound to the listener.
	Listeners []*ListenerBackend `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 DescribeTargetsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTargetsResponseParams `json:"Response"`
}

func (r *DescribeTargetsResponse) 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 *DescribeTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTaskStatusRequestParams struct {
	// Request ID, i.e., the RequestId parameter returned by the API.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// Order ID.
	// Note: Either `TaskId` or `DealName` is required.
	DealName *string `json:"DealName,omitnil,omitempty" name:"DealName"`
}

type DescribeTaskStatusRequest struct {
	*tchttp.BaseRequest
	
	// Request ID, i.e., the RequestId parameter returned by the API.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// Order ID.
	// Note: Either `TaskId` or `DealName` is required.
	DealName *string `json:"DealName,omitnil,omitempty" name:"DealName"`
}

func (r *DescribeTaskStatusRequest) 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 *DescribeTaskStatusRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TaskId")
	delete(f, "DealName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTaskStatusRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTaskStatusResponseParams struct {
	// Current status of a task. Value range: 0 (succeeded), 1 (failed), 2 (in progress).
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Array of unique CLB instance IDs.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Auxiliary description information, such as failure cause.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Message *string `json:"Message,omitnil,omitempty" name:"Message"`

	// 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 DescribeTaskStatusResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTaskStatusResponseParams `json:"Response"`
}

func (r *DescribeTaskStatusResponse) 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 *DescribeTaskStatusResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DisassociateCustomizedConfigRequestParams struct {
	// Configuration ID.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// Specifies the list of unbinding.
	BindList []*BindItem `json:"BindList,omitnil,omitempty" name:"BindList"`
}

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

	// Specifies the list of unbinding.
	BindList []*BindItem `json:"BindList,omitnil,omitempty" name:"BindList"`
}

func (r *DisassociateCustomizedConfigRequest) 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 *DisassociateCustomizedConfigRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "UconfigId")
	delete(f, "BindList")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DisassociateCustomizedConfigRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DisassociateCustomizedConfigResponseParams 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 DisassociateCustomizedConfigResponse struct {
	*tchttp.BaseResponse
	Response *DisassociateCustomizedConfigResponseParams `json:"Response"`
}

func (r *DisassociateCustomizedConfigResponse) 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 *DisassociateCustomizedConfigResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DisassociateTargetGroupsRequestParams struct {
	// Specifies the relationship array of rules to be unbound, supports batch operations for multiple listeners with a maximum of 20 per bulk removal.
	Associations []*TargetGroupAssociation `json:"Associations,omitnil,omitempty" name:"Associations"`
}

type DisassociateTargetGroupsRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the relationship array of rules to be unbound, supports batch operations for multiple listeners with a maximum of 20 per bulk removal.
	Associations []*TargetGroupAssociation `json:"Associations,omitnil,omitempty" name:"Associations"`
}

func (r *DisassociateTargetGroupsRequest) 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 *DisassociateTargetGroupsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Associations")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DisassociateTargetGroupsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DisassociateTargetGroupsResponseParams 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 DisassociateTargetGroupsResponse struct {
	*tchttp.BaseResponse
	Response *DisassociateTargetGroupsResponseParams `json:"Response"`
}

func (r *DisassociateTargetGroupsResponse) 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 *DisassociateTargetGroupsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type ExclusiveCluster struct {
	// Layer-4 dedicated 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 dedicated 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
	ZhiTong *bool `json:"ZhiTong,omitnil,omitempty" name:"ZhiTong"`

	// 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 FunctionInfo struct {
	// Function namespace
	FunctionNamespace *string `json:"FunctionNamespace,omitnil,omitempty" name:"FunctionNamespace"`

	// Function name
	FunctionName *string `json:"FunctionName,omitnil,omitempty" name:"FunctionName"`

	// Function version name or alias
	FunctionQualifier *string `json:"FunctionQualifier,omitnil,omitempty" name:"FunctionQualifier"`

	// Function qualifier type. Values: `VERSION`, `ALIAS`.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	FunctionQualifierType *string `json:"FunctionQualifierType,omitnil,omitempty" name:"FunctionQualifierType"`
}

type FunctionTarget struct {
	// SCF information
	Function *FunctionInfo `json:"Function,omitnil,omitempty" name:"Function"`

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

type HealthCheck struct {
	// Whether to enable health check. 1: Enable; 0: Disable.
	// 
	// It is enabled by default.
	HealthSwitch *int64 `json:"HealthSwitch,omitnil,omitempty" name:"HealthSwitch"`

	// Health check response timeout, in seconds. Value range: 2–60. Default value: 2. The response timeout should be less than the check interval.
	TimeOut *int64 `json:"TimeOut,omitnil,omitempty" name:"TimeOut"`

	// Health check interval, in seconds. Default value: 5. Value range: 2–300 for IPv4 CLB instances and 5–300 for IPv6 CLB instances.
	// Note: The value range is 5–300 for some IPv4 CLB instances of early versions.
	IntervalTime *int64 `json:"IntervalTime,omitnil,omitempty" name:"IntervalTime"`

	// Healthy threshold. Default: 3, indicating that if a forwarding is found healthy three consecutive times, it is considered to be normal. Value range: 2-10. Unit: times.
	HealthNum *int64 `json:"HealthNum,omitnil,omitempty" name:"HealthNum"`

	// Unhealthy threshold. Default: 3, indicating that if a forwarding is found unhealthy three consecutive times, it is considered to be exceptional. Value range: 2-10. Unit: times.
	UnHealthNum *int64 `json:"UnHealthNum,omitnil,omitempty" name:"UnHealthNum"`

	// Health check status code. (This parameter applies only to HTTP/HTTPS forwarding rules and the HTTP health check method of TCP listeners.) Value range: 1–31. Default value: 31.
	// 1: return 1xx after the check (healthy); 2: return 2xx after the check (healthy); 4: return 3xx after the check (healthy); 8: return 4xx after the check (healthy); 16: return 5xx after the check (healthy). If you expect that multiple codes represent a healthy real server, set the value to the sum of the corresponding values.
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCode *int64 `json:"HttpCode,omitnil,omitempty" name:"HttpCode"`

	// Health check path (applicable only to HTTP/HTTPS forwarding rules and HTTP health checks of TCP listeners).
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCheckPath *string `json:"HttpCheckPath,omitnil,omitempty" name:"HttpCheckPath"`

	// Health check domain name, which will be contained in a Host header field of the HTTP protocol. (This parameter applies only to HTTP/HTTPS listeners and the HTTP health check method of TCP listeners. For TCP listeners, this parameter is required if the HTTP health check method is used.)
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCheckDomain *string `json:"HttpCheckDomain,omitnil,omitempty" name:"HttpCheckDomain"`

	// Health check method (applicable only to HTTP/HTTPS forwarding rules and HTTP health checks of TCP listeners). Default: HEAD. Valid values: HEAD and GET.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCheckMethod *string `json:"HttpCheckMethod,omitnil,omitempty" name:"HttpCheckMethod"`

	// Custom check parameters. health check port, defaults to the port of the backend service unless you want to specify a specific port, otherwise leave it blank. pass the parameter value -1 to restore default settings. (applicable only to TCP/UDP listener).
	// Note: This field may return null, indicating that no valid values can be obtained.
	CheckPort *int64 `json:"CheckPort,omitnil,omitempty" name:"CheckPort"`

	// A custom check parameter, which is required if the value of CheckType (health check protocol) is CUSTOM. This parameter represents the input format of the health check. Valid values: HEX and TEXT. If the value is HEX, the characters of SendContext and RecvContext can only be selected from 0123456789ABCDEF and the length must be an even number. (Applicable only to TCP/UDP listeners.)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ContextType *string `json:"ContextType,omitnil,omitempty" name:"ContextType"`

	// A custom check parameter, which is required if the value of CheckType (health check protocol) is CUSTOM. This parameter represents the content of the request sent by the health check. Only ASCII visible characters are allowed, and the maximum length is 500. (Applicable only to TCP/UDP listeners.)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SendContext *string `json:"SendContext,omitnil,omitempty" name:"SendContext"`

	// A custom check parameter, which is required if the value of CheckType (health check protocol) is CUSTOM. This parameter represents the result returned by the health check. Only ASCII visible characters are allowed, and the maximum length is 500. (Applicable only to TCP/UDP listeners.)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RecvContext *string `json:"RecvContext,omitnil,omitempty" name:"RecvContext"`

	// Protocol used for health checks. Valid values: TCP (for TCP listeners, TCP_SSL listeners, and QUIC listeners), HTTP (for TCP listeners, TCP_SSL listeners, QUIC listeners, HTTP rules, and HTTPS rules), HTTPS (for HTTPS rules), GRPC (for HTTP rules and HTTPS rules), PING (for UDP listeners), and CUSTOM (for UDP listeners and TCP listeners). The default value is HTTP for HTTP listeners, TCP for TCP, TCP_SSL, and QUIC listeners, and PING for UDP listeners. For HTTPS listeners, the protocol is the same as the backend forwarding protocol.
	CheckType *string `json:"CheckType,omitnil,omitempty" name:"CheckType"`

	// HTTP version. This field indicates the HTTP version of real servers and is required if the value of CheckType is HTTP. Valid values: HTTP/1.0 and HTTP/1.1. (This field applies only to TCP listeners.)
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpVersion *string `json:"HttpVersion,omitnil,omitempty" name:"HttpVersion"`

	// Source IP address type for health checks. 0: use the LB VIP as the source IP address; 1: use an IP address in the 100.64 range as the source IP address.
	SourceIpType *int64 `json:"SourceIpType,omitnil,omitempty" name:"SourceIpType"`

	// Health check status code when the protocol is GRPC. (This parameter applies only to rules with the backend forwarding protocol of GRPC.) Default value: 12. You can enter a single numerical value, multiple numerical values, or a range. For example, 20, 20,25, or 0-99.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExtendedCode *string `json:"ExtendedCode,omitnil,omitempty" name:"ExtendedCode"`
}

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

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

	// CLB instance region
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// CLB instance VIP
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// The reason why the load balancer is considered idle. `NO_RULES`: No rules configured. `NO_RS`: The rules are not associated with servers.
	IdleReason *string `json:"IdleReason,omitnil,omitempty" name:"IdleReason"`

	// CLB instance status, including:
	// `0`: Creating; `1`: Running.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// CLB type. Value range: `1` (CLB); `0` (classic CLB).
	Forward *uint64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// Specifies the clb domain name.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

// Predefined struct for user
type InquiryPriceCreateLoadBalancerRequestParams struct {
	// Network type of the CLB to query. `OPEN`: Public network; `INTERNAL`: Private network is intranet type
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// The billing mode to query. `POSTPAID`:Pay as you go
	LoadBalancerChargeType *string `json:"LoadBalancerChargeType,omitnil,omitempty" name:"LoadBalancerChargeType"`

	// Reserved field
	LoadBalancerChargePrepaid *LBChargePrepaid `json:"LoadBalancerChargePrepaid,omitnil,omitempty" name:"LoadBalancerChargePrepaid"`

	// The network billing mode to query 
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// Number of CLB instances to query. Default value: 1.
	GoodsNum *uint64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// Availability zone in the format of "ap-guangzhou-1"
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Specification of the LCU-supported instance, which is input to query the yearly/monthly subscription price. Valid values: <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>SLA is input to query the pay-as-you-go price.
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// IP version. Valid values: `IPV4` (default), `IPV6` (IPV6 NAT64 version) or `IPv6FullChain` (IPv6 version). 
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// 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"`
}

type InquiryPriceCreateLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// Network type of the CLB to query. `OPEN`: Public network; `INTERNAL`: Private network is intranet type
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// The billing mode to query. `POSTPAID`:Pay as you go
	LoadBalancerChargeType *string `json:"LoadBalancerChargeType,omitnil,omitempty" name:"LoadBalancerChargeType"`

	// Reserved field
	LoadBalancerChargePrepaid *LBChargePrepaid `json:"LoadBalancerChargePrepaid,omitnil,omitempty" name:"LoadBalancerChargePrepaid"`

	// The network billing mode to query 
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// Number of CLB instances to query. Default value: 1.
	GoodsNum *uint64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// Availability zone in the format of "ap-guangzhou-1"
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Specification of the LCU-supported instance, which is input to query the yearly/monthly subscription price. Valid values: <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>SLA is input to query the pay-as-you-go price.
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

	// IP version. Valid values: `IPV4` (default), `IPV6` (IPV6 NAT64 version) or `IPv6FullChain` (IPv6 version). 
	AddressIPVersion *string `json:"AddressIPVersion,omitnil,omitempty" name:"AddressIPVersion"`

	// 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"`
}

func (r *InquiryPriceCreateLoadBalancerRequest) 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 *InquiryPriceCreateLoadBalancerRequest) 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, "LoadBalancerChargeType")
	delete(f, "LoadBalancerChargePrepaid")
	delete(f, "InternetAccessible")
	delete(f, "GoodsNum")
	delete(f, "ZoneId")
	delete(f, "SlaType")
	delete(f, "AddressIPVersion")
	delete(f, "VipIsp")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InquiryPriceCreateLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquiryPriceCreateLoadBalancerResponseParams struct {
	// Price of the instance with the specified configurations.
	Price *Price `json:"Price,omitnil,omitempty" name:"Price"`

	// 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 InquiryPriceCreateLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *InquiryPriceCreateLoadBalancerResponseParams `json:"Response"`
}

func (r *InquiryPriceCreateLoadBalancerResponse) 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 *InquiryPriceCreateLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquiryPriceModifyLoadBalancerRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// New bandwidth bandwidth specification
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`
}

type InquiryPriceModifyLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// New bandwidth bandwidth specification
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`
}

func (r *InquiryPriceModifyLoadBalancerRequest) 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 *InquiryPriceModifyLoadBalancerRequest) 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, "InternetAccessible")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InquiryPriceModifyLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquiryPriceModifyLoadBalancerResponseParams struct {
	// Pricing information
	Price *Price `json:"Price,omitnil,omitempty" name:"Price"`

	// 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 InquiryPriceModifyLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *InquiryPriceModifyLoadBalancerResponseParams `json:"Response"`
}

func (r *InquiryPriceModifyLoadBalancerResponse) 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 *InquiryPriceModifyLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquiryPriceRefundLoadBalancerRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`
}

type InquiryPriceRefundLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`
}

func (r *InquiryPriceRefundLoadBalancerRequest) 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 *InquiryPriceRefundLoadBalancerRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InquiryPriceRefundLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquiryPriceRefundLoadBalancerResponseParams struct {
	// Price of the instance with the specified configurations.
	Price *Price `json:"Price,omitnil,omitempty" name:"Price"`

	// 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 InquiryPriceRefundLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *InquiryPriceRefundLoadBalancerResponseParams `json:"Response"`
}

func (r *InquiryPriceRefundLoadBalancerResponse) 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 *InquiryPriceRefundLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquiryPriceRenewLoadBalancerRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Renewal period
	LoadBalancerChargePrepaid *LBChargePrepaid `json:"LoadBalancerChargePrepaid,omitnil,omitempty" name:"LoadBalancerChargePrepaid"`
}

type InquiryPriceRenewLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Renewal period
	LoadBalancerChargePrepaid *LBChargePrepaid `json:"LoadBalancerChargePrepaid,omitnil,omitempty" name:"LoadBalancerChargePrepaid"`
}

func (r *InquiryPriceRenewLoadBalancerRequest) 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 *InquiryPriceRenewLoadBalancerRequest) 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, "LoadBalancerChargePrepaid")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InquiryPriceRenewLoadBalancerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquiryPriceRenewLoadBalancerResponseParams struct {
	// Price to renew
	Price *Price `json:"Price,omitnil,omitempty" name:"Price"`

	// 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 InquiryPriceRenewLoadBalancerResponse struct {
	*tchttp.BaseResponse
	Response *InquiryPriceRenewLoadBalancerResponseParams `json:"Response"`
}

func (r *InquiryPriceRenewLoadBalancerResponse) 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 *InquiryPriceRenewLoadBalancerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type InternetAccessible struct {
	// TRAFFIC_POSTPAID_BY_HOUR: Postpaid by traffic on an hourly basis. BANDWIDTH_POSTPAID_BY_HOUR: Postpaid by bandwidth on an hourly basis. International site users do not support this billing mode. BANDWIDTH_PACKAGE: Charged by bandwidth package. BANDWIDTH_PREPAID: Bandwidth prepaid.
	InternetChargeType *string `json:"InternetChargeType,omitnil,omitempty" name:"InternetChargeType"`

	// Maximum outbound bandwidth, in Mbps. This parameter is valid only for public network shared, LCU-supported, and exclusive CLB instances and private network LCU-supported CLB instances.
	// - The range of the maximum outbound bandwidth for public network shared and exclusive CLB instances is 1 Mbps to 2,048 Mbps.
	// - The range of the maximum outbound bandwidth for public network and private network LCU-supported CLB instances is 1 Mbps to 61,440 Mbps.
	// (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, for example BGP (multi-line).
	// Type as follows:.
	// SINGLEISP: single isp.
	// BGP: multi-line.
	// HIGH_QUALITY_BGP: specifies a dedicated bgp bandwidth package.
	// SINGLEISP_CMCC: specifies a cmcc bandwidth package.
	// SINGLEISP_CTCC: specifies the ctcc bandwidth package.
	// SINGLEISP_CUCC: specifies the china unicom bandwidth package.
	// Note: This field may return null, indicating that no valid values can be obtained.
	BandwidthpkgSubType *string `json:"BandwidthpkgSubType,omitnil,omitempty" name:"BandwidthpkgSubType"`
}

type ItemPrice struct {
	// PAYG unit price, in USD.
	// Note: This field may return·null, indicating that no valid values can be obtained.
	UnitPrice *float64 `json:"UnitPrice,omitnil,omitempty" name:"UnitPrice"`

	// Subsequent billing unit. Value Range: 
	// `HOUR`: Calculate the cost by hour. It's available when "InternetChargeType=POSTPAID_BY_HOUR".
	// `GB`: Calculate the cost by traffic in GB. It's available when "InternetChargeType=TRAFFIC_POSTPAID_BY_HOUR".
	// Note: This field may return·null, indicating that no valid values can be obtained.
	ChargeUnit *string `json:"ChargeUnit,omitnil,omitempty" name:"ChargeUnit"`

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

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

	// Discount unit price of a pay-as-you-go instance, in USD.
	// Note: This field may return·null, indicating that no valid values can be obtained.
	UnitPriceDiscount *float64 `json:"UnitPriceDiscount,omitnil,omitempty" name:"UnitPriceDiscount"`

	// Discount. For example, 20.0 indicates 80% off.
	// Note: This field may return·null, indicating that no valid values can be obtained.
	Discount *float64 `json:"Discount,omitnil,omitempty" name:"Discount"`
}

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

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

type LBItem struct {
	// String ID of the CLB instance.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

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

	// Listener rule.
	Listeners []*ListenerItem `json:"Listeners,omitnil,omitempty" name:"Listeners"`

	// Region of the CLB instance
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`
}

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

	// Protected status. true means operation protection is enabled. false means operation protection is disabled.
	ProtectState *bool `json:"ProtectState,omitnil,omitempty" name:"ProtectState"`

	// Specifies the uin for operation protection setting.
	// Note: This field may return null, indicating that no valid values can be obtained.
	OperatorUin *string `json:"OperatorUin,omitnil,omitempty" name:"OperatorUin"`

	// Specifies the description when setting operation protection.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Specifies the last modification time.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`
}

type LbRsItem struct {
	// VPC ID in string format. Only string format is supported.
	// Can be queried through the [DescribeVpcs](https://www.tencentcloud.com/document/api/215/15778?from_cn_redirect=1) api.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Specifies the private IP address for backend querying, which can be CVM or eni.
	// Can be queried through the [DescribeAddresses](https://www.tencentcloud.com/document/product/215/16702?from_cn_redirect=1) api.
	PrivateIp *string `json:"PrivateIp,omitnil,omitempty" name:"PrivateIp"`
}

type LbRsTargets struct {
	// Private network IP type, which can be `cvm` or `eni`.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Private network IP of the real server.
	PrivateIp *string `json:"PrivateIp,omitnil,omitempty" name:"PrivateIp"`

	// Port bound to the real server.
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// vpcId of RS
	VpcId *int64 `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// RS weight
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

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

	// Listener protocol. valid values: TCP, UDP, HTTP, HTTPS, TCP_SSL, QUIC.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Listener port. value range: 1-65535.
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Information of certificates bound to the listener
	// Note: This field may return null, indicating that no valid values can be obtained.
	Certificate *CertificateOutput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Health check information of the listener
	// Note: This field may return null, indicating that no valid values can be obtained.
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Request scheduling method. WRR, LEAST_CONN, and IP_HASH respectively indicate weighted round robin, least connections, and IP hash.Note: This field may return null, indicating that no valid values can be obtained.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Session persistence time, in seconds. value range: 30-3600. default value: 0, indicating that session persistence is not enabled by default. this parameter applies only to TCP and UDP listeners.
	// Note: This field may return null, indicating that no valid values can be obtained.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Specifies whether to enable the SNI feature. 1: enable; 0: disable. this parameter is applicable only to HTTPS listeners.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// All forwarding rules under a listener (this parameter is meaningful only for HTTP/HTTPS listeners)
	// Note: This field may return null, indicating that no valid values can be obtained.
	Rules []*RuleOutput `json:"Rules,omitnil,omitempty" name:"Rules"`

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

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

	// End port of the port range. value range: 2-65535.
	EndPort *int64 `json:"EndPort,omitnil,omitempty" name:"EndPort"`

	// Backend server type. available values: NODE, POLARIS, TARGETGROUP, TARGETGROUP-V2.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Basic information of a bound target group. This field will be returned when a target group is bound to a listener.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetGroup *BasicTargetGroupInfo `json:"TargetGroup,omitnil,omitempty" name:"TargetGroup"`

	// Session persistence type. NORMAL: Default session persistence type; QUIC_CID: Session persistence by Quic Connection ID.
	SessionType *string `json:"SessionType,omitnil,omitempty" name:"SessionType"`

	// Whether a persistent connection is enabled (1: enabled; 0: disabled). This parameter can only be configured in HTTP/HTTPS listeners.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	KeepaliveEnable *int64 `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Supports Nat64 CLB TCP listeners only
	Toa *bool `json:"Toa,omitnil,omitempty" name:"Toa"`

	// Reschedules when unbinding real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	DeregisterTargetRst *bool `json:"DeregisterTargetRst,omitnil,omitempty" name:"DeregisterTargetRst"`

	// Describes the attributes of the listener.
	AttrFlags []*string `json:"AttrFlags,omitnil,omitempty" name:"AttrFlags"`

	// List of bound target groups
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	TargetGroupList []*BasicTargetGroupInfo `json:"TargetGroupList,omitnil,omitempty" name:"TargetGroupList"`

	// Maximum number of connections to a listener. -1 indicates unlimited speed at the listener dimension.
	MaxConn *int64 `json:"MaxConn,omitnil,omitempty" name:"MaxConn"`

	// Maximum number of new connections to a listener. -1 means no speed limit at the listener dimension.
	MaxCps *int64 `json:"MaxCps,omitnil,omitempty" name:"MaxCps"`

	// Connection idle timeout period (in seconds). It’s only available to TCP listeners. Value range: 300-900 for shared and dedicated instances; 300-2000 for LCU-supported CLB instances. It defaults to 900.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	IdleConnectTimeout *int64 `json:"IdleConnectTimeout,omitnil,omitempty" name:"IdleConnectTimeout"`

	// Rescheduling trigger duration, valid values: 0-3600s. only TCP/UDP listeners support this. after triggering rescheduling, persistent connections will disconnect and be reassigned within the set scheduling time.
	RescheduleInterval *uint64 `json:"RescheduleInterval,omitnil,omitempty" name:"RescheduleInterval"`

	// Data compression mode.
	DataCompressMode *string `json:"DataCompressMode,omitnil,omitempty" name:"DataCompressMode"`

	// Reschedules the startup time. when configured, rescheduling will be triggered upon arrival of the start time.
	RescheduleStartTime *int64 `json:"RescheduleStartTime,omitnil,omitempty" name:"RescheduleStartTime"`
}

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

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

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

	// Information of rules under a listener (applicable only to HTTP/HTTPS listeners)
	Rules []*RuleTargets `json:"Rules,omitnil,omitempty" name:"Rules"`

	// List of real servers bound to the listener (applicable only to TCP/UDP/TCP_SSL listener)
	Targets []*Backend `json:"Targets,omitnil,omitempty" name:"Targets"`

	// End port in a port range if port range is supported, or 0 if port range is not supported
	EndPort *int64 `json:"EndPort,omitnil,omitempty" name:"EndPort"`
}

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 ListenerItem struct {
	// Listener ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

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

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

	// Bound rule.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	Rules []*RulesItems `json:"Rules,omitnil,omitempty" name:"Rules"`

	// Object bound to the layer-4 listener.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	Targets []*LbRsTargets `json:"Targets,omitnil,omitempty" name:"Targets"`

	// End port of a port range for a listener
	EndPort *int64 `json:"EndPort,omitnil,omitempty" name:"EndPort"`
}

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 load balancing instance.
	// OPEN: public network attribute. INTERNAL: private network attribute. for a cloud load balancer with private network attribute, you can bind an EIP for public network access. for details, see the EIP document on binding elastic IP (https://www.tencentcloud.com/document/product/215/16700?from_cn_redirect=1).
	LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"`

	// CLB type identifier. Value range: 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 for public network classic and domain name-based load balancing 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"`

	// Specifies the state of the load balancing instance, including.
	// 0: creating. 1: normal operation.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// CLB instance creation time
	// Format: YYYY-MM-DD HH:MM:ss.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Last status transition time of the CLB instance.
	// Format: YYYY-MM-DD HH:MM:ss.
	StatusTime *string `json:"StatusTime,omitnil,omitempty" name:"StatusTime"`

	// ID of the project to which a 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"`

	// Whether SNAT is enabled. for traditional private network clbs before december 2016, SNAT was enabled.
	Snat *bool `json:"Snat,omitnil,omitempty" name:"Snat"`

	// Whether isolated. 0 means not isolated. 1 means isolated.
	Isolation *uint64 `json:"Isolation,omitnil,omitempty" name:"Isolation"`

	// Log information. Only the public network CLB that have HTTP or HTTPS listeners can generate logs.
	// Note: This field may return null, indicating that no valid values can be obtained.
	//
	// Deprecated: Log is deprecated.
	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"`

	// Specifies the VPC ID in numerical form, obtainable through the DescribeVpcs API (https://www.tencentcloud.com/document/product/215/15778?from_cn_redirect=1).
	NumericalVpcId *uint64 `json:"NumericalVpcId,omitnil,omitempty" name:"NumericalVpcId"`

	// Specifies the ISP of the load balancer IP address.
	// 
	// -BGP (multi-line).
	// - CMCC: CMCC single line network.
	// -CTCC: ctcc single-line.
	// - CUCC: china unicom single-line.
	// 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"`

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

	// Specifies the isolation time of the cloud load balancer instance.
	// Format: YYYY-MM-DD HH:MM:ss.
	// Note: This field may return null, indicating that no valid values can be obtained.
	IsolatedTime *string `json:"IsolatedTime,omitnil,omitempty" name:"IsolatedTime"`

	// CLB instance expiration time, which takes effect only for prepaid instances
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExpireTime *string `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Billing mode of CLB instance. Valid values: PREPAID (yearly/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"`

	// Prepaid billing attributes of a CLB instance
	// 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 a 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 field which can be ignored generally.
	// 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"`

	// Specifies the field is meaningful when the IP address version is ipv6. valid values: ipv6Nat64 | ipv6FullChain.
	// IPv6Nat64: specifies a load balancer based on Nat64 IPv6 transition technology.
	// IPv6FullChain: specifies a cloud load balancer implemented based on ipv6 single-stack technology.
	// Note: This field may return null, indicating that no valid values can be obtained.
	IPv6Mode *string `json:"IPv6Mode,omitnil,omitempty" name:"IPv6Mode"`

	// Specifies whether SnatPro is enabled.
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// Enables the SnatIp list after turning on SnatPro load balancing.
	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: 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-performance capacity instance</li></ul>.
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`

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

	// Specifies the blocking or unblocking time.
	// Format: YYYY-MM-DD HH:MM:ss.
	IsBlockTime *string `json:"IsBlockTime,omitnil,omitempty" name:"IsBlockTime"`

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

	// Dedicated layer-7 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"`

	// Availability zone of a VPC-based private network CLB instance
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	Zones []*string `json:"Zones,omitnil,omitempty" name:"Zones"`

	// Whether it is an NFV CLB instance. No returned information: no; l7nfv: yes.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	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, input an array of strings to determine whether it is enabled.
	// DeleteProtect: specifies deletion protection. once enabled, it prevents the cloud load balancer from being accidentally deleted. 
	// UserInVisible: invisible to users, controls load balancing visibility to users. 
	// BlockStatus: specifies the blockage status, used to limit certain operations or traffic for cloud load balancer. 
	// NoLBNat: disables the NAT feature of cloud load balancer for direct forwarding of traffic in specific scenarios. 
	// BanStatus: specifies the blocking status for suspending the clb service or restricting access. 
	// ShiftupFlag: specifies the upgrade flag used to identify if the cloud load balancer requires a configuration upgrade or performance improvement. 
	// Specifies the stopped status. once enabled, the cloud load balancer suspends service. 
	// NoVpcGw: specifies not to use VPC gateway to bypass the gateway for direct traffic handling. 
	// SgInTgw: specifies the security group in TGW (Transit Gateway) involving network security policy configuration. 
	// SharedLimitFlag: specifies the shared limit flag used to control the resource constraints of cloud load balancer. 
	// WafFlag: specifies the Web application firewall (WAF) flag. enabled to enable WAF protection. 
	// IsDomainCLB: indicates whether the cloud load balancer is domain name-based for traffic distribution. 
	// IPv6Snat: IPv6 source address translation (Snat), used for source address processing in IPv6 networks. 
	// HideDomain. specifies whether to hide the domain name for privacy protection or to avoid exposing it in specific scenarios. 
	// JumboFrame: specifies giant frame support. once enabled, it supports larger data frames to improve network efficiency. 
	// NoLBNatL4IPdc: specifies layer 4 IP direct connection without NAT, used for direct forwarding of IP traffic in layer 4 load balancing. 
	// VpcGwL3Service: specifies the VPC gateway layer-3 Service, which involves the gateway feature of the layer-3 network. 
	// Ipv62Flag: specifies the Ipv6 expansion Flag for specific feature support. 
	// Ipv62ExclusiveFlag: specifies the Ipv6 exclusive flag used for exclusive Ipv6 traffic processing. 
	// BgpPro: specifies BGP Pro support. 
	// ToaClean: TOA (TCP Option Address) cleanup. clears Address information in TCP options. 
	AttributeFlags []*string `json:"AttributeFlags,omitnil,omitempty" name:"AttributeFlags"`

	// Specifies the domain name of the load balancing instance.
	LoadBalancerDomain *string `json:"LoadBalancerDomain,omitnil,omitempty" name:"LoadBalancerDomain"`

	// Specifies the network outbound.
	Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"`

	// Indicates whether the instance type is dedicated. 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"`

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

	// Specifies the Endpoint id associated with the clb instance.
	AssociateEndpoint *string `json:"AssociateEndpoint,omitnil,omitempty" name:"AssociateEndpoint"`


	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 load balancing instance.
	// Public: Public network attribute. Private: Private network attribute. for Private network cloud load balancer, bind EIP for Public network access. refer to 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 status, including:
	// 0: creating; 1: running.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

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

	// IPv6 VIP 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"`

	// IP version of the CLB instance. Valid values: 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 CLB instance. Valid values: 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 where the CLB instance resides.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// ISP for the IP address of the CLB instance. Valid values: BGP (multi-line), CMCC (China Mobile), CUCC (China Unicom), CTCC (China Telecom), 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 instance to which the CLB instance belongs.
	// Note: this field may return null, indicating that no valid values can be obtained.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// 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 a CLB instance. Valid values: PREPAID (prepaid), 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 attribute.
	// Note: this field may return null, indicating that no valid values can be obtained.
	NetworkAttributes *InternetAccessible `json:"NetworkAttributes,omitnil,omitempty" name:"NetworkAttributes"`

	// Pay-as-you-go attribute of the CLB instance.
	// Note: this field may return null, indicating that no valid values can be obtained.
	PrepaidAttributes *LBChargePrepaid `json:"PrepaidAttributes,omitnil,omitempty" name:"PrepaidAttributes"`

	// Reserved field, which can be ignored generally.
	// Note: this field may return null, indicating that no valid values can be obtained.
	ExtraInfo *ExtraInfo `json:"ExtraInfo,omitnil,omitempty" name:"ExtraInfo"`

	// Custom configuration IDs of CLB instances. Multiple IDs must be 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"`

	// CLB instance tag information.
	// 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"`

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

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

	// Address of target real servers.
	// Note: this field may return null, indicating that no valid values can be obtained.
	TargetAddress *string `json:"TargetAddress,omitnil,omitempty" name:"TargetAddress"`

	// Listening port of target real servers.
	// Note: this field may return null, indicating that no valid values can be obtained.
	TargetPort *uint64 `json:"TargetPort,omitnil,omitempty" name:"TargetPort"`

	// Forwarding weight of target real servers.
	// 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 the security groups bound to the CLB instance.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	SecurityGroup []*string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Whether to enable moving up CLB security groups. Valid values: 1 (enabled), 0 (not enabled).Note: This field may return null, indicating that no valid values can be obtained.
	LoadBalancerPassToTarget *uint64 `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	// Health status of the target real server.
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	TargetHealth *string `json:"TargetHealth,omitnil,omitempty" name:"TargetHealth"`

	// List o domain names associated with 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"`

	// The secondary zone of multi-AZ CLB instance
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	SlaveZone []*string `json:"SlaveZone,omitnil,omitempty" name:"SlaveZone"`

	// The AZ of private CLB instance. This is only available for beta users.
	// 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 SNI. `1`: Enable; `0`: Do not enable. This parameter is only meaningful for HTTPS listeners.
	// Note: This field may return·null, indicating that no valid values can be obtained.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// Specifies the domain name of the load balancing instance.
	LoadBalancerDomain *string `json:"LoadBalancerDomain,omitnil,omitempty" name:"LoadBalancerDomain"`

	// Specifies the network outbound.
	Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"`

	// Specifies the attributes of cloud load balancer.
	// Note: This field may return null, indicating that no valid values can be obtained.
	AttributeFlags []*string `json:"AttributeFlags,omitnil,omitempty" name:"AttributeFlags"`

	// Specification type information for load balancing instances <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: ultra type 1 specification</li> <li>clb.c4.medium: ultra type 2 specification</li> <li>clb.c4.large: ultra type 3 specification</li> <li>clb.c4.xlarge: ultra 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 means non-dedicated instance. 1 means dedicated instance.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Exclusive *uint64 `json:"Exclusive,omitnil,omitempty" name:"Exclusive"`
}

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

	// Specifies the name of the load balancing instance.
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

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

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

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

	// CLB instance region
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// CLB instance VIP
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// Maximum outbound bandwidth in Mbps
	OutBandwidth *float64 `json:"OutBandwidth,omitnil,omitempty" name:"OutBandwidth"`

	// Specifies the CLB domain name.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

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

	// Source listener ID
	SourceListenerId *string `json:"SourceListenerId,omitnil,omitempty" name:"SourceListenerId"`

	// Target listener ID
	TargetListenerId *string `json:"TargetListenerId,omitnil,omitempty" name:"TargetListenerId"`

	// Redirection relationship between forwarding rules
	RewriteInfos []*RewriteLocationMap `json:"RewriteInfos,omitnil,omitempty" name:"RewriteInfos"`
}

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

	// Source listener ID
	SourceListenerId *string `json:"SourceListenerId,omitnil,omitempty" name:"SourceListenerId"`

	// Target listener ID
	TargetListenerId *string `json:"TargetListenerId,omitnil,omitempty" name:"TargetListenerId"`

	// Redirection relationship between forwarding rules
	RewriteInfos []*RewriteLocationMap `json:"RewriteInfos,omitnil,omitempty" name:"RewriteInfos"`
}

func (r *ManualRewriteRequest) 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 *ManualRewriteRequest) 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, "SourceListenerId")
	delete(f, "TargetListenerId")
	delete(f, "RewriteInfos")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ManualRewriteRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ManualRewriteResponseParams 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 ManualRewriteResponse struct {
	*tchttp.BaseResponse
	Response *ManualRewriteResponseParams `json:"Response"`
}

func (r *ManualRewriteResponse) 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 *ManualRewriteResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type MigrateClassicalLoadBalancersRequestParams struct {
	// Array of classic CLB instance IDs
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

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

type MigrateClassicalLoadBalancersRequest struct {
	*tchttp.BaseRequest
	
	// Array of classic CLB instance IDs
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

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

func (r *MigrateClassicalLoadBalancersRequest) 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 *MigrateClassicalLoadBalancersRequest) 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, "ExclusiveCluster")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "MigrateClassicalLoadBalancersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type MigrateClassicalLoadBalancersResponseParams 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 MigrateClassicalLoadBalancersResponse struct {
	*tchttp.BaseResponse
	Response *MigrateClassicalLoadBalancersResponseParams `json:"Response"`
}

func (r *MigrateClassicalLoadBalancersResponse) 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 *MigrateClassicalLoadBalancersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyBlockIPListRequestParams struct {
	// CLB instance ID
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Operation type. Valid values:
	// <li> add_customized_field (sets header initially to enable the blocklist feature)</li>
	// <li> set_customized_field (modifies header)</li>
	// <li> del_customized_field (deletes header)</li>
	// <li> add_blocked (adds IPs to blocklist)</li>
	// <li> del_blocked (deletes IPs from blocklist)</li>
	// <li> flush_blocked (clears blocklist)</li>
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Header field that stores real client IPs
	ClientIPField *string `json:"ClientIPField,omitnil,omitempty" name:"ClientIPField"`

	// List of blocked IPs. The array can contain up to 200,000 entries in one operation.
	BlockIPList []*string `json:"BlockIPList,omitnil,omitempty" name:"BlockIPList"`

	// Expiration time in seconds. Default value: 3600
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// IP adding policy. Valid value: fifo (if a blocklist is full, new IPs added to the blocklist will adopt the first-in first-out policy)
	AddStrategy *string `json:"AddStrategy,omitnil,omitempty" name:"AddStrategy"`
}

type ModifyBlockIPListRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance ID
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Operation type. Valid values:
	// <li> add_customized_field (sets header initially to enable the blocklist feature)</li>
	// <li> set_customized_field (modifies header)</li>
	// <li> del_customized_field (deletes header)</li>
	// <li> add_blocked (adds IPs to blocklist)</li>
	// <li> del_blocked (deletes IPs from blocklist)</li>
	// <li> flush_blocked (clears blocklist)</li>
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Header field that stores real client IPs
	ClientIPField *string `json:"ClientIPField,omitnil,omitempty" name:"ClientIPField"`

	// List of blocked IPs. The array can contain up to 200,000 entries in one operation.
	BlockIPList []*string `json:"BlockIPList,omitnil,omitempty" name:"BlockIPList"`

	// Expiration time in seconds. Default value: 3600
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// IP adding policy. Valid value: fifo (if a blocklist is full, new IPs added to the blocklist will adopt the first-in first-out policy)
	AddStrategy *string `json:"AddStrategy,omitnil,omitempty" name:"AddStrategy"`
}

func (r *ModifyBlockIPListRequest) 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 *ModifyBlockIPListRequest) 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, "Type")
	delete(f, "ClientIPField")
	delete(f, "BlockIPList")
	delete(f, "ExpireTime")
	delete(f, "AddStrategy")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyBlockIPListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyBlockIPListResponseParams struct {
	// Async task ID
	JodId *string `json:"JodId,omitnil,omitempty" name:"JodId"`

	// 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 ModifyBlockIPListResponse struct {
	*tchttp.BaseResponse
	Response *ModifyBlockIPListResponseParams `json:"Response"`
}

func (r *ModifyBlockIPListResponse) 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 *ModifyBlockIPListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyCustomizedConfigRequestParams struct {
	// Configuration name
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Configuration ID.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// Specifies the configuration content.
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`
}

type ModifyCustomizedConfigRequest struct {
	*tchttp.BaseRequest
	
	// Configuration name
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// Configuration ID.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// Specifies the configuration content.
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`
}

func (r *ModifyCustomizedConfigRequest) 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 *ModifyCustomizedConfigRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ConfigName")
	delete(f, "UconfigId")
	delete(f, "ConfigContent")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyCustomizedConfigRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyCustomizedConfigResponseParams 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 ModifyCustomizedConfigResponse struct {
	*tchttp.BaseResponse
	Response *ModifyCustomizedConfigResponseParams `json:"Response"`
}

func (r *ModifyCustomizedConfigResponse) 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 *ModifyCustomizedConfigResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDomainAttributesRequestParams struct {
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the CLB instance listener. You can call the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Domain name (must be a domain name under a created forwarding rule). if it is multiple domains, you can specify any one of the domain name list. it can be accessed through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// The one domain name to modify. `NewDomain` and `NewDomains` can not be both specified.
	NewDomain *string `json:"NewDomain,omitnil,omitempty" name:"NewDomain"`

	// Certificate information of the domain name. It is only applicable to listeners with SNI enabled. `Certificate` and `MultiCertInfo` cannot be specified at the same time. 
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Specifies whether to enable HTTP/2. note that only HTTPS domain names support HTTP/2.
	// True: enable HTTP2. false: disable HTTP2.
	Http2 *bool `json:"Http2,omitnil,omitempty" name:"Http2"`

	// Whether to set as the default domain name. Note: Only one default domain name can be set under a listener.
	// True: set as default domain name. false: do not set as default domain name.
	DefaultServer *bool `json:"DefaultServer,omitnil,omitempty" name:"DefaultServer"`

	// Specifies whether QUIC is enabled. note that QUIC can only be enabled for HTTPS domains.
	// True: enable QUIC. False: disable.
	Quic *bool `json:"Quic,omitnil,omitempty" name:"Quic"`

	// Specifies a new default domain name for the listener. This field is used when the original default domain name is disabled. If there are multiple domain names, specify one of them.
	NewDefaultServerDomain *string `json:"NewDefaultServerDomain,omitnil,omitempty" name:"NewDefaultServerDomain"`

	// The new domain names to modify. `NewDomain` and `NewDomains` can not be both specified.
	NewDomains []*string `json:"NewDomains,omitnil,omitempty" name:"NewDomains"`

	// Certificate information related to the domain name. Note: This applies only to listeners with SNI enabled. Multiple server certificates with different algorithm types can be input simultaneously, but this parameter cannot be input together with the Certificate.
	MultiCertInfo *MultiCertInfo `json:"MultiCertInfo,omitnil,omitempty" name:"MultiCertInfo"`
}

type ModifyDomainAttributesRequest struct {
	*tchttp.BaseRequest
	
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the CLB instance listener. You can call the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Domain name (must be a domain name under a created forwarding rule). if it is multiple domains, you can specify any one of the domain name list. it can be accessed through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// The one domain name to modify. `NewDomain` and `NewDomains` can not be both specified.
	NewDomain *string `json:"NewDomain,omitnil,omitempty" name:"NewDomain"`

	// Certificate information of the domain name. It is only applicable to listeners with SNI enabled. `Certificate` and `MultiCertInfo` cannot be specified at the same time. 
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Specifies whether to enable HTTP/2. note that only HTTPS domain names support HTTP/2.
	// True: enable HTTP2. false: disable HTTP2.
	Http2 *bool `json:"Http2,omitnil,omitempty" name:"Http2"`

	// Whether to set as the default domain name. Note: Only one default domain name can be set under a listener.
	// True: set as default domain name. false: do not set as default domain name.
	DefaultServer *bool `json:"DefaultServer,omitnil,omitempty" name:"DefaultServer"`

	// Specifies whether QUIC is enabled. note that QUIC can only be enabled for HTTPS domains.
	// True: enable QUIC. False: disable.
	Quic *bool `json:"Quic,omitnil,omitempty" name:"Quic"`

	// Specifies a new default domain name for the listener. This field is used when the original default domain name is disabled. If there are multiple domain names, specify one of them.
	NewDefaultServerDomain *string `json:"NewDefaultServerDomain,omitnil,omitempty" name:"NewDefaultServerDomain"`

	// The new domain names to modify. `NewDomain` and `NewDomains` can not be both specified.
	NewDomains []*string `json:"NewDomains,omitnil,omitempty" name:"NewDomains"`

	// Certificate information related to the domain name. Note: This applies only to listeners with SNI enabled. Multiple server certificates with different algorithm types can be input simultaneously, but this parameter cannot be input together with the Certificate.
	MultiCertInfo *MultiCertInfo `json:"MultiCertInfo,omitnil,omitempty" name:"MultiCertInfo"`
}

func (r *ModifyDomainAttributesRequest) 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 *ModifyDomainAttributesRequest) 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, "ListenerId")
	delete(f, "Domain")
	delete(f, "NewDomain")
	delete(f, "Certificate")
	delete(f, "Http2")
	delete(f, "DefaultServer")
	delete(f, "Quic")
	delete(f, "NewDefaultServerDomain")
	delete(f, "NewDomains")
	delete(f, "MultiCertInfo")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyDomainAttributesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDomainAttributesResponseParams 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 ModifyDomainAttributesResponse struct {
	*tchttp.BaseResponse
	Response *ModifyDomainAttributesResponseParams `json:"Response"`
}

func (r *ModifyDomainAttributesResponse) 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 *ModifyDomainAttributesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDomainRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the clb listener. you can call the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// An existing domain under the listener, can be queried through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// New domain name. 	Length limit: 1-120. There are three usage formats: non-regular expression, wildcard, and regular expression. A non-regular expression can only contain letters, digits, "-", and ".". In a wildcard, "*" can only be at the beginning or the end. A regular expressions must begin with a "~".
	NewDomain *string `json:"NewDomain,omitnil,omitempty" name:"NewDomain"`
}

type ModifyDomainRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the clb listener. you can call the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// An existing domain under the listener, can be queried through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// New domain name. 	Length limit: 1-120. There are three usage formats: non-regular expression, wildcard, and regular expression. A non-regular expression can only contain letters, digits, "-", and ".". In a wildcard, "*" can only be at the beginning or the end. A regular expressions must begin with a "~".
	NewDomain *string `json:"NewDomain,omitnil,omitempty" name:"NewDomain"`
}

func (r *ModifyDomainRequest) 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 *ModifyDomainRequest) 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, "ListenerId")
	delete(f, "Domain")
	delete(f, "NewDomain")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyDomainRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDomainResponseParams 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 ModifyDomainResponse struct {
	*tchttp.BaseResponse
	Response *ModifyDomainResponseParams `json:"Response"`
}

func (r *ModifyDomainResponse) 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 *ModifyDomainResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Specifies the backend SCF service list to modify. only Event function type is supported.
	FunctionTargets []*FunctionTarget `json:"FunctionTargets,omitnil,omitempty" name:"FunctionTargets"`

	// Forwarding rule ID. When binding a real server to a layer-7 forwarding rule, you must provide either this parameter or `Domain`+`Url`.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if `LocationId` is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if `LocationId` is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Specifies the backend SCF service list to modify. only Event function type is supported.
	FunctionTargets []*FunctionTarget `json:"FunctionTargets,omitnil,omitempty" name:"FunctionTargets"`

	// Forwarding rule ID. When binding a real server to a layer-7 forwarding rule, you must provide either this parameter or `Domain`+`Url`.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if `LocationId` is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if `LocationId` is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

func (r *ModifyFunctionTargetsRequest) 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 *ModifyFunctionTargetsRequest) 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, "ListenerId")
	delete(f, "FunctionTargets")
	delete(f, "LocationId")
	delete(f, "Domain")
	delete(f, "Url")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyFunctionTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyFunctionTargetsResponseParams 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 ModifyFunctionTargetsResponse struct {
	*tchttp.BaseResponse
	Response *ModifyFunctionTargetsResponseParams `json:"Response"`
}

func (r *ModifyFunctionTargetsResponse) 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 *ModifyFunctionTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyListenerRequestParams struct {
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://intl.cloud.tencent.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the CLB instance listener. You can call the [DescribeListeners](https://intl.cloud.tencent.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// New listener name. The maximum length is 255 characters.
	ListenerName *string `json:"ListenerName,omitnil,omitempty" name:"ListenerName"`

	// Session persistence time in seconds. Value range: 30-3,600. The default value is 0, indicating that session persistence is not enabled. This parameter is applicable only to TCP/UDP listeners.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Health check parameter. It is only applicable only to TCP, UDP, TCP_SSL and QUIC listeners.
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Certificate information. This parameter is only applicable to HTTPS/TCP_SSL/QUIC listeners. `Certificate` and `MultiCertInfo` cannot be both specified.
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Listener forwarding method. Valid values: WRR (weighted round-robin), LEAST_CONN (least connections), and IP_HASH (IP address hash).
	// They indicate weighted round-robin and least connections, respectively. Default value: WRR.
	// Use cases: This applies to TCP/UDP/TCP_SSL/QUIC listeners. The balancing method for Layer-7 listeners should be modified in the forwarding rules.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Whether to enable the SNI feature. This parameter applies only to HTTPS listeners. The default value is 0, indicating disabled, and 1 indicates enabled. Note: The SNI feature can be enabled for listeners that have not enabled SNI, but cannot be disabled for listeners that have enabled SNI.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// Target backend type. `NODE`: A single node; `TARGETGROUP`: A target group.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Whether to enable the persistent connection feature. This parameter applies only to HTTP/HTTPS listeners.
	// The default value is 0, indicating disabled, and 1 indicates enabled.
	// 
	// Enable this feature with caution if the maximum number of connections is limited for real servers. This feature is in beta testing. To use it, submit a [beta testing application](https://intl.cloud.tencent.com/apply/p/tsodp6qm21?from_cn_redirect=1).
	KeepaliveEnable *int64 `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Reschedules when unbinding real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	DeregisterTargetRst *bool `json:"DeregisterTargetRst,omitnil,omitempty" name:"DeregisterTargetRst"`

	// Session persistence type. NORMAL: default session persistence type; QUIC_CID: perform session persistence based on QUIC connection ID. If the value is set to QUIC_CID, only the UDP protocol is supported.
	// Use cases: This applies to TCP/UDP/TCP_SSL/QUIC listeners.
	// 
	// Default value: NORMAL.
	SessionType *string `json:"SessionType,omitnil,omitempty" name:"SessionType"`

	// Certificate information. You can specify multiple server-side certificates with different algorithm types. This parameter is only applicable to HTTPS listeners with the SNI feature not enabled. `Certificate` and `MultiCertInfo` cannot be specified at the same time. 
	MultiCertInfo *MultiCertInfo `json:"MultiCertInfo,omitnil,omitempty" name:"MultiCertInfo"`

	// Maximum number of concurrent connections at the listener level. This parameter is supported only for LCU-supported instances with TCP/UDP/TCP_SSL/QUIC listeners currently. Value range: 1 to the maximum number of concurrent connections for the instance specification. -1 indicates that no limit is set on the concurrent connections at the listener level. Classic network instances do not support this parameter.
	// 
	// Default value: -1, which indicates no limit.
	MaxConn *int64 `json:"MaxConn,omitnil,omitempty" name:"MaxConn"`

	// Maximum number of new connections at the listener level. This parameter is supported only for LCU-supported instances with TCP/UDP/TCP_SSL/QUIC listeners currently. Value range: 1 to the maximum number of new connections for the instance specification. -1 indicates that no limit is set on the new connections at the listener level. Classic network instances do not support this parameter.
	// 
	// Default value: -1, which indicates no limit.
	MaxCps *int64 `json:"MaxCps,omitnil,omitempty" name:"MaxCps"`

	// Specifies the idle connection timeout in seconds. this parameter applies only to TCP/UDP listeners. default value: 900 for TCP listeners and 300 for UDP listeners. value range: 10–900 for shared instances and dedicated instances and 10–1980 for lcu-supported instances. to set a value exceeding 1980, [submit a ticket application](https://console.cloud.tencent.com/workorder/category). the maximum settable value is 3600.
	IdleConnectTimeout *int64 `json:"IdleConnectTimeout,omitnil,omitempty" name:"IdleConnectTimeout"`

	// Specifies whether PP is supported for TCP_SSL and QUIC.
	ProxyProtocol *bool `json:"ProxyProtocol,omitnil,omitempty" name:"ProxyProtocol"`

	// Whether SNAT (source IP replacement) is enabled. valid values: True (enabled), False (disabled). disabled by default. note: when SnatEnable is enabled, the client source IP will be replaced, at this point the `pass through client source IP` option is disabled, and vice versa.
	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`

	// Data compression mode.
	DataCompressMode *string `json:"DataCompressMode,omitnil,omitempty" name:"DataCompressMode"`

	// Reschedules when setting backend server weight to 0. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleTargetZeroWeight *bool `json:"RescheduleTargetZeroWeight,omitnil,omitempty" name:"RescheduleTargetZeroWeight"`

	// Reschedules when health check exceptions occur on real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleUnhealthy *bool `json:"RescheduleUnhealthy,omitnil,omitempty" name:"RescheduleUnhealthy"`

	// Reschedules when adding or removing backend servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleExpandTarget *bool `json:"RescheduleExpandTarget,omitnil,omitempty" name:"RescheduleExpandTarget"`

	// Specifies the trigger start time for rescheduling. value range: 0-3600s. supported only by TCP/UDP listeners.
	RescheduleStartTime *int64 `json:"RescheduleStartTime,omitnil,omitempty" name:"RescheduleStartTime"`

	// Rescheduling trigger duration. valid values: 0-3600s. only TCP/UDP listeners support this.
	RescheduleInterval *int64 `json:"RescheduleInterval,omitnil,omitempty" name:"RescheduleInterval"`
}

type ModifyListenerRequest struct {
	*tchttp.BaseRequest
	
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://intl.cloud.tencent.com/document/product/214/30685?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the CLB instance listener. You can call the [DescribeListeners](https://intl.cloud.tencent.com/document/product/214/30686?from_cn_redirect=1) API to query the ID.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// New listener name. The maximum length is 255 characters.
	ListenerName *string `json:"ListenerName,omitnil,omitempty" name:"ListenerName"`

	// Session persistence time in seconds. Value range: 30-3,600. The default value is 0, indicating that session persistence is not enabled. This parameter is applicable only to TCP/UDP listeners.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Health check parameter. It is only applicable only to TCP, UDP, TCP_SSL and QUIC listeners.
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Certificate information. This parameter is only applicable to HTTPS/TCP_SSL/QUIC listeners. `Certificate` and `MultiCertInfo` cannot be both specified.
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Listener forwarding method. Valid values: WRR (weighted round-robin), LEAST_CONN (least connections), and IP_HASH (IP address hash).
	// They indicate weighted round-robin and least connections, respectively. Default value: WRR.
	// Use cases: This applies to TCP/UDP/TCP_SSL/QUIC listeners. The balancing method for Layer-7 listeners should be modified in the forwarding rules.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Whether to enable the SNI feature. This parameter applies only to HTTPS listeners. The default value is 0, indicating disabled, and 1 indicates enabled. Note: The SNI feature can be enabled for listeners that have not enabled SNI, but cannot be disabled for listeners that have enabled SNI.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// Target backend type. `NODE`: A single node; `TARGETGROUP`: A target group.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Whether to enable the persistent connection feature. This parameter applies only to HTTP/HTTPS listeners.
	// The default value is 0, indicating disabled, and 1 indicates enabled.
	// 
	// Enable this feature with caution if the maximum number of connections is limited for real servers. This feature is in beta testing. To use it, submit a [beta testing application](https://intl.cloud.tencent.com/apply/p/tsodp6qm21?from_cn_redirect=1).
	KeepaliveEnable *int64 `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Reschedules when unbinding real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	DeregisterTargetRst *bool `json:"DeregisterTargetRst,omitnil,omitempty" name:"DeregisterTargetRst"`

	// Session persistence type. NORMAL: default session persistence type; QUIC_CID: perform session persistence based on QUIC connection ID. If the value is set to QUIC_CID, only the UDP protocol is supported.
	// Use cases: This applies to TCP/UDP/TCP_SSL/QUIC listeners.
	// 
	// Default value: NORMAL.
	SessionType *string `json:"SessionType,omitnil,omitempty" name:"SessionType"`

	// Certificate information. You can specify multiple server-side certificates with different algorithm types. This parameter is only applicable to HTTPS listeners with the SNI feature not enabled. `Certificate` and `MultiCertInfo` cannot be specified at the same time. 
	MultiCertInfo *MultiCertInfo `json:"MultiCertInfo,omitnil,omitempty" name:"MultiCertInfo"`

	// Maximum number of concurrent connections at the listener level. This parameter is supported only for LCU-supported instances with TCP/UDP/TCP_SSL/QUIC listeners currently. Value range: 1 to the maximum number of concurrent connections for the instance specification. -1 indicates that no limit is set on the concurrent connections at the listener level. Classic network instances do not support this parameter.
	// 
	// Default value: -1, which indicates no limit.
	MaxConn *int64 `json:"MaxConn,omitnil,omitempty" name:"MaxConn"`

	// Maximum number of new connections at the listener level. This parameter is supported only for LCU-supported instances with TCP/UDP/TCP_SSL/QUIC listeners currently. Value range: 1 to the maximum number of new connections for the instance specification. -1 indicates that no limit is set on the new connections at the listener level. Classic network instances do not support this parameter.
	// 
	// Default value: -1, which indicates no limit.
	MaxCps *int64 `json:"MaxCps,omitnil,omitempty" name:"MaxCps"`

	// Specifies the idle connection timeout in seconds. this parameter applies only to TCP/UDP listeners. default value: 900 for TCP listeners and 300 for UDP listeners. value range: 10–900 for shared instances and dedicated instances and 10–1980 for lcu-supported instances. to set a value exceeding 1980, [submit a ticket application](https://console.cloud.tencent.com/workorder/category). the maximum settable value is 3600.
	IdleConnectTimeout *int64 `json:"IdleConnectTimeout,omitnil,omitempty" name:"IdleConnectTimeout"`

	// Specifies whether PP is supported for TCP_SSL and QUIC.
	ProxyProtocol *bool `json:"ProxyProtocol,omitnil,omitempty" name:"ProxyProtocol"`

	// Whether SNAT (source IP replacement) is enabled. valid values: True (enabled), False (disabled). disabled by default. note: when SnatEnable is enabled, the client source IP will be replaced, at this point the `pass through client source IP` option is disabled, and vice versa.
	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`

	// Data compression mode.
	DataCompressMode *string `json:"DataCompressMode,omitnil,omitempty" name:"DataCompressMode"`

	// Reschedules when setting backend server weight to 0. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleTargetZeroWeight *bool `json:"RescheduleTargetZeroWeight,omitnil,omitempty" name:"RescheduleTargetZeroWeight"`

	// Reschedules when health check exceptions occur on real servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleUnhealthy *bool `json:"RescheduleUnhealthy,omitnil,omitempty" name:"RescheduleUnhealthy"`

	// Reschedules when adding or removing backend servers. only supported for TCP/UDP listeners. toggle on to enable this feature.
	RescheduleExpandTarget *bool `json:"RescheduleExpandTarget,omitnil,omitempty" name:"RescheduleExpandTarget"`

	// Specifies the trigger start time for rescheduling. value range: 0-3600s. supported only by TCP/UDP listeners.
	RescheduleStartTime *int64 `json:"RescheduleStartTime,omitnil,omitempty" name:"RescheduleStartTime"`

	// Rescheduling trigger duration. valid values: 0-3600s. only TCP/UDP listeners support this.
	RescheduleInterval *int64 `json:"RescheduleInterval,omitnil,omitempty" name:"RescheduleInterval"`
}

func (r *ModifyListenerRequest) 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 *ModifyListenerRequest) 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, "ListenerId")
	delete(f, "ListenerName")
	delete(f, "SessionExpireTime")
	delete(f, "HealthCheck")
	delete(f, "Certificate")
	delete(f, "Scheduler")
	delete(f, "SniSwitch")
	delete(f, "TargetType")
	delete(f, "KeepaliveEnable")
	delete(f, "DeregisterTargetRst")
	delete(f, "SessionType")
	delete(f, "MultiCertInfo")
	delete(f, "MaxConn")
	delete(f, "MaxCps")
	delete(f, "IdleConnectTimeout")
	delete(f, "ProxyProtocol")
	delete(f, "SnatEnable")
	delete(f, "DataCompressMode")
	delete(f, "RescheduleTargetZeroWeight")
	delete(f, "RescheduleUnhealthy")
	delete(f, "RescheduleExpandTarget")
	delete(f, "RescheduleStartTime")
	delete(f, "RescheduleInterval")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyListenerRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyListenerResponseParams 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 ModifyListenerResponse struct {
	*tchttp.BaseResponse
	Response *ModifyListenerResponseParams `json:"Response"`
}

func (r *ModifyListenerResponse) 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 *ModifyListenerResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyLoadBalancerAttributesRequestParams struct {
	// Specifies the unique ID of the cloud load balancer. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Load balancing instance name. rule: 1-60 english letters, chinese characters, digits, hyphens "-", or underscores "_".
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// The backend service information of cross-region binding 1.0
	TargetRegionInfo *TargetRegionInfo `json:"TargetRegionInfo,omitnil,omitempty" name:"TargetRegionInfo"`

	// Network billing parameter
	InternetChargeInfo *InternetAccessible `json:"InternetChargeInfo,omitnil,omitempty" name:"InternetChargeInfo"`

	// Specifies whether to allow CLB traffic to the Target.
	// Enable pass-through (true): verify security groups on CLB only.
	// Denies CLB traffic to the target (false): verify security groups on both CLB and backend instances.
	// Specifies no modification if left blank.
	LoadBalancerPassToTarget *bool `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`


	SwitchFlag *uint64 `json:"SwitchFlag,omitnil,omitempty" name:"SwitchFlag"`

	// Specifies whether the cross-region binding 2.0 feature is enabled. leave blank for no modification.
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// Specifies whether to enable deletion protection. leave it blank to keep the current setting.
	DeleteProtect *bool `json:"DeleteProtect,omitnil,omitempty" name:"DeleteProtect"`

	// Modifies the second-level domain name of cloud load balancer from mycloud.com to tencentclb.com. the subdomain will be transformed, and the mycloud.com domain name will become invalid after modification. leave it blank if no modification is required.
	ModifyClassicDomain *bool `json:"ModifyClassicDomain,omitnil,omitempty" name:"ModifyClassicDomain"`

	// The associated endpoint Id, which can be queried via the [DescribeVpcEndPoint](https://www.tencentcloud.com/document/product/215/54679?from_cn_redirect=1) api. input an empty string to unbind.
	AssociateEndpoint *string `json:"AssociateEndpoint,omitnil,omitempty" name:"AssociateEndpoint"`
}

type ModifyLoadBalancerAttributesRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the unique ID of the cloud load balancer. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Load balancing instance name. rule: 1-60 english letters, chinese characters, digits, hyphens "-", or underscores "_".
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

	// The backend service information of cross-region binding 1.0
	TargetRegionInfo *TargetRegionInfo `json:"TargetRegionInfo,omitnil,omitempty" name:"TargetRegionInfo"`

	// Network billing parameter
	InternetChargeInfo *InternetAccessible `json:"InternetChargeInfo,omitnil,omitempty" name:"InternetChargeInfo"`

	// Specifies whether to allow CLB traffic to the Target.
	// Enable pass-through (true): verify security groups on CLB only.
	// Denies CLB traffic to the target (false): verify security groups on both CLB and backend instances.
	// Specifies no modification if left blank.
	LoadBalancerPassToTarget *bool `json:"LoadBalancerPassToTarget,omitnil,omitempty" name:"LoadBalancerPassToTarget"`

	SwitchFlag *uint64 `json:"SwitchFlag,omitnil,omitempty" name:"SwitchFlag"`

	// Specifies whether the cross-region binding 2.0 feature is enabled. leave blank for no modification.
	SnatPro *bool `json:"SnatPro,omitnil,omitempty" name:"SnatPro"`

	// Specifies whether to enable deletion protection. leave it blank to keep the current setting.
	DeleteProtect *bool `json:"DeleteProtect,omitnil,omitempty" name:"DeleteProtect"`

	// Modifies the second-level domain name of cloud load balancer from mycloud.com to tencentclb.com. the subdomain will be transformed, and the mycloud.com domain name will become invalid after modification. leave it blank if no modification is required.
	ModifyClassicDomain *bool `json:"ModifyClassicDomain,omitnil,omitempty" name:"ModifyClassicDomain"`

	// The associated endpoint Id, which can be queried via the [DescribeVpcEndPoint](https://www.tencentcloud.com/document/product/215/54679?from_cn_redirect=1) api. input an empty string to unbind.
	AssociateEndpoint *string `json:"AssociateEndpoint,omitnil,omitempty" name:"AssociateEndpoint"`
}

func (r *ModifyLoadBalancerAttributesRequest) 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 *ModifyLoadBalancerAttributesRequest) 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, "TargetRegionInfo")
	delete(f, "InternetChargeInfo")
	delete(f, "LoadBalancerPassToTarget")
	delete(f, "SwitchFlag")
	delete(f, "SnatPro")
	delete(f, "DeleteProtect")
	delete(f, "ModifyClassicDomain")
	delete(f, "AssociateEndpoint")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLoadBalancerAttributesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyLoadBalancerAttributesResponseParams struct {
	// This parameter can be used to query whether CLB billing mode switch is successful.
	// Note: this field may return null, indicating that no valid values can be obtained.
	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 ModifyLoadBalancerAttributesResponse struct {
	*tchttp.BaseResponse
	Response *ModifyLoadBalancerAttributesResponseParams `json:"Response"`
}

func (r *ModifyLoadBalancerAttributesResponse) 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 *ModifyLoadBalancerAttributesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyLoadBalancerSlaRequestParams struct {
	// CLB instance information.
	LoadBalancerSla []*SlaUpdateParam `json:"LoadBalancerSla,omitnil,omitempty" name:"LoadBalancerSla"`

	// Whether to force upgrade. The default is no.
	Force *bool `json:"Force,omitnil,omitempty" name:"Force"`
}

type ModifyLoadBalancerSlaRequest struct {
	*tchttp.BaseRequest
	
	// CLB instance information.
	LoadBalancerSla []*SlaUpdateParam `json:"LoadBalancerSla,omitnil,omitempty" name:"LoadBalancerSla"`

	// Whether to force upgrade. The default is no.
	Force *bool `json:"Force,omitnil,omitempty" name:"Force"`
}

func (r *ModifyLoadBalancerSlaRequest) 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 *ModifyLoadBalancerSlaRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "LoadBalancerSla")
	delete(f, "Force")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLoadBalancerSlaRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyLoadBalancerSlaResponseParams struct {

	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 ModifyLoadBalancerSlaResponse struct {
	*tchttp.BaseResponse
	Response *ModifyLoadBalancerSlaResponseParams `json:"Response"`
}

func (r *ModifyLoadBalancerSlaResponse) 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 *ModifyLoadBalancerSlaResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyLoadBalancersProjectRequestParams struct {
	// One or more load balancing instance ids to be operated. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ids.
	// Specifies the maximum length supported by the list is 20.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Project ID. You can obtain it through the [DescribeProject](https://intl.cloud.tencent.com/document/api/651/78725?from_cn_redirect=1) API.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

type ModifyLoadBalancersProjectRequest struct {
	*tchttp.BaseRequest
	
	// One or more load balancing instance ids to be operated. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ids.
	// Specifies the maximum length supported by the list is 20.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`

	// Project ID. You can obtain it through the [DescribeProject](https://intl.cloud.tencent.com/document/api/651/78725?from_cn_redirect=1) API.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

func (r *ModifyLoadBalancersProjectRequest) 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 *ModifyLoadBalancersProjectRequest) 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, "ProjectId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLoadBalancersProjectRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyLoadBalancersProjectResponseParams 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 ModifyLoadBalancersProjectResponse struct {
	*tchttp.BaseResponse
	Response *ModifyLoadBalancersProjectResponseParams `json:"Response"`
}

func (r *ModifyLoadBalancersProjectResponse) 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 *ModifyLoadBalancersProjectResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRuleRequestParams struct {
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the clb listener. can be obtained through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Specifies the rule ID of the forwarding rule to be modified, which can be obtained through the DescribeListeners API (https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1).
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// New forwarding path of the forwarding rule. This parameter is not required if the URL does not need to be modified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Health check information
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Request forwarding method of the rule. Value range: WRR, LEAST_CONN, IP_HASH
	// They represent weighted round robin, least connections, and IP hash, respectively. Default value: WRR.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Session persistence duration, in seconds. Value range: 0 or 30-86400.
	// Defaults to 0.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Forwarding protocol between a CLB instance and the real server. Default value: HTTP. Valid values: HTTP, HTTPS, GRPC. This parameter is valid only for HTTPS listeners.
	ForwardType *string `json:"ForwardType,omitnil,omitempty" name:"ForwardType"`

	// TRPC callee server route, which is required when `ForwardType` is "TRPC". This is now only for internal usage.
	TrpcCallee *string `json:"TrpcCallee,omitnil,omitempty" name:"TrpcCallee"`

	// TRPC calling service API, which is required when `ForwardType` is "TRPC". This is now only for internal usage.
	TrpcFunc *string `json:"TrpcFunc,omitnil,omitempty" name:"TrpcFunc"`

	// OAuth configuration information.
	OAuth *OAuth `json:"OAuth,omitnil,omitempty" name:"OAuth"`

	// Specifies the custom cookie name.
	CookieName *string `json:"CookieName,omitnil,omitempty" name:"CookieName"`
}

type ModifyRuleRequest struct {
	*tchttp.BaseRequest
	
	// ID of the CLB instance. You can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/214/30685?from_cn_redirect=1) API to obtain the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// ID of the clb listener. can be obtained through the [DescribeListeners](https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1) api.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Specifies the rule ID of the forwarding rule to be modified, which can be obtained through the DescribeListeners API (https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1).
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// New forwarding path of the forwarding rule. This parameter is not required if the URL does not need to be modified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Health check information
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Request forwarding method of the rule. Value range: WRR, LEAST_CONN, IP_HASH
	// They represent weighted round robin, least connections, and IP hash, respectively. Default value: WRR.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Session persistence duration, in seconds. Value range: 0 or 30-86400.
	// Defaults to 0.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Forwarding protocol between a CLB instance and the real server. Default value: HTTP. Valid values: HTTP, HTTPS, GRPC. This parameter is valid only for HTTPS listeners.
	ForwardType *string `json:"ForwardType,omitnil,omitempty" name:"ForwardType"`

	// TRPC callee server route, which is required when `ForwardType` is "TRPC". This is now only for internal usage.
	TrpcCallee *string `json:"TrpcCallee,omitnil,omitempty" name:"TrpcCallee"`

	// TRPC calling service API, which is required when `ForwardType` is "TRPC". This is now only for internal usage.
	TrpcFunc *string `json:"TrpcFunc,omitnil,omitempty" name:"TrpcFunc"`

	// OAuth configuration information.
	OAuth *OAuth `json:"OAuth,omitnil,omitempty" name:"OAuth"`

	// Specifies the custom cookie name.
	CookieName *string `json:"CookieName,omitnil,omitempty" name:"CookieName"`
}

func (r *ModifyRuleRequest) 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 *ModifyRuleRequest) 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, "ListenerId")
	delete(f, "LocationId")
	delete(f, "Url")
	delete(f, "HealthCheck")
	delete(f, "Scheduler")
	delete(f, "SessionExpireTime")
	delete(f, "ForwardType")
	delete(f, "TrpcCallee")
	delete(f, "TrpcFunc")
	delete(f, "OAuth")
	delete(f, "CookieName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRuleResponseParams 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 ModifyRuleResponse struct {
	*tchttp.BaseResponse
	Response *ModifyRuleResponseParams `json:"Response"`
}

func (r *ModifyRuleResponse) 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 *ModifyRuleResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetGroupAttributeRequestParams struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// New name of target group
	TargetGroupName *string `json:"TargetGroupName,omitnil,omitempty" name:"TargetGroupName"`

	// The new default port of the target group. this parameter is not supported for full listen target groups.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Scheduling algorithm. this parameter is valid only for target groups of the new version V2 when the backend forwarding protocol is HTTP, HTTPS, or GRPC. available values:.
	// <ur><li>WRR: weighted round-robin.</li><li>LEAST_CONN: LEAST connection.</li><li>IP_HASH: based on IP HASH.</li><li>default is WRR.</li></ur>.
	ScheduleAlgorithm *string `json:"ScheduleAlgorithm,omitnil,omitempty" name:"ScheduleAlgorithm"`

	// Health check details.
	HealthCheck *TargetGroupHealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Default Weight for backend service. among them: <ul><li>value ranges from 0 to 100.</li><li>after setting this value, when adding a backend service to the target group, if the backend service does not set Weight separately, use the default Weight here.</li><li>Weight parameter settings not supported for v1 target group type.</li></ul>.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Specifies whether to enable the persistent connection feature. this parameter applies only to HTTP and HTTPS target groups. true: disable; false: enable. this feature is off by default.
	KeepaliveEnable *bool `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Specifies the session persistence time in seconds. value range: 30-3600. default: 0 (disabled). this parameter is unsupported for TCP/UDP target groups.
	SessionExpireTime *uint64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`


	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`
}

type ModifyTargetGroupAttributeRequest struct {
	*tchttp.BaseRequest
	
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// New name of target group
	TargetGroupName *string `json:"TargetGroupName,omitnil,omitempty" name:"TargetGroupName"`

	// The new default port of the target group. this parameter is not supported for full listen target groups.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Scheduling algorithm. this parameter is valid only for target groups of the new version V2 when the backend forwarding protocol is HTTP, HTTPS, or GRPC. available values:.
	// <ur><li>WRR: weighted round-robin.</li><li>LEAST_CONN: LEAST connection.</li><li>IP_HASH: based on IP HASH.</li><li>default is WRR.</li></ur>.
	ScheduleAlgorithm *string `json:"ScheduleAlgorithm,omitnil,omitempty" name:"ScheduleAlgorithm"`

	// Health check details.
	HealthCheck *TargetGroupHealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Default Weight for backend service. among them: <ul><li>value ranges from 0 to 100.</li><li>after setting this value, when adding a backend service to the target group, if the backend service does not set Weight separately, use the default Weight here.</li><li>Weight parameter settings not supported for v1 target group type.</li></ul>.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Specifies whether to enable the persistent connection feature. this parameter applies only to HTTP and HTTPS target groups. true: disable; false: enable. this feature is off by default.
	KeepaliveEnable *bool `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Specifies the session persistence time in seconds. value range: 30-3600. default: 0 (disabled). this parameter is unsupported for TCP/UDP target groups.
	SessionExpireTime *uint64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"`
}

func (r *ModifyTargetGroupAttributeRequest) 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 *ModifyTargetGroupAttributeRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupId")
	delete(f, "TargetGroupName")
	delete(f, "Port")
	delete(f, "ScheduleAlgorithm")
	delete(f, "HealthCheck")
	delete(f, "Weight")
	delete(f, "KeepaliveEnable")
	delete(f, "SessionExpireTime")
	delete(f, "SnatEnable")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyTargetGroupAttributeRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetGroupAttributeResponseParams 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 ModifyTargetGroupAttributeResponse struct {
	*tchttp.BaseResponse
	Response *ModifyTargetGroupAttributeResponseParams `json:"Response"`
}

func (r *ModifyTargetGroupAttributeResponse) 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 *ModifyTargetGroupAttributeResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetGroupInstancesPortRequestParams struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Array of servers whose Port is to be modified. NewPort and Port are required items in this api.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

type ModifyTargetGroupInstancesPortRequest struct {
	*tchttp.BaseRequest
	
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Array of servers whose Port is to be modified. NewPort and Port are required items in this api.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

func (r *ModifyTargetGroupInstancesPortRequest) 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 *ModifyTargetGroupInstancesPortRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupId")
	delete(f, "TargetGroupInstances")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyTargetGroupInstancesPortRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetGroupInstancesPortResponseParams 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 ModifyTargetGroupInstancesPortResponse struct {
	*tchttp.BaseResponse
	Response *ModifyTargetGroupInstancesPortResponseParams `json:"Response"`
}

func (r *ModifyTargetGroupInstancesPortResponse) 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 *ModifyTargetGroupInstancesPortResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetGroupInstancesWeightRequestParams struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Array of servers whose weight is to be modified. Port is a required item in this api.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

type ModifyTargetGroupInstancesWeightRequest struct {
	*tchttp.BaseRequest
	
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Array of servers whose weight is to be modified. Port is a required item in this api.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

func (r *ModifyTargetGroupInstancesWeightRequest) 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 *ModifyTargetGroupInstancesWeightRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupId")
	delete(f, "TargetGroupInstances")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyTargetGroupInstancesWeightRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetGroupInstancesWeightResponseParams 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 ModifyTargetGroupInstancesWeightResponse struct {
	*tchttp.BaseResponse
	Response *ModifyTargetGroupInstancesWeightResponseParams `json:"Response"`
}

func (r *ModifyTargetGroupInstancesWeightResponse) 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 *ModifyTargetGroupInstancesWeightResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers for which to modify the ports
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// New port of the real server bound to a listener or forwarding rule
	NewPort *int64 `json:"NewPort,omitnil,omitempty" name:"NewPort"`

	// Forwarding rule ID. When binding a real server to a layer-7 forwarding rule, you must provide either this parameter or Domain+Url.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers for which to modify the ports
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// New port of the real server bound to a listener or forwarding rule
	NewPort *int64 `json:"NewPort,omitnil,omitempty" name:"NewPort"`

	// Forwarding rule ID. When binding a real server to a layer-7 forwarding rule, you must provide either this parameter or Domain+Url.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

func (r *ModifyTargetPortRequest) 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 *ModifyTargetPortRequest) 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, "ListenerId")
	delete(f, "Targets")
	delete(f, "NewPort")
	delete(f, "LocationId")
	delete(f, "Domain")
	delete(f, "Url")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyTargetPortRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetPortResponseParams 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 ModifyTargetPortResponse struct {
	*tchttp.BaseResponse
	Response *ModifyTargetPortResponseParams `json:"Response"`
}

func (r *ModifyTargetPortResponse) 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 *ModifyTargetPortResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers for which to modify the weights
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Forwarding rule ID. When binding a real server to a layer-7 forwarding rule, you must provide either this parameter or Domain+Url.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// New forwarding weight of a real server. Value range: 0-100. Default value: 10. If the Targets.Weight parameter is set, this parameter will not take effect.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers for which to modify the weights
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Forwarding rule ID. When binding a real server to a layer-7 forwarding rule, you must provide either this parameter or Domain+Url.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// New forwarding weight of a real server. Value range: 0-100. Default value: 10. If the Targets.Weight parameter is set, this parameter will not take effect.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

func (r *ModifyTargetWeightRequest) 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 *ModifyTargetWeightRequest) 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, "ListenerId")
	delete(f, "Targets")
	delete(f, "LocationId")
	delete(f, "Domain")
	delete(f, "Url")
	delete(f, "Weight")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyTargetWeightRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyTargetWeightResponseParams 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 ModifyTargetWeightResponse struct {
	*tchttp.BaseResponse
	Response *ModifyTargetWeightResponseParams `json:"Response"`
}

func (r *ModifyTargetWeightResponse) 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 *ModifyTargetWeightResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type MultiCertInfo struct {
	// Authentication type. Values: `UNIDIRECTIONAL` (one-way authentication), `MUTUAL` (two-way authentication)
	SSLMode *string `json:"SSLMode,omitnil,omitempty" name:"SSLMode"`

	// List of listener or rule certificates. One-way and two-way authentication are supported. Only one certificate can be specified for one algorithm. If `SSLMode` is `MUTUAL` (two-way authentication), at least one CA certificate is required. 
	CertList []*CertInfo `json:"CertList,omitnil,omitempty" name:"CertList"`

	// Whether to enable client authentication for mutual authentication. ON: enable it; OPTIONAL: client certificate not required. Default value: ON.
	SSLVerifyClient *string `json:"SSLVerifyClient,omitnil,omitempty" name:"SSLVerifyClient"`
}

type OAuth struct {
	// Specifies whether to turn on or off authentication.
	// True: enable.
	// False: disabled.
	// Disabled by default.
	OAuthEnable *bool `json:"OAuthEnable,omitnil,omitempty" name:"OAuthEnable"`

	// Deny requests or allow when all iaps fail.
	// BYPASS: specifies the bypass.
	// REJECT.
	// Defaults to BYPASS.
	OAuthFailureStatus *string `json:"OAuthFailureStatus,omitnil,omitempty" name:"OAuthFailureStatus"`
}

type Price struct {
	// Describes the instance pricing.
	InstancePrice *ItemPrice `json:"InstancePrice,omitnil,omitempty" name:"InstancePrice"`

	// Network price.
	// Note: This field may return·null, indicating that no valid values can be obtained.
	BandwidthPrice *ItemPrice `json:"BandwidthPrice,omitnil,omitempty" name:"BandwidthPrice"`

	// LCU price.
	// Note: This field may return·null, indicating that no valid values can be obtained.
	LcuPrice *ItemPrice `json:"LcuPrice,omitnil,omitempty" name:"LcuPrice"`
}

type Quota struct {
	// Quota name. value range:.
	// <Li>TOTAL_OPEN_CLB_QUOTA: specifies the public network clb quota in the current region for the user.</li>.
	// <Li>TOTAL_INTERNAL_CLB_QUOTA: specifies the private network clb quota in the current region for the user.</li>.
	// <li>TOTAL_LISTENER_QUOTA: specifies the LISTENER QUOTA under a CLB.</li>.
	// <Li>TOTAL_LISTENER_RULE_QUOTA: specifies the forwarding rule quota under a listener.</li>.
	// <Li>TOTAL_TARGET_BIND_QUOTA: specifies the quota of devices that can be bound to a forwarding rule.</li>.
	// <li> TOTAL_SNAT_IP_QUOTA: specifies the SNAT IP QUOTA for a cross-regional 2.0 CLB instance. </li>.
	// <Li>TOTAL_ISP_CLB_QUOTA: specifies the quota of triple-isp (cmcc/cucc/ctcc) clb instances in the current region for the user.</li>.
	// <li>TOTAL_FULL_PORT_RANGE_LISTENER_QUOTA: specifies the QUOTA of single-protocol FULL PORT RANGE listeners for a CLB instance.</li>.
	QuotaId *string `json:"QuotaId,omitnil,omitempty" name:"QuotaId"`

	// Currently used quantity. If it is `null`, it is meaningless.
	// Note: this field may return null, indicating that no valid values can be obtained.
	QuotaCurrent *int64 `json:"QuotaCurrent,omitnil,omitempty" name:"QuotaCurrent"`

	// Quota limit.
	QuotaLimit *int64 `json:"QuotaLimit,omitnil,omitempty" name:"QuotaLimit"`
}

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

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

	// SCF functions to be bound.
	FunctionTargets []*FunctionTarget `json:"FunctionTargets,omitnil,omitempty" name:"FunctionTargets"`

	// ID of the target forwarding rule. To bind an SCF function to a L7 forwarding rule, this parameter or `Domain+Url` is required.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Domain name of the target forwarding rule. It is ignored if `LocationId` is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// URL of the target forwarding rule. It is ignored if `LocationId` is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

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

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

	// SCF functions to be bound.
	FunctionTargets []*FunctionTarget `json:"FunctionTargets,omitnil,omitempty" name:"FunctionTargets"`

	// ID of the target forwarding rule. To bind an SCF function to a L7 forwarding rule, this parameter or `Domain+Url` is required.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Domain name of the target forwarding rule. It is ignored if `LocationId` is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// URL of the target forwarding rule. It is ignored if `LocationId` is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

func (r *RegisterFunctionTargetsRequest) 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 *RegisterFunctionTargetsRequest) 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, "ListenerId")
	delete(f, "FunctionTargets")
	delete(f, "LocationId")
	delete(f, "Domain")
	delete(f, "Url")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "RegisterFunctionTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RegisterFunctionTargetsResponseParams 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 RegisterFunctionTargetsResponse struct {
	*tchttp.BaseResponse
	Response *RegisterFunctionTargetsResponseParams `json:"Response"`
}

func (r *RegisterFunctionTargetsResponse) 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 *RegisterFunctionTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RegisterTargetGroupInstancesRequestParams struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Server instance array. the VPC of the server and target group must be the same.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

type RegisterTargetGroupInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Server instance array. the VPC of the server and target group must be the same.
	TargetGroupInstances []*TargetGroupInstance `json:"TargetGroupInstances,omitnil,omitempty" name:"TargetGroupInstances"`
}

func (r *RegisterTargetGroupInstancesRequest) 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 *RegisterTargetGroupInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "TargetGroupId")
	delete(f, "TargetGroupInstances")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "RegisterTargetGroupInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RegisterTargetGroupInstancesResponseParams 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 RegisterTargetGroupInstancesResponse struct {
	*tchttp.BaseResponse
	Response *RegisterTargetGroupInstancesResponseParams `json:"Response"`
}

func (r *RegisterTargetGroupInstancesResponse) 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 *RegisterTargetGroupInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers to be bound. Array length limit: 20.
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Specifies the forwarding rule ID, which can be obtained through the DescribeListeners API (https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1). you must provide this parameter or either Domain or Url when binding a backend service to a layer-7 forwarding rule.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target forwarding rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target forwarding rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

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

	// CLB listener ID
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// List of real servers to be bound. Array length limit: 20.
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Specifies the forwarding rule ID, which can be obtained through the DescribeListeners API (https://www.tencentcloud.com/document/product/214/30686?from_cn_redirect=1). you must provide this parameter or either Domain or Url when binding a backend service to a layer-7 forwarding rule.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Target forwarding rule domain name. This parameter does not take effect if LocationId is specified.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target forwarding rule URL. This parameter does not take effect if LocationId is specified.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

func (r *RegisterTargetsRequest) 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 *RegisterTargetsRequest) 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, "ListenerId")
	delete(f, "Targets")
	delete(f, "LocationId")
	delete(f, "Domain")
	delete(f, "Url")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "RegisterTargetsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RegisterTargetsResponseParams 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 RegisterTargetsResponse struct {
	*tchttp.BaseResponse
	Response *RegisterTargetsResponseParams `json:"Response"`
}

func (r *RegisterTargetsResponse) 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 *RegisterTargetsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

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

	// Real server information
	Targets []*ClassicalTargetInfo `json:"Targets,omitnil,omitempty" name:"Targets"`
}

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

	// Real server information
	Targets []*ClassicalTargetInfo `json:"Targets,omitnil,omitempty" name:"Targets"`
}

func (r *RegisterTargetsWithClassicalLBRequest) 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 *RegisterTargetsWithClassicalLBRequest) 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, "Targets")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "RegisterTargetsWithClassicalLBRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RegisterTargetsWithClassicalLBResponseParams 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 RegisterTargetsWithClassicalLBResponse struct {
	*tchttp.BaseResponse
	Response *RegisterTargetsWithClassicalLBResponseParams `json:"Response"`
}

func (r *RegisterTargetsWithClassicalLBResponse) 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 *RegisterTargetsWithClassicalLBResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ReplaceCertForLoadBalancersRequestParams struct {
	// ID of the certificate to be replaced, which can be a server certificate or a client certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Information such as the content of the new certificate
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`
}

type ReplaceCertForLoadBalancersRequest struct {
	*tchttp.BaseRequest
	
	// ID of the certificate to be replaced, which can be a server certificate or a client certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Information such as the content of the new certificate
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`
}

func (r *ReplaceCertForLoadBalancersRequest) 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 *ReplaceCertForLoadBalancersRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "OldCertificateId")
	delete(f, "Certificate")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ReplaceCertForLoadBalancersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ReplaceCertForLoadBalancersResponseParams 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 ReplaceCertForLoadBalancersResponse struct {
	*tchttp.BaseResponse
	Response *ReplaceCertForLoadBalancersResponseParams `json:"Response"`
}

func (r *ReplaceCertForLoadBalancersResponse) 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 *ReplaceCertForLoadBalancersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type Resource struct {
	// Specific ISP resource information, Vaules: `CMCC`, `CUCC`, `CTCC`, `BGP`, and `INTERNAL`.
	Type []*string `json:"Type,omitnil,omitempty" name:"Type"`

	// ISP information, such as `CMCC`, `CUCC`, `CTCC`, `BGP`, and `INTERNAL`.
	Isp *string `json:"Isp,omitnil,omitempty" name:"Isp"`

	// Available resources.
	AvailabilitySet []*ResourceAvailability `json:"AvailabilitySet,omitnil,omitempty" name:"AvailabilitySet"`

	// Operator type info.
	TypeSet []*TypeInfo `json:"TypeSet,omitnil,omitempty" name:"TypeSet"`
}

type ResourceAvailability struct {
	// Specific ISP resource information. Values: `CMCC`, `CUCC`, `CTCC`, `BGP`.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Whether the resource is available. Values: `Available`, `Unavailable`
	Availability *string `json:"Availability,omitnil,omitempty" name:"Availability"`
}

type RewriteLocationMap struct {
	// Source forwarding rule ID
	SourceLocationId *string `json:"SourceLocationId,omitnil,omitempty" name:"SourceLocationId"`

	// ID of the forwarding rule of the destination
	TargetLocationId *string `json:"TargetLocationId,omitnil,omitempty" name:"TargetLocationId"`

	// Redirection status code. Valid values: 301, 302, and 307.
	RewriteCode *int64 `json:"RewriteCode,omitnil,omitempty" name:"RewriteCode"`

	// Whether the matched URL is carried in redirection. It is required when configuring `RewriteCode`.
	TakeUrl *bool `json:"TakeUrl,omitnil,omitempty" name:"TakeUrl"`

	// Original domain name of redirection, which must be the corresponding domain name of `SourceLocationId`. It is required when configuring `RewriteCode`.
	SourceDomain *string `json:"SourceDomain,omitnil,omitempty" name:"SourceDomain"`
}

type RewriteTarget struct {
	// Listener ID of the redirection target. this field is valid only when redirection is configured.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetListenerId *string `json:"TargetListenerId,omitnil,omitempty" name:"TargetListenerId"`

	// Specifies the forwarding rule ID of redirection target. field is valid only when redirection is configured.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetLocationId *string `json:"TargetLocationId,omitnil,omitempty" name:"TargetLocationId"`

	// Specifies the redirection status code.
	RewriteCode *int64 `json:"RewriteCode,omitnil,omitempty" name:"RewriteCode"`

	// Whether the matched URL is carried in redirection
	TakeUrl *bool `json:"TakeUrl,omitnil,omitempty" name:"TakeUrl"`

	// Redirection type. Manual: Manual redirection; Auto: Automatic redirection
	RewriteType *string `json:"RewriteType,omitnil,omitempty" name:"RewriteType"`
}

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

	// List of real servers with tags 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"`

	// Modified Tag of the backend service. this parameter has a lower priority than the Tag parameter in the aforementioned [Target](https://www.tencentcloud.com/document/api/214/30694?from_cn_redirect=1#Target). the final Tag value is based on the Tag parameter in the Target. the Tag parameter in RsTagRule will be used only when the Tag parameter in the Target is empty.
	Tag *string `json:"Tag,omitnil,omitempty" name:"Tag"`
}

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

	// List of real servers whose weights to modify.
	Targets []*Target `json:"Targets,omitnil,omitempty" name:"Targets"`

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

	// Target rule domain name. This parameter does not take effect if LocationId is specified
	//
	// Deprecated: Domain is deprecated.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Target rule URL. This parameter does not take effect if LocationId is specified
	//
	// Deprecated: Url is deprecated.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// The new forwarding weight of the real server. Value range: [0, 100]. This parameter takes lower precedence than `Weight` in [`Targets`](https://intl.cloud.tencent.com/document/api/214/30694?from_cn_redirect=1#Target), which means that this parameter only takes effect when the `Weight` in `RsWeightRule` is left empty.
	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"`

	// Forwarding rule Url
	// 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"`

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

type RuleInput struct {
	// Forwarding rule path. Length: 1-200.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// The domain name associated with the forwarding rule. It can contain 1-80 characters. Only one domain name can be entered. If you need to enter multiple domain names, use `Domains`.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Session persistence duration, in seconds. 0 indicates that session persistence is disabled, and a value ranging from 30 to 86400 indicates that session persistence is enabled.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Health check information. For more information, please see [Health Check](https://intl.cloud.tencent.com/document/product/214/6097?from_cn_redirect=1)
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Certificate information. `Certificate` and `MultiCertInfo` cannot be specified at the same time. 
	Certificate *CertificateInput `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Request forwarding method of the rule. Value range: WRR, LEAST_CONN, IP_HASH
	// They represent weighted round robin, least connections, and IP hash, respectively. Default value: WRR.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// Specifies the forwarding protocol between cloud load balancer and backend service. currently supports HTTP/HTTPS/GRPC/GRPCS/TRPC. TRPC is not yet available. default HTTP.
	ForwardType *string `json:"ForwardType,omitnil,omitempty" name:"ForwardType"`

	// Whether to set this domain name as the default domain name. Note: Only one default domain name can be set under one listener.
	DefaultServer *bool `json:"DefaultServer,omitnil,omitempty" name:"DefaultServer"`

	// Whether to enable HTTP/2. Note: HTTP/2 can be enabled only for HTTPS domain names.
	Http2 *bool `json:"Http2,omitnil,omitempty" name:"Http2"`

	// Target real server type. NODE: binding a general node; TARGETGROUP: binding a target group.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// TRPC callee server route, which is required when `ForwardType` is "TRPC". This is now only for internal usage.
	TrpcCallee *string `json:"TrpcCallee,omitnil,omitempty" name:"TrpcCallee"`

	// TRPC calling service API, which is required when `ForwardType` is "TRPC". This is now only for internal usage.
	TrpcFunc *string `json:"TrpcFunc,omitnil,omitempty" name:"TrpcFunc"`

	// Whether to enable QUIC. Note: QUIC can be enabled only for HTTPS domain names
	Quic *bool `json:"Quic,omitnil,omitempty" name:"Quic"`

	// The domain name associated with the forwarding rule. Each contain 1-80 characters. If you only need to enter one domain name, use `Domain` instead.
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Certificate information. You can specify multiple server-side certificates with different algorithm types. `Certificate` and `MultiCertInfo` cannot be specified at the same time. 
	MultiCertInfo *MultiCertInfo `json:"MultiCertInfo,omitnil,omitempty" name:"MultiCertInfo"`

	// Specifies the custom cookie name.
	CookieName *string `json:"CookieName,omitnil,omitempty" name:"CookieName"`
}

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

	// Domain name of the forwarding rule
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Path of forwarding rules.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Session persistence time
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// Health Check Information
	HealthCheck *HealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

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

	// Request forwarding method in the rules.WRR, LEAST_CONN, and IP_HASH respectively indicate weighted round robin, least connections, and IP hash.
	Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"`

	// ID of the listener to which the forwarding rule belongs
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Redirection target information of the forwarding rule
	RewriteTarget *RewriteTarget `json:"RewriteTarget,omitnil,omitempty" name:"RewriteTarget"`

	// Whether to enable gzip
	HttpGzip *bool `json:"HttpGzip,omitnil,omitempty" name:"HttpGzip"`

	// Whether the forwarding rule is automatically created
	BeAutoCreated *bool `json:"BeAutoCreated,omitnil,omitempty" name:"BeAutoCreated"`

	// Whether to use as the default domain name
	DefaultServer *bool `json:"DefaultServer,omitnil,omitempty" name:"DefaultServer"`

	// Whether to enable Http2
	Http2 *bool `json:"Http2,omitnil,omitempty" name:"Http2"`

	// Forwarding protocol between CLB and real server
	ForwardType *string `json:"ForwardType,omitnil,omitempty" name:"ForwardType"`

	// Forwarding rule creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Real server type. NODE indicates binding to a general node, and TARGETGROUP indicates binding to a target group.
	TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"`

	// Basic information of a bound target group. This field will be returned if a target group is bound to a rule.
	// Note: This field may return null, indicating that no valid values can be obtained.
	TargetGroup *BasicTargetGroupInfo `json:"TargetGroup,omitnil,omitempty" name:"TargetGroup"`

	// WAF instance ID.
	WafDomainId *string `json:"WafDomainId,omitnil,omitempty" name:"WafDomainId"`

	// Called server routing. valid when ForwardType is TRPC. currently not yet available.
	TrpcCallee *string `json:"TrpcCallee,omitnil,omitempty" name:"TrpcCallee"`

	// TRPC calling service api. valid when ForwardType is TRPC. currently not yet available.
	TrpcFunc *string `json:"TrpcFunc,omitnil,omitempty" name:"TrpcFunc"`

	// QUIC status. QUIC_ACTIVE means enabled, QUIC_INACTIVE means not enabled. note that only HTTPS domain names can enable QUIC.
	QuicStatus *string `json:"QuicStatus,omitnil,omitempty" name:"QuicStatus"`

	// Specifies the domain name list of the forwarding rule.
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// List of bound target groups
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	TargetGroupList []*BasicTargetGroupInfo `json:"TargetGroupList,omitnil,omitempty" name:"TargetGroupList"`

	// OAuth configuration status.
	OAuth *OAuth `json:"OAuth,omitnil,omitempty" name:"OAuth"`

	// Specifies the custom cookie name.
	CookieName *string `json:"CookieName,omitnil,omitempty" name:"CookieName"`
}

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

	// Domain name of the forwarding rule
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Forwarding rule path.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Real server information
	Targets []*Backend `json:"Targets,omitnil,omitempty" name:"Targets"`

	// Describes the backend cloud function info.
	FunctionTargets []*FunctionTarget `json:"FunctionTargets,omitnil,omitempty" name:"FunctionTargets"`
}

type RulesItems struct {
	// Rule ID.
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

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

	// Uri
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Object bound to the real server.
	Targets []*LbRsTargets `json:"Targets,omitnil,omitempty" name:"Targets"`
}

// Predefined struct for user
type SetCustomizedConfigForLoadBalancerRequestParams struct {
	// Operation type.
	// -ADD. specifies the creation.
	// - DELETE: DELETE.
	// -UPDATE: modify.
	// -BIND: specifies the binding status.
	// -UNBIND: unbind.
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// Personalized configuration ID. this field is required except when creating a custom configuration, for example: pz-1234abcd.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// Specifies the personalized configuration content. this field is required when creating or modifying custom configuration.
	// Specifies specific restrictions. view layer-7 personalized configuration (https://www.tencentcloud.com/document/product/214/15171?from_cn_redirect=1).
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`

	// Custom configuration name. specifies the name when creating or modifying a custom configuration. this field is required.
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// CLB instance ID. this field is required for bind/unbind operations.
	// Can be queried through the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) api.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`
}

type SetCustomizedConfigForLoadBalancerRequest struct {
	*tchttp.BaseRequest
	
	// Operation type.
	// -ADD. specifies the creation.
	// - DELETE: DELETE.
	// -UPDATE: modify.
	// -BIND: specifies the binding status.
	// -UNBIND: unbind.
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// Personalized configuration ID. this field is required except when creating a custom configuration, for example: pz-1234abcd.
	UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"`

	// Specifies the personalized configuration content. this field is required when creating or modifying custom configuration.
	// Specifies specific restrictions. view layer-7 personalized configuration (https://www.tencentcloud.com/document/product/214/15171?from_cn_redirect=1).
	ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"`

	// Custom configuration name. specifies the name when creating or modifying a custom configuration. this field is required.
	ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"`

	// CLB instance ID. this field is required for bind/unbind operations.
	// Can be queried through the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) api.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`
}

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, "UconfigId")
	delete(f, "ConfigContent")
	delete(f, "ConfigName")
	delete(f, "LoadBalancerIds")
	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 {
	// 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)
}

// Predefined struct for user
type SetLoadBalancerClsLogRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Log set ID of cloud log service (CLS).
	// <li>Specifies the logset ID that can be obtained by calling the [DescribeLogsets](https://www.tencentcloud.com/document/product/614/42778?from_cn_redirect=1) API when adding or updating a log topic.</li>.
	// <Li>When deleting a log topic, set this parameter to an empty string.</li>.
	LogSetId *string `json:"LogSetId,omitnil,omitempty" name:"LogSetId"`

	// Specifies the log topic ID of cloud log service (CLS).
	// <li>Specifies the log topic ID can be obtained by calling the [DescribeTopics](https://www.tencentcloud.com/document/product/614/56454?from_cn_redirect=1) API when adding or updating a log topic.</li>.
	// <Li>When deleting a log topic, set this parameter to an empty string.</li>.
	LogTopicId *string `json:"LogTopicId,omitnil,omitempty" name:"LogTopicId"`

	// Log type:
	// <li>`ACCESS`: access logs</li>
	// <li>`HEALTH`: health check logs</li>
	// Default: `ACCESS`
	LogType *string `json:"LogType,omitnil,omitempty" name:"LogType"`
}

type SetLoadBalancerClsLogRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Log set ID of cloud log service (CLS).
	// <li>Specifies the logset ID that can be obtained by calling the [DescribeLogsets](https://www.tencentcloud.com/document/product/614/42778?from_cn_redirect=1) API when adding or updating a log topic.</li>.
	// <Li>When deleting a log topic, set this parameter to an empty string.</li>.
	LogSetId *string `json:"LogSetId,omitnil,omitempty" name:"LogSetId"`

	// Specifies the log topic ID of cloud log service (CLS).
	// <li>Specifies the log topic ID can be obtained by calling the [DescribeTopics](https://www.tencentcloud.com/document/product/614/56454?from_cn_redirect=1) API when adding or updating a log topic.</li>.
	// <Li>When deleting a log topic, set this parameter to an empty string.</li>.
	LogTopicId *string `json:"LogTopicId,omitnil,omitempty" name:"LogTopicId"`

	// Log type:
	// <li>`ACCESS`: access logs</li>
	// <li>`HEALTH`: health check logs</li>
	// Default: `ACCESS`
	LogType *string `json:"LogType,omitnil,omitempty" name:"LogType"`
}

func (r *SetLoadBalancerClsLogRequest) 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 *SetLoadBalancerClsLogRequest) 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, "LogSetId")
	delete(f, "LogTopicId")
	delete(f, "LogType")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SetLoadBalancerClsLogRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetLoadBalancerClsLogResponseParams 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 SetLoadBalancerClsLogResponse struct {
	*tchttp.BaseResponse
	Response *SetLoadBalancerClsLogResponseParams `json:"Response"`
}

func (r *SetLoadBalancerClsLogResponse) 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 *SetLoadBalancerClsLogResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetLoadBalancerSecurityGroupsRequestParams struct {
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies an array of security group ids. a load balancing instance supports a maximum binding of 50 security groups. to unbind all security groups, omit this parameter.
	// Can be queried through the [DescribeSecurityGroups](https://www.tencentcloud.com/document/product/215/15808?from_cn_redirect=1) api.
	SecurityGroups []*string `json:"SecurityGroups,omitnil,omitempty" name:"SecurityGroups"`
}

type SetLoadBalancerSecurityGroupsRequest struct {
	*tchttp.BaseRequest
	
	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specifies an array of security group ids. a load balancing instance supports a maximum binding of 50 security groups. to unbind all security groups, omit this parameter.
	// Can be queried through the [DescribeSecurityGroups](https://www.tencentcloud.com/document/product/215/15808?from_cn_redirect=1) api.
	SecurityGroups []*string `json:"SecurityGroups,omitnil,omitempty" name:"SecurityGroups"`
}

func (r *SetLoadBalancerSecurityGroupsRequest) 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 *SetLoadBalancerSecurityGroupsRequest) 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, "SecurityGroups")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SetLoadBalancerSecurityGroupsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetLoadBalancerSecurityGroupsResponseParams 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 SetLoadBalancerSecurityGroupsResponse struct {
	*tchttp.BaseResponse
	Response *SetLoadBalancerSecurityGroupsResponseParams `json:"Response"`
}

func (r *SetLoadBalancerSecurityGroupsResponse) 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 *SetLoadBalancerSecurityGroupsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetLoadBalancerStartStatusRequestParams struct {
	// Operation type. Start: Start the instance; Stop: Stop the instance.
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Listener ID. If this field is empty, it indicates operating the CLB instance; if not empty, it indicates operating the listener.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`
}

type SetLoadBalancerStartStatusRequest struct {
	*tchttp.BaseRequest
	
	// Operation type. Start: Start the instance; Stop: Stop the instance.
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// ID of the cloud load balancer instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Listener ID. If this field is empty, it indicates operating the CLB instance; if not empty, it indicates operating the listener.
	ListenerIds []*string `json:"ListenerIds,omitnil,omitempty" name:"ListenerIds"`
}

func (r *SetLoadBalancerStartStatusRequest) 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 *SetLoadBalancerStartStatusRequest) 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, "LoadBalancerId")
	delete(f, "ListenerIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SetLoadBalancerStartStatusRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetLoadBalancerStartStatusResponseParams 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 SetLoadBalancerStartStatusResponse struct {
	*tchttp.BaseResponse
	Response *SetLoadBalancerStartStatusResponseParams `json:"Response"`
}

func (r *SetLoadBalancerStartStatusResponse) 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 *SetLoadBalancerStartStatusResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetSecurityGroupForLoadbalancersRequestParams struct {
	// Security group ID, such as sg-12345678. can be obtained through the API [DescribeSecurityGroups](https://www.tencentcloud.com/document/product/215/15808?from_cn_redirect=1).
	SecurityGroup *string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// ADD: bind a security group;
	// DEL: unbind a security group
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// ID array of the clb instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	// Specifies the maximum length supported by the list is 20.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`
}

type SetSecurityGroupForLoadbalancersRequest struct {
	*tchttp.BaseRequest
	
	// Security group ID, such as sg-12345678. can be obtained through the API [DescribeSecurityGroups](https://www.tencentcloud.com/document/product/215/15808?from_cn_redirect=1).
	SecurityGroup *string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// ADD: bind a security group;
	// DEL: unbind a security group
	OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"`

	// ID array of the clb instance. you can call the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) API to query the ID.
	// Specifies the maximum length supported by the list is 20.
	LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"`
}

func (r *SetSecurityGroupForLoadbalancersRequest) 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 *SetSecurityGroupForLoadbalancersRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "SecurityGroup")
	delete(f, "OperationType")
	delete(f, "LoadBalancerIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SetSecurityGroupForLoadbalancersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetSecurityGroupForLoadbalancersResponseParams 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 SetSecurityGroupForLoadbalancersResponse struct {
	*tchttp.BaseResponse
	Response *SetSecurityGroupForLoadbalancersResponseParams `json:"Response"`
}

func (r *SetSecurityGroupForLoadbalancersResponse) 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 *SetSecurityGroupForLoadbalancersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type SlaUpdateParam struct {
	// CLB instance ID.
	// Can be queried through the [DescribeLoadBalancers](https://www.tencentcloud.com/document/product/1108/48459?from_cn_redirect=1) api.
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// Specification of the LCU-supported instance. Valid values:<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> For specification details, see [Instance Specifications Comparison](https://intl.cloud.tencent.com/document/product/214/84689?from_cn_redirect=1).
	SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"`
}

type SnatIp struct {
	// Unique VPC subnet ID, 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 SpecAvailability struct {
	// Specifies the specification type.
	// <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> <li>shared (shared type)</li>.
	SpecType *string `json:"SpecType,omitnil,omitempty" name:"SpecType"`

	// Specification availability. resource availability, "Available": Available, "Unavailable": Unavailable.
	Availability *string `json:"Availability,omitnil,omitempty" name:"Availability"`
}

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 {
	// Specifies the 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"`

	// Specifies the backend service type. valid values: CVM (cloud virtual machine), ENI (elastic network interface). as an input parameter, this parameter does not take effect currently.
	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. indicates binding the primary IPv4 address of the primary network interface. the InstanceId cannot be specified in the following scenarios: binding to non-CVM resources, binding to auxiliary network interface ips on CVM, binding to CVM through cross-domain 2.0, and binding to IPv6 addresses of CVM.
	// Note: you can only input one of the InstanceId parameter or the EniIp parameter.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// The new forwarding weight of the real server. Value range: [0, 100]. Default: 10. This parameter takes priority over `Weight` in [`RsWeightRule`](https://intl.cloud.tencent.com/document/api/214/30694?from_cn_redirect=1#RsWeightRule). If it’s left empty, the value of `Weight` 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 be bound to a CVM before binding to a cloud load balancer instance.
	// Note: only one of the InstanceId parameter and EniIp parameter can be passed. if binding a dual-stack IPV6 instance, this parameter must be passed. if it is a cross-region binding, the parameter must be passed and the InstanceId parameter is not supported.
	EniIp *string `json:"EniIp,omitnil,omitempty" name:"EniIp"`

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

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

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

	// Listener ID. This parameter is required when the AssociateTargetGroups and DisassociateTargetGroups APIs are called.
	ListenerId *string `json:"ListenerId,omitnil,omitempty" name:"ListenerId"`

	// Forwarding rule ID
	LocationId *string `json:"LocationId,omitnil,omitempty" name:"LocationId"`

	// Weight of the target group. Value range: [0, 100]. It takes effect only for binding v2 target groups. If not specified, it defaults to 10.
	Weight *int64 `json:"Weight,omitnil,omitempty" name:"Weight"`
}

type TargetGroupBackend struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// Real server type. Valid values: CVM, ENI (coming soon)
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Unique real server ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the listening port of the backend service. for a port range listener, this field returns 0, representing an invalid port, indicating settings not supported.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Forwarding weight of real server. Value range: [0, 100]. Default value: 10.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Public network IP of the real server
	PublicIpAddresses []*string `json:"PublicIpAddresses,omitnil,omitempty" name:"PublicIpAddresses"`

	// Private network IP of the real server
	PrivateIpAddresses []*string `json:"PrivateIpAddresses,omitnil,omitempty" name:"PrivateIpAddresses"`

	// Instance name of the real server
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Real server binding time
	// Note: this field may return null, indicating that no valid values can be obtained.
	RegisteredTime *string `json:"RegisteredTime,omitnil,omitempty" name:"RegisteredTime"`

	// Unique ID of the ENI
	EniId *string `json:"EniId,omitnil,omitempty" name:"EniId"`

	// Specifies the availability zone ID of the backend service.
	ZoneId *uint64 `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`
}

type TargetGroupHealthCheck struct {
	// Whether to enable the health check.
	HealthSwitch *bool `json:"HealthSwitch,omitnil,omitempty" name:"HealthSwitch"`

	// Health check method. among them, only the new version V2 target group type supports this parameter. valid values: TCP | HTTP | HTTPS | PING | CUSTOM. among them:.
	// <ur><li>When the backend forwarding protocol of the target group is TCP, the health check method supports TCP/HTTP/CUSTOM, with a default value of TCP.</li><li>when the backend forwarding protocol of the target group is UDP, the health check method supports PING/CUSTOM, with a default value of PING.</li><li>when the backend forwarding protocol of the target group is HTTP, the health check method supports HTTP/TCP, with a default value of HTTP.</li><li>when the backend forwarding protocol of the target group is HTTPS, the health check method supports HTTPS/TCP, with a default value of HTTPS.</li><li>when the backend forwarding protocol of the target group is GRPC, the health check method supports GRPC/TCP, with a default value of GRPC.</li></ur>.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Custom check parameters. health check port, defaults to the port of the backend service unless you want to specify a specific port, otherwise leave it blank. (applicable only to TCP/UDP target group).
	Port *int64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Health check timeout. The default is 2 seconds. Value range: 2-30 seconds.
	Timeout *int64 `json:"Timeout,omitnil,omitempty" name:"Timeout"`

	// Detection interval time. The default is 5 seconds. Value range: 2-300 seconds.
	GapTime *int64 `json:"GapTime,omitnil,omitempty" name:"GapTime"`

	// Health detection threshold. The default is 3 times. Value range: 2-10 times.
	GoodLimit *int64 `json:"GoodLimit,omitnil,omitempty" name:"GoodLimit"`

	// Unhealth detection threshold. The default is 3 times. Value range: 2-10 times.
	BadLimit *int64 `json:"BadLimit,omitnil,omitempty" name:"BadLimit"`

	// Indicates whether jumbo frames are enabled for probe packets of all rss in the target group. enabled by default. this parameter is supported only for GWLB type target groups.
	JumboFrame *bool `json:"JumboFrame,omitnil,omitempty" name:"JumboFrame"`

	// Health check status code (applicable only to HTTP/HTTPS target group and HTTP health check method of TCP target group). value range: 1~31. default: 31. among them: <url> <li>1 means post-detection return value 1xx represents health.</li> <li>2 means return 2xx represents health.</li> <li>4 means return 3xx represents health.</li> <li>8 means return 4xx represents health.</li> <li>16 means return 5xx represents health.</li></url> to have multiple return codes represent health, sum up corresponding values.
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCode *int64 `json:"HttpCode,omitnil,omitempty" name:"HttpCode"`

	// Health check domain name. among them: <ur><li>applicable only to HTTP/HTTPS target groups and TCP target groups when using HTTP health check method.</li><li>targeting HTTP/HTTPS target groups, this parameter is required when using HTTP health check method.</li></ur>.
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCheckDomain *string `json:"HttpCheckDomain,omitnil,omitempty" name:"HttpCheckDomain"`

	// Health check path (applicable only to HTTP/HTTPS forwarding rules and HTTP health checks of TCP listeners).
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCheckPath *string `json:"HttpCheckPath,omitnil,omitempty" name:"HttpCheckPath"`

	// Health check method (applicable only to HTTP/HTTPS forwarding rules and HTTP health checks of TCP listeners). Default: HEAD. Valid values: HEAD and GET.
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpCheckMethod *string `json:"HttpCheckMethod,omitnil,omitempty" name:"HttpCheckMethod"`

	// Input format of health check. required when health check method is CUSTOM. valid values: HEX or TEXT. among them:<ur><li>TEXT: TEXT format.</li><li>HEX: hexadecimal format. characters of SendContext and RecvContext can only be selected from 0123456789ABCDEF and the length must be an even number.</li><li>applicable only to TCP/UDP target group.</li></ur>.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ContextType *string `json:"ContextType,omitnil,omitempty" name:"ContextType"`

	// CUSTOM check parameters. required when the CheckType value is CUSTOM, represents the content of the request sent by the health check, only ASCII visible characters, maximum length limit 500. applicable only to TCP/UDP target group.
	// Note: This field may return null, indicating that no valid values can be obtained.
	SendContext *string `json:"SendContext,omitnil,omitempty" name:"SendContext"`

	// CUSTOM check parameters. required when the CheckType value is CUSTOM. represents the result returned by the health check. only ASCII visible characters are allowed. maximum length limit is 500. (applicable only to TCP/UDP target group).
	// Note: This field may return null, indicating that no valid values can be obtained.
	RecvContext *string `json:"RecvContext,omitnil,omitempty" name:"RecvContext"`

	// HTTP version, where: <ur><li>this field is required if the value of CheckType is HTTP.</li><li>supports configuration options: HTTP/1.0, HTTP/1.1.</li><li>applicable only to TCP target group.</li></ur>.
	// Note: This field may return null, indicating that no valid values can be obtained.
	HttpVersion *string `json:"HttpVersion,omitnil,omitempty" name:"HttpVersion"`

	// Health check status code when the protocol is GRPC. (this parameter applies only to target groups with the backend forwarding protocol of GRPC.) default value: 12. valid values: a single numerical value, multiple numerical values, or a range. for example, 20, 20,25, or 0-99.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExtendedCode *string `json:"ExtendedCode,omitnil,omitempty" name:"ExtendedCode"`
}

type TargetGroupInfo struct {
	// Target group ID
	TargetGroupId *string `json:"TargetGroupId,omitnil,omitempty" name:"TargetGroupId"`

	// `vpcid` of target group
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Target group name
	TargetGroupName *string `json:"TargetGroupName,omitnil,omitempty" name:"TargetGroupName"`

	// Specifies the default port of the target group. for a full listen target group, this field returns 0, indicating an invalid port.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Target group creation time
	CreatedTime *string `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Target group modification time
	UpdatedTime *string `json:"UpdatedTime,omitnil,omitempty" name:"UpdatedTime"`

	// Associated rule array. This parameter cannot be obtained when the DescribeTargetGroupList API is called.Note: This field may return null, indicating that no valid values can be obtained.
	AssociatedRule []*AssociationItem `json:"AssociatedRule,omitnil,omitempty" name:"AssociatedRule"`

	// Backend forwarding protocol of the target group. only returns valid values for the new version (v2) target group.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Scheduling algorithm. returns a valid value only when the backend forwarding protocol is HTTP, HTTPS, or GRPC. available values:.
	// <ur>
	// <Li>WRR: weighted round-robin.</li>.
	// <Li>LEAST_CONN: specifies the least connection.</li>.
	// <Li>IP_HASH: based on ip hash.</li>.
	// </ur>
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ScheduleAlgorithm *string `json:"ScheduleAlgorithm,omitnil,omitempty" name:"ScheduleAlgorithm"`

	// Health check details.
	// Note: This field may return null, indicating that no valid values can be obtained.
	HealthCheck *TargetGroupHealthCheck `json:"HealthCheck,omitnil,omitempty" name:"HealthCheck"`

	// Target group type, currently supported v1 (legacy version target group) and v2 (new version target group). defaults to v1 (legacy version target group).
	TargetGroupType *string `json:"TargetGroupType,omitnil,omitempty" name:"TargetGroupType"`

	// Number of rules associated with the target group.
	AssociatedRuleCount *int64 `json:"AssociatedRuleCount,omitnil,omitempty" name:"AssociatedRuleCount"`

	// Specifies the number of instances in the target group.
	RegisteredInstancesCount *int64 `json:"RegisteredInstancesCount,omitnil,omitempty" name:"RegisteredInstancesCount"`

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

	// Default weight. only target groups of v2 type return this field. when NULL is returned, it means the default weight is not set.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// Specifies whether to listen to all target groups.
	FullListenSwitch *bool `json:"FullListenSwitch,omitnil,omitempty" name:"FullListenSwitch"`

	// Whether to enable persistent connections. valid only when the backend forwarding protocol is HTTP/HTTPS/GRPC and returned by the target group.
	KeepaliveEnable *bool `json:"KeepaliveEnable,omitnil,omitempty" name:"KeepaliveEnable"`

	// Session persistence time. valid only when the backend forwarding protocol is HTTP/HTTPS/GRPC and the target group returns a valid value.
	SessionExpireTime *int64 `json:"SessionExpireTime,omitnil,omitempty" name:"SessionExpireTime"`

	// IP version.
	IpVersion *string `json:"IpVersion,omitnil,omitempty" name:"IpVersion"`
}

type TargetGroupInstance struct {
	// Private IP of target group instance
	BindIP *string `json:"BindIP,omitnil,omitempty" name:"BindIP"`

	// Port of target group instance. this field is not supported for full listen target groups.
	Port *uint64 `json:"Port,omitnil,omitempty" name:"Port"`

	// Weight of a target group instance
	// Specifies that the Weight must be configured for a v2 target group. when calling the CreateTargetGroup API for target group creation, this parameter is used in combination with the Weight parameter in the create api, and one of them is required.
	// Valid values: 0-100.
	Weight *uint64 `json:"Weight,omitnil,omitempty" name:"Weight"`

	// The new port of the target group instance. this field is not supported for full listen target groups.
	NewPort *uint64 `json:"NewPort,omitnil,omitempty" name:"NewPort"`
}

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

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

	// Current health status. true: healthy; false: unhealthy.
	HealthStatus *bool `json:"HealthStatus,omitnil,omitempty" name:"HealthStatus"`

	// Instance ID of the target, such as ins-12345678
	TargetId *string `json:"TargetId,omitnil,omitempty" name:"TargetId"`

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

	// (**This parameter will be disused soon. Please use `HealthStatusDetail` instead.**) Details of the current health status. Values: `Alive` (healthy), `Dead` (abnormal), `Unknown` (Health check not started/checking/unknown status)
	//
	// Deprecated: HealthStatusDetial is deprecated.
	HealthStatusDetial *string `json:"HealthStatusDetial,omitnil,omitempty" name:"HealthStatusDetial"`

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

	// Specifies the 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, which is in the format of vpc-abcd1234 for VPC or 0 for basic network
	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 TypeInfo struct {
	// Operator type.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Specification availability.
	SpecAvailabilitySet []*SpecAvailability `json:"SpecAvailabilitySet,omitnil,omitempty" name:"SpecAvailabilitySet"`
}

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"`

	// Specifies the region of the availability zone, for example: ap-guangzhou.
	ZoneRegion *string `json:"ZoneRegion,omitnil,omitempty" name:"ZoneRegion"`

	// Indicates whether the AZ is a LocalZone az, for example: false.
	LocalZone *bool `json:"LocalZone,omitnil,omitempty" name:"LocalZone"`

	// Indicates whether the AZ is an EdgeZone az, for example: false.
	EdgeZone *bool `json:"EdgeZone,omitnil,omitempty" name:"EdgeZone"`
}

type ZoneResource struct {
	// Primary AZ, such as "ap-guangzhou-1".
	MasterZone *string `json:"MasterZone,omitnil,omitempty" name:"MasterZone"`

	// Resource list.
	ResourceSet []*Resource `json:"ResourceSet,omitnil,omitempty" name:"ResourceSet"`

	// Secondary AZ, such as "ap-guangzhou-2". 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SlaveZone *string `json:"SlaveZone,omitnil,omitempty" name:"SlaveZone"`

	// IP version. Values: `IPv4`, `IPv6`, and `IPv6_Nat`.
	IPVersion *string `json:"IPVersion,omitnil,omitempty" name:"IPVersion"`

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

	// Whether the AZ is a `LocalZone`. Values: `true`, `false`.
	LocalZone *bool `json:"LocalZone,omitnil,omitempty" name:"LocalZone"`

	// Type of resources in the zone. Values: `SHARED`, `EXCLUSIVE`
	ZoneResourceType *string `json:"ZoneResourceType,omitnil,omitempty" name:"ZoneResourceType"`

	// Whether the AZ is an edge zone. Values: `true`, `false`.
	EdgeZone *bool `json:"EdgeZone,omitnil,omitempty" name:"EdgeZone"`

	// Specifies the network outbound.
	Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"`
}