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

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 AddAntiFakeUrlRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// uri
	Uri *string `json:"Uri,omitnil,omitempty" name:"Uri"`
}

type AddAntiFakeUrlRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// uri
	Uri *string `json:"Uri,omitnil,omitempty" name:"Uri"`
}

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

// Predefined struct for user
type AddAntiFakeUrlResponseParams struct {
	// Result
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Rule ID
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

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

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

// Predefined struct for user
type AddAntiInfoLeakRulesRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Actions: 0 (alarm), 1 (replace), 2 (only display the first four digits), 3 (only display the last four digits), 4 (block)
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Policy details
	Strategies []*StrategyForAntiInfoLeak `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// URL
	Uri *string `json:"Uri,omitnil,omitempty" name:"Uri"`
}

type AddAntiInfoLeakRulesRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Actions: 0 (alarm), 1 (replace), 2 (only display the first four digits), 3 (only display the last four digits), 4 (block)
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Policy details
	Strategies []*StrategyForAntiInfoLeak `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// URL
	Uri *string `json:"Uri,omitnil,omitempty" name:"Uri"`
}

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

// Predefined struct for user
type AddAntiInfoLeakRulesResponseParams struct {
	// Rule ID
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

// Predefined struct for user
type AddCustomRuleRequestParams struct {
	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Priority
	SortId *string `json:"SortId,omitnil,omitempty" name:"SortId"`

	// Policy details
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Domain name for adding policy
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Action type: 1 for Block, 2 captcha, 3 for Observe, 4 for Redirect
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// If the action is redirect, it indicates the redirect address; otherwise, it can be left blank.
	Redirect *string `json:"Redirect,omitnil,omitempty" name:"Redirect"`

	// Expiration time: in second-level timestamp, for example, 1677254399 indicates the expiration time is 2023-02-24 23:59:59; 0 indicates it will never expire.
	ExpireTime *string `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// WAF instance type: sparta-waf for SaaS WAF, clb-waf for CLB WAF.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Details of release
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Source of the rule addition, default is empty
	EventId *string `json:"EventId,omitnil,omitempty" name:"EventId"`

	// Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Rule execution time
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// Rule source. You can determine whether a rule comes from a mini program.
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Rule tag. It is used for mini program rules and identifies whether a rule is a built-in rule or a custom rule.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// Switch status. This value is passed when mini program risk control rules are used.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Interception page ID
	PageId *string `json:"PageId,omitnil,omitempty" name:"PageId"`
}

type AddCustomRuleRequest struct {
	*tchttp.BaseRequest
	
	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Priority
	SortId *string `json:"SortId,omitnil,omitempty" name:"SortId"`

	// Policy details
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Domain name for adding policy
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Action type: 1 for Block, 2 captcha, 3 for Observe, 4 for Redirect
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// If the action is redirect, it indicates the redirect address; otherwise, it can be left blank.
	Redirect *string `json:"Redirect,omitnil,omitempty" name:"Redirect"`

	// Expiration time: in second-level timestamp, for example, 1677254399 indicates the expiration time is 2023-02-24 23:59:59; 0 indicates it will never expire.
	ExpireTime *string `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// WAF instance type: sparta-waf for SaaS WAF, clb-waf for CLB WAF.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Details of release
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Source of the rule addition, default is empty
	EventId *string `json:"EventId,omitnil,omitempty" name:"EventId"`

	// Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Rule execution time
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// Rule source. You can determine whether a rule comes from a mini program.
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Rule tag. It is used for mini program rules and identifies whether a rule is a built-in rule or a custom rule.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// Switch status. This value is passed when mini program risk control rules are used.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Interception page ID
	PageId *string `json:"PageId,omitnil,omitempty" name:"PageId"`
}

func (r *AddCustomRuleRequest) 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 *AddCustomRuleRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Name")
	delete(f, "SortId")
	delete(f, "Strategies")
	delete(f, "Domain")
	delete(f, "ActionType")
	delete(f, "Redirect")
	delete(f, "ExpireTime")
	delete(f, "Edition")
	delete(f, "Bypass")
	delete(f, "EventId")
	delete(f, "JobType")
	delete(f, "JobDateTime")
	delete(f, "Source")
	delete(f, "Label")
	delete(f, "Status")
	delete(f, "PageId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddCustomRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AddCustomRuleResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

	// Successfully added rule ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

// Predefined struct for user
type AddCustomWhiteRuleRequestParams struct {
	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Priority
	SortId *string `json:"SortId,omitnil,omitempty" name:"SortId"`

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

	// Policy details
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Domain name for adding policy
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Details of release
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Scheduled task type
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

type AddCustomWhiteRuleRequest struct {
	*tchttp.BaseRequest
	
	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Priority
	SortId *string `json:"SortId,omitnil,omitempty" name:"SortId"`

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

	// Policy details
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Domain name for adding policy
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Details of release
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Scheduled task type
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

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

// Predefined struct for user
type AddCustomWhiteRuleResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

	// Successfully added rule ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

// Predefined struct for user
type AddSpartaProtectionRequestParams struct {
	// Domain requiring protection
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Certificate type
	// 0: no certificate, with only the HTTP listening port configured
	// 1: self-owned certificate
	// 2: managed certificate
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Whether a layer-7 proxy service is deployed before WAF
	// 0: No proxy service deployed
	// 1: Proxy service deployed, and WAF will use XFF to obtain the client IP address
	// 2: Proxy service deployed and WAF will use remote_addr to obtain the client IP address
	// 3: Proxy service deployed, and WAF will use a custom header in ip_headers to obtain the client IP address
	IsCdn *int64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// Upstream type
	// 0: proxy to upstream by IP address
	// 1: proxy to upstream by domain name
	UpstreamType *int64 `json:"UpstreamType,omitnil,omitempty" name:"UpstreamType"`

	// Whether to enable websocket
	// 0: disable
	// 1: enable
	IsWebsocket *int64 `json:"IsWebsocket,omitnil,omitempty" name:"IsWebsocket"`

	// Load balancing policy for upstream
	// 0: round-robin
	// 1: IP hash
	// 2: weighted round-robin
	LoadBalance *string `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"`

	// Service port list configuration
	// NginxServerId: fill in '0' in this function
	// Port: listening port number
	// Protocol: port protocol
	// UpstreamPort: same as Port
	// UpstreamProtocol: same as Protocol
	Ports []*PortItem `json:"Ports,omitnil,omitempty" name:"Ports"`

	// (Required) Whether to enable persistent connection
	// 0: non-persistent connection
	// 1: persistent connection
	IsKeepAlive *string `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"`

	// (Required) Instance ID of the domain name
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// When CertType is 1, this parameter is required, indicating the self-owned certificate chain
	Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"`

	// When CertType=1, this parameter is required, indicating the private key of the self-owned certificate.
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// When CertType is 2, this parameter must be filled, indicating the certificate ID hosted on Tencent Cloud's SSL platform
	SSLId *string `json:"SSLId,omitnil,omitempty" name:"SSLId"`

	// To be deprecated, not required. WAF resource ID.
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

	// When IsCdn is 3, this parameter is required, indicating a custom header.
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// Upstream protocol for HTTPS when the service is configured with an HTTPS port
	// http: Use the HTTP protocol for upstream. It is used together with HttpsUpstreamPort.
	// https: Use the HTTPS protocol for upstream.
	UpstreamScheme *string `json:"UpstreamScheme,omitnil,omitempty" name:"UpstreamScheme"`

	// HTTPS upstream port, required only when UpstreamScheme is http
	HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"`

	// To be deprecated, can be left blank. Whether to enable grayscale: 0 indicates not to enable grayscale.
	IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"`

	// To be deprecated, can be left blank. Grayscale area.
	GrayAreas []*string `json:"GrayAreas,omitnil,omitempty" name:"GrayAreas"`

	// (Required) Whether to enable forced redirection from HTTP to HTTPS
	// 0: do not force redirect
	// 1: enable forced redirect
	HttpsRewrite *int64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"`

	// Upstream domain when proxy to upstream by domain. When UpstreamType=1, this field needs to be filled
	UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"`

	// Upstream IP list when IP is back to source. When UpstreamType=0, this field is required
	SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"`

	// (Required) Whether to enable HTTP2. You should enable HTTPS as well.
	// 0: disable
	// 1: enable
	IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"`

	// WAF instance type. This parameter will be deprecated in later versions and is not required in the current version.
	// sparta-waf: SaaS WAF
	// clb-waf: CLB WAF
	// cdn-waf: web protection capability on CDN
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// To be deprecated, currently just fill in 0. Anycast IP type switch: 0 Ordinary IP, 1 Anycast IP
	Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"`

	// Weight of each IP in the back-to-source IP List, corresponding to SrcList. Required only when UpstreamType is 0, and SrcList contains multiple IPs, and LoadBalance is 2; otherwise, fill in [ ].
	Weights []*int64 `json:"Weights,omitnil,omitempty" name:"Weights"`

	// (Required) Whether to enable active health check
	// 0: disable
	// 1: enable
	ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"`

	// TLS version information
	TLSVersion *int64 `json:"TLSVersion,omitnil,omitempty" name:"TLSVersion"`

	// (Required) Cipher suite template
	// 0: default template
	// 1: general template
	// 2: security template
	// 3: custom template
	CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"`

	// Custom encryption suite list. When CipherTemplate is 3, this field is required, indicating the custom encryption suite, value obtained through DescribeCiphersDetail API.
	Ciphers []*int64 `json:"Ciphers,omitnil,omitempty" name:"Ciphers"`

	// Read timeout between WAF and upstream server, 300s by default.
	ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"`

	// WAF and upstream server write timeout, 300s by default.
	ProxySendTimeout *int64 `json:"ProxySendTimeout,omitnil,omitempty" name:"ProxySendTimeout"`

	// SNI type during WAF sending request to upstream
	// 0: Disable SNI and do not configure server_name in client_hello.
	// 1: Enable SNI. server_name in client_hello is a protected domain name.
	// 2: Enable SNI. SNI is the origin server domain name during the domain name origin-pull.
	// 3: Enable SNI. SNI is a custom domain name.
	SniType *int64 `json:"SniType,omitnil,omitempty" name:"SniType"`

	// When SniType=3, this parameter is required, indicating a custom SNI;
	SniHost *string `json:"SniHost,omitnil,omitempty" name:"SniHost"`

	// Whether to enable XFF reset. 0: disable; 1: enable.
	XFFReset *int64 `json:"XFFReset,omitnil,omitempty" name:"XFFReset"`

	// Domain name remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Custom upstream host. The default value is an empty string, indicating that  protected domain is used as the upstream host.
	UpstreamHost *string `json:"UpstreamHost,omitnil,omitempty" name:"UpstreamHost"`

	// Whether to enable caching. 0: disable; 1: enable.
	ProxyBuffer *int64 `json:"ProxyBuffer,omitnil,omitempty" name:"ProxyBuffer"`

	// Whether to enable the test. 0: disable; 1: enable. The test is enabled by default.
	ProbeStatus *int64 `json:"ProbeStatus,omitnil,omitempty" name:"ProbeStatus"`

	// Whether to enable SM. 0: do not enable SM; 1: add support for SM based on the existing TLS option; 2: enable SM and support only SM client access.
	GmType *int64 `json:"GmType,omitnil,omitempty" name:"GmType"`

	// SM certificate type. 0: no SM certificate is available; 1: the certificate is a self-owned SM certificate; 2: the certificate is a managed SM certificate.
	GmCertType *int64 `json:"GmCertType,omitnil,omitempty" name:"GmCertType"`

	// When GmCertType is 1, this parameter needs to be set, indicating the certificate chain of the self-owned SM certificate.
	GmCert *string `json:"GmCert,omitnil,omitempty" name:"GmCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the self-owned SM certificate.
	GmPrivateKey *string `json:"GmPrivateKey,omitnil,omitempty" name:"GmPrivateKey"`

	// When GmCertType is 1, this parameter needs to be set, indicating the encryption certificate of the self-owned SM certificate.
	GmEncCert *string `json:"GmEncCert,omitnil,omitempty" name:"GmEncCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the encryption certificate for the self-owned SM certificate.
	GmEncPrivateKey *string `json:"GmEncPrivateKey,omitnil,omitempty" name:"GmEncPrivateKey"`

	// When GmCertType is 2, this parameter needs to be set, indicating the ID of the certificate managed by the Tencent Cloud SSL platform.
	GmSSLId *string `json:"GmSSLId,omitnil,omitempty" name:"GmSSLId"`
}

type AddSpartaProtectionRequest struct {
	*tchttp.BaseRequest
	
	// Domain requiring protection
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Certificate type
	// 0: no certificate, with only the HTTP listening port configured
	// 1: self-owned certificate
	// 2: managed certificate
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Whether a layer-7 proxy service is deployed before WAF
	// 0: No proxy service deployed
	// 1: Proxy service deployed, and WAF will use XFF to obtain the client IP address
	// 2: Proxy service deployed and WAF will use remote_addr to obtain the client IP address
	// 3: Proxy service deployed, and WAF will use a custom header in ip_headers to obtain the client IP address
	IsCdn *int64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// Upstream type
	// 0: proxy to upstream by IP address
	// 1: proxy to upstream by domain name
	UpstreamType *int64 `json:"UpstreamType,omitnil,omitempty" name:"UpstreamType"`

	// Whether to enable websocket
	// 0: disable
	// 1: enable
	IsWebsocket *int64 `json:"IsWebsocket,omitnil,omitempty" name:"IsWebsocket"`

	// Load balancing policy for upstream
	// 0: round-robin
	// 1: IP hash
	// 2: weighted round-robin
	LoadBalance *string `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"`

	// Service port list configuration
	// NginxServerId: fill in '0' in this function
	// Port: listening port number
	// Protocol: port protocol
	// UpstreamPort: same as Port
	// UpstreamProtocol: same as Protocol
	Ports []*PortItem `json:"Ports,omitnil,omitempty" name:"Ports"`

	// (Required) Whether to enable persistent connection
	// 0: non-persistent connection
	// 1: persistent connection
	IsKeepAlive *string `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"`

	// (Required) Instance ID of the domain name
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// When CertType is 1, this parameter is required, indicating the self-owned certificate chain
	Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"`

	// When CertType=1, this parameter is required, indicating the private key of the self-owned certificate.
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// When CertType is 2, this parameter must be filled, indicating the certificate ID hosted on Tencent Cloud's SSL platform
	SSLId *string `json:"SSLId,omitnil,omitempty" name:"SSLId"`

	// To be deprecated, not required. WAF resource ID.
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

	// When IsCdn is 3, this parameter is required, indicating a custom header.
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// Upstream protocol for HTTPS when the service is configured with an HTTPS port
	// http: Use the HTTP protocol for upstream. It is used together with HttpsUpstreamPort.
	// https: Use the HTTPS protocol for upstream.
	UpstreamScheme *string `json:"UpstreamScheme,omitnil,omitempty" name:"UpstreamScheme"`

	// HTTPS upstream port, required only when UpstreamScheme is http
	HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"`

	// To be deprecated, can be left blank. Whether to enable grayscale: 0 indicates not to enable grayscale.
	IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"`

	// To be deprecated, can be left blank. Grayscale area.
	GrayAreas []*string `json:"GrayAreas,omitnil,omitempty" name:"GrayAreas"`

	// (Required) Whether to enable forced redirection from HTTP to HTTPS
	// 0: do not force redirect
	// 1: enable forced redirect
	HttpsRewrite *int64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"`

	// Upstream domain when proxy to upstream by domain. When UpstreamType=1, this field needs to be filled
	UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"`

	// Upstream IP list when IP is back to source. When UpstreamType=0, this field is required
	SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"`

	// (Required) Whether to enable HTTP2. You should enable HTTPS as well.
	// 0: disable
	// 1: enable
	IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"`

	// WAF instance type. This parameter will be deprecated in later versions and is not required in the current version.
	// sparta-waf: SaaS WAF
	// clb-waf: CLB WAF
	// cdn-waf: web protection capability on CDN
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// To be deprecated, currently just fill in 0. Anycast IP type switch: 0 Ordinary IP, 1 Anycast IP
	Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"`

	// Weight of each IP in the back-to-source IP List, corresponding to SrcList. Required only when UpstreamType is 0, and SrcList contains multiple IPs, and LoadBalance is 2; otherwise, fill in [ ].
	Weights []*int64 `json:"Weights,omitnil,omitempty" name:"Weights"`

	// (Required) Whether to enable active health check
	// 0: disable
	// 1: enable
	ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"`

	// TLS version information
	TLSVersion *int64 `json:"TLSVersion,omitnil,omitempty" name:"TLSVersion"`

	// (Required) Cipher suite template
	// 0: default template
	// 1: general template
	// 2: security template
	// 3: custom template
	CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"`

	// Custom encryption suite list. When CipherTemplate is 3, this field is required, indicating the custom encryption suite, value obtained through DescribeCiphersDetail API.
	Ciphers []*int64 `json:"Ciphers,omitnil,omitempty" name:"Ciphers"`

	// Read timeout between WAF and upstream server, 300s by default.
	ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"`

	// WAF and upstream server write timeout, 300s by default.
	ProxySendTimeout *int64 `json:"ProxySendTimeout,omitnil,omitempty" name:"ProxySendTimeout"`

	// SNI type during WAF sending request to upstream
	// 0: Disable SNI and do not configure server_name in client_hello.
	// 1: Enable SNI. server_name in client_hello is a protected domain name.
	// 2: Enable SNI. SNI is the origin server domain name during the domain name origin-pull.
	// 3: Enable SNI. SNI is a custom domain name.
	SniType *int64 `json:"SniType,omitnil,omitempty" name:"SniType"`

	// When SniType=3, this parameter is required, indicating a custom SNI;
	SniHost *string `json:"SniHost,omitnil,omitempty" name:"SniHost"`

	// Whether to enable XFF reset. 0: disable; 1: enable.
	XFFReset *int64 `json:"XFFReset,omitnil,omitempty" name:"XFFReset"`

	// Domain name remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Custom upstream host. The default value is an empty string, indicating that  protected domain is used as the upstream host.
	UpstreamHost *string `json:"UpstreamHost,omitnil,omitempty" name:"UpstreamHost"`

	// Whether to enable caching. 0: disable; 1: enable.
	ProxyBuffer *int64 `json:"ProxyBuffer,omitnil,omitempty" name:"ProxyBuffer"`

	// Whether to enable the test. 0: disable; 1: enable. The test is enabled by default.
	ProbeStatus *int64 `json:"ProbeStatus,omitnil,omitempty" name:"ProbeStatus"`

	// Whether to enable SM. 0: do not enable SM; 1: add support for SM based on the existing TLS option; 2: enable SM and support only SM client access.
	GmType *int64 `json:"GmType,omitnil,omitempty" name:"GmType"`

	// SM certificate type. 0: no SM certificate is available; 1: the certificate is a self-owned SM certificate; 2: the certificate is a managed SM certificate.
	GmCertType *int64 `json:"GmCertType,omitnil,omitempty" name:"GmCertType"`

	// When GmCertType is 1, this parameter needs to be set, indicating the certificate chain of the self-owned SM certificate.
	GmCert *string `json:"GmCert,omitnil,omitempty" name:"GmCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the self-owned SM certificate.
	GmPrivateKey *string `json:"GmPrivateKey,omitnil,omitempty" name:"GmPrivateKey"`

	// When GmCertType is 1, this parameter needs to be set, indicating the encryption certificate of the self-owned SM certificate.
	GmEncCert *string `json:"GmEncCert,omitnil,omitempty" name:"GmEncCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the encryption certificate for the self-owned SM certificate.
	GmEncPrivateKey *string `json:"GmEncPrivateKey,omitnil,omitempty" name:"GmEncPrivateKey"`

	// When GmCertType is 2, this parameter needs to be set, indicating the ID of the certificate managed by the Tencent Cloud SSL platform.
	GmSSLId *string `json:"GmSSLId,omitnil,omitempty" name:"GmSSLId"`
}

func (r *AddSpartaProtectionRequest) 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 *AddSpartaProtectionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "CertType")
	delete(f, "IsCdn")
	delete(f, "UpstreamType")
	delete(f, "IsWebsocket")
	delete(f, "LoadBalance")
	delete(f, "Ports")
	delete(f, "IsKeepAlive")
	delete(f, "InstanceID")
	delete(f, "Cert")
	delete(f, "PrivateKey")
	delete(f, "SSLId")
	delete(f, "ResourceId")
	delete(f, "IpHeaders")
	delete(f, "UpstreamScheme")
	delete(f, "HttpsUpstreamPort")
	delete(f, "IsGray")
	delete(f, "GrayAreas")
	delete(f, "HttpsRewrite")
	delete(f, "UpstreamDomain")
	delete(f, "SrcList")
	delete(f, "IsHttp2")
	delete(f, "Edition")
	delete(f, "Anycast")
	delete(f, "Weights")
	delete(f, "ActiveCheck")
	delete(f, "TLSVersion")
	delete(f, "CipherTemplate")
	delete(f, "Ciphers")
	delete(f, "ProxyReadTimeout")
	delete(f, "ProxySendTimeout")
	delete(f, "SniType")
	delete(f, "SniHost")
	delete(f, "XFFReset")
	delete(f, "Note")
	delete(f, "UpstreamHost")
	delete(f, "ProxyBuffer")
	delete(f, "ProbeStatus")
	delete(f, "GmType")
	delete(f, "GmCertType")
	delete(f, "GmCert")
	delete(f, "GmPrivateKey")
	delete(f, "GmEncCert")
	delete(f, "GmEncPrivateKey")
	delete(f, "GmSSLId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddSpartaProtectionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

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

type ApiPkg struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

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

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

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

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

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

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

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

	// API security 7-day trial flag. 1 for trial. 0 for no trial.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	IsAPISecurityTrial *int64 `json:"IsAPISecurityTrial,omitnil,omitempty" name:"IsAPISecurityTrial"`
}

type AttackLogInfo struct {
	// Details of Attack Logs
	Content *string `json:"Content,omitnil,omitempty" name:"Content"`

	// CLS Returned Content
	FileName *string `json:"FileName,omitnil,omitempty" name:"FileName"`

	// CLS Returned Content
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// CLS Returned Content
	TimeStamp *string `json:"TimeStamp,omitnil,omitempty" name:"TimeStamp"`
}

type BatchIpAccessControlData struct {
	// Total number
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Entries of blocklist/allowlist
	Res []*BatchIpAccessControlItem `json:"Res,omitnil,omitempty" name:"Res"`
}

type BatchIpAccessControlItem struct {
	// MongoDB Table Auto-increment ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

	// Blocklist 42 or allowlist 40
	ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// IP of the blocklist/allowlist
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Path addition
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Modification time
	TsVersion *uint64 `json:"TsVersion,omitnil,omitempty" name:"TsVersion"`

	// Timeout period
	ValidTs *int64 `json:"ValidTs,omitnil,omitempty" name:"ValidTs"`

	// Domain name list
	Hosts []*string `json:"Hosts,omitnil,omitempty" name:"Hosts"`

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

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

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

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

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

	// Scheduled task configuration details
	// Note: This field may return null, indicating that no valid values can be obtained.
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// Effective status
	// Note: This field may return null, indicating that no valid values can be obtained.
	ValidStatus *int64 `json:"ValidStatus,omitnil,omitempty" name:"ValidStatus"`
}

type BotPkg struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

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

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

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

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

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

	// Sub-product code.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

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

	// Purchase Page Bot 40% Off
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	BotCPWaf *int64 `json:"BotCPWaf,omitnil,omitempty" name:"BotCPWaf"`

	// Console Buy Bot with 50% Off
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	BotNPWaf *int64 `json:"BotNPWaf,omitnil,omitempty" name:"BotNPWaf"`

	// 7-day Bot Trial Identification, 1 for Trial, 0 for No Trial
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	IsBotTrial *int64 `json:"IsBotTrial,omitnil,omitempty" name:"IsBotTrial"`
}

type BotQPS struct {
	// Resource ID
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

	// Resource quantity.
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Resource Location
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Maximum QPS Usage
	MaxBotQPS *uint64 `json:"MaxBotQPS,omitnil,omitempty" name:"MaxBotQPS"`

	// Renewal flag.
	// Note: This field may return null, indicating that no valid values can be obtained.
	RenewFlag *uint64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

type CCRuleData struct {
	// CC rules
	Res []*CCRuleItem `json:"Res,omitnil,omitempty" name:"Res"`

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

type CCRuleItem struct {
	// Action
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Advanced mode
	Advance *uint64 `json:"Advance,omitnil,omitempty" name:"Advance"`

	// Time period
	Interval *uint64 `json:"Interval,omitnil,omitempty" name:"Interval"`

	// Limit Attempts
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Matching Method
	MatchFunc *uint64 `json:"MatchFunc,omitnil,omitempty" name:"MatchFunc"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Priority
	Priority *uint64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Status
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Update Timestamp
	TsVersion *uint64 `json:"TsVersion,omitnil,omitempty" name:"TsVersion"`

	// Matching URL
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Policy Action Validity Period
	ValidTime *uint64 `json:"ValidTime,omitnil,omitempty" name:"ValidTime"`

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

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

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

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

	// Associated session rules
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SessionApplied []*int64 `json:"SessionApplied,omitnil,omitempty" name:"SessionApplied"`

	// Creation time
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	CreateTime *uint64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`
}

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

	// Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Mode
	Advance *uint64 `json:"Advance,omitnil,omitempty" name:"Advance"`

	// Limit
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Detection interval
	Interval *uint64 `json:"Interval,omitnil,omitempty" name:"Interval"`

	// URL
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Type to match
	MatchFunc *uint64 `json:"MatchFunc,omitnil,omitempty" name:"MatchFunc"`

	// Action
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Priority
	Priority *uint64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Expiration time
	ValidTime *uint64 `json:"ValidTime,omitnil,omitempty" name:"ValidTime"`

	// Version
	TsVersion *uint64 `json:"TsVersion,omitnil,omitempty" name:"TsVersion"`

	// Rule details
	Options *string `json:"Options,omitnil,omitempty" name:"Options"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

	// Associated session rules
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SessionApplied []*int64 `json:"SessionApplied,omitnil,omitempty" name:"SessionApplied"`

	// Creation time
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	CreateTime *uint64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`
}

type CCRuleLists struct {
	// Total number
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Rule
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Res []*CCRuleItems `json:"Res,omitnil,omitempty" name:"Res"`
}

type CacheUrlItems struct {
	// Identifier
	Id *uint64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// URL
	Uri *string `json:"Uri,omitnil,omitempty" name:"Uri"`

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

	// Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

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

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

type ClbDomainsInfo struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Unique domain name ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID of the domain name
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Name of the instance of the domain name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Instance type of the domain name
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Whether a layer-7 proxy service is deployed before the WAF. 0: No proxy service is deployed; 1: The proxy service is deployed. The WAF will use XFF to obtain the client IP address; 2: The proxy service is deployed. The WAF will use remote_addr to obtain the client IP address; 3: The proxy service is deployed. The WAF will use a custom header in ip_headers to obtain the client IP address.
	IsCdn *uint64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// CLB information when the CLB type is clb
	LoadBalancerSet []*LoadBalancerPackageNew `json:"LoadBalancerSet,omitnil,omitempty" name:"LoadBalancerSet"`

	// CLB WAF traffic mode. 1: cleaning mode; 0: image mode
	FlowMode *uint64 `json:"FlowMode,omitnil,omitempty" name:"FlowMode"`

	// Domain name-bound CLB status
	// Note: This field may return null, indicating that no valid values can be obtained.
	State *int64 `json:"State,omitnil,omitempty" name:"State"`

	// CLB Type, either CLB or Apisix
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"`

	// IsCdn=3 indicates custom header
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// CDC cluster information for the WAF of the cdc-clb-waf type
	// Note: This field may return null, indicating that no valid values can be obtained.
	CdcClusters *string `json:"CdcClusters,omitnil,omitempty" name:"CdcClusters"`

	// Cloud Type: public: Public Cloud; private: Private Cloud; hybrid: Hybrid Cloud
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	CloudType *string `json:"CloudType,omitnil,omitempty" name:"CloudType"`

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

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

type ClbObject struct {
	// Object ID
	ObjectId *string `json:"ObjectId,omitnil,omitempty" name:"ObjectId"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Precise Domain List
	PreciseDomains []*string `json:"PreciseDomains,omitnil,omitempty" name:"PreciseDomains"`

	// WAF Feature Switch Status, 0 Off 1 On
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// WAF Log Switch Status, 0 Off 1 On
	ClsStatus *int64 `json:"ClsStatus,omitnil,omitempty" name:"ClsStatus"`

	// Virtual Domain Name Corresponding to CLB Object
	VirtualDomain *string `json:"VirtualDomain,omitnil,omitempty" name:"VirtualDomain"`

	// Object name
	ObjectName *string `json:"ObjectName,omitnil,omitempty" name:"ObjectName"`

	// Public network address
	PublicIp []*string `json:"PublicIp,omitnil,omitempty" name:"PublicIp"`

	// Private network address
	PrivateIp []*string `json:"PrivateIp,omitnil,omitempty" name:"PrivateIp"`

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

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

	// WAF instance level, if no instance is bound, it is 0
	InstanceLevel *int64 `json:"InstanceLevel,omitnil,omitempty" name:"InstanceLevel"`

	// CLB Shipping Switch
	PostCLSStatus *int64 `json:"PostCLSStatus,omitnil,omitempty" name:"PostCLSStatus"`

	// Kafka Shipping Switch
	PostCKafkaStatus *int64 `json:"PostCKafkaStatus,omitnil,omitempty" name:"PostCKafkaStatus"`

	// Object type: CLB: Load Balancer, TSE: Cloud-native Gateway
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

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

	// Proxy status. 0: disabled; 1: Use the first IP address in XFF as the client IP address; 2: Use remote_addr as the client IP address; 3: Obtain the client IP address from the specified header field. The field is given by the IpHeaders field.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Proxy *uint64 `json:"Proxy,omitnil,omitempty" name:"Proxy"`

	// List of header fields for obtaining the client IP. This parameter is effective when IsCdn is 3.
	// Note: This field may return null, indicating that no valid values can be obtained.
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// Bot protection switch
	// Note: This field may return null, indicating that no valid values can be obtained.
	BotStatus *int64 `json:"BotStatus,omitnil,omitempty" name:"BotStatus"`

	// API protection switch
	// Note: This field may return null, indicating that no valid values can be obtained.
	ApiStatus *int64 `json:"ApiStatus,omitnil,omitempty" name:"ApiStatus"`

	// Object access mode. 0: image mode; 1: cleaning mode; 2: examination mode. By default, the cleaning mode is used.Note: This field may return null, indicating that no valid values can be obtained.
	ObjectFlowMode *int64 `json:"ObjectFlowMode,omitnil,omitempty" name:"ObjectFlowMode"`

	// VPC ID in numerical format
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	NumericalVpcId *int64 `json:"NumericalVpcId,omitnil,omitempty" name:"NumericalVpcId"`
}

type ClbWafRegionItem struct {
	// Region ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

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

	// Full English Name of the Region
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`

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

type CreateDealsGoods struct {
	// Number of products
	GoodsNum *int64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// Product Detail
	GoodsDetail *CreateDealsGoodsDetail `json:"GoodsDetail,omitnil,omitempty" name:"GoodsDetail"`

	// Order type ID, which is used to uniquely identify a business scene. (There are three scenes in total: new purchase, configuration change, and renewal.)
	// Advanced Edition: 102375 (new purchase), 102376 (renewal), and 102377 (configuration change)
	// Enterprise Edition: 102378 (new purchase), 102379 (renewal), and 102380 (configuration change)
	// Ultimate Edition: 102369 (new purchase), 102370 (renewal), and 102371 (configuration change)
	// Domain name package: 102372 (new purchase), 102373 (renewal), and 102374 (configuration change)
	// Business expansion package: 101040 (new purchase), 101041 (renewal), and 101042 (configuration change)
	// 
	// Advanced Edition - CLB: 101198 (new purchase), 101199 (renewal), and 101200 (configuration change)
	// Enterprise Edition - CLB: 101204 (new purchase), 101205 (renewal), and 101206 (configuration change)
	// Ultimate Edition - CLB: 101201 (new purchase), 101202 (renewal), and 101203 (configuration change)
	// Domain name package - CLB: 101207 (new purchase), 101208 (renewal), and 101209 (configuration change)
	// Business expansion package - CLB: 101210 (new purchase), 101211 (renewal), and 101212 (configuration adjustment)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	GoodsCategoryId *int64 `json:"GoodsCategoryId,omitnil,omitempty" name:"GoodsCategoryId"`

	// Region ID for purchasing WAF instance
	// 
	// 1 indicates purchasing resources in Chinese mainland.
	// 9 indicates purchasing resources outside Chinese mainland.
	// Note: This field may return null, indicating that no valid values can be obtained.
	RegionId *int64 `json:"RegionId,omitnil,omitempty" name:"RegionId"`
}

type CreateDealsGoodsDetail struct {
	// Time interval
	// Note: This field may return null, indicating that no valid values can be obtained.
	TimeSpan *int64 `json:"TimeSpan,omitnil,omitempty" name:"TimeSpan"`

	// Unit, support for purchasing d, m, y, i.e., (day, month, year)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	TimeUnit *string `json:"TimeUnit,omitnil,omitempty" name:"TimeUnit"`

	// Sub-product tag. It is mandatory for new purchase and renewal. For configuration change, it will be placed in oldConfig and newConfig.
	// 
	// SaaS Advanced Edition: sp_wsm_waf_premium
	// SaaS Enterprise Edition: sp_wsm_waf_enterprise
	// SaaS Ultimate Edition: sp_wsm_waf_ultimate
	// SaaS business expansion package: sp_wsm_waf_qpsep
	// SaaS domain name expansion package: sp_wsm_waf_domain
	// 
	// Advanced Edition - CLB: sp_wsm_waf_premium_clb
	// Enterprise Edition - CLB: sp_wsm_waf_enterprise_clb
	// Ultimate Edition - CLB: sp_wsm_waf_ultimate_clb
	//  business expansion package - CLB: sp_wsm_waf_qpsep_clb
	// Domain name expansion package - CLB: sp_wsm_waf_domain_clb
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SubProductCode *string `json:"SubProductCode,omitnil,omitempty" name:"SubProductCode"`

	// PID applied for a business product (corresponding to a pricing formula). The pricing model can be found through PID billing.
	// Advanced Edition: 1000827
	// Enterprise Edition: 1000830
	// Ultimate Edition: 1000832
	// Domain name package: 1000834
	// Business expansion package: 1000481
	// Advanced Edition - CLB: 1001150
	// Enterprise Edition - CLB: 1001152
	// Ultimate Edition - CLB: 1001154
	// Domain name package - CLB: 1001156
	// Business expansion package - CLB: 1001160
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Pid *int64 `json:"Pid,omitnil,omitempty" name:"Pid"`

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

	// 1: Auto-renewal, 0: No Auto-renewal
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Actual Geographic Information of WAF Purchase
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RealRegion *int64 `json:"RealRegion,omitnil,omitempty" name:"RealRegion"`

	// Billing Detail Tag Array
	// 
	// SaaS Advanced Edition: sv_wsm_waf_package_premium
	// SaaS Enterprise Edition: sv_wsm_waf_package_enterprise
	// SaaS Ultimate Edition: sv_wsm_waf_package_ultimate
	// SaaS non-Chinese Mainland Advanced Edition: sv_wsm_waf_package_premium_intl
	// SaaS non-Chinese Mainland Enterprise Edition: sv_wsm_waf_package_enterprise_intl
	// SaaS non-Chinese Mainland Ultimate Edition: sv_wsm_waf_package_ultimate_intl
	// SaaS business expansion package: sv_wsm_waf_qps_ep
	// SaaS domain name expansion package: sv_wsm_waf_domain
	// 
	// Advanced Edition CLB: sv_wsm_waf_package_premium_clb
	// Enterprise Edition CLB: sv_wsm_waf_package_enterprise_clb
	// Ultimate Edition CLB: sv_wsm_waf_package_ultimate_clb
	// Non-Chinese Mainland Advanced Edition CLB: sv_wsm_waf_package_premium_clb_intl
	// Non-Chinese Mainland Enterprise Edition CLB: sv_wsm_waf_package_premium_clb_intl
	// Non-Chinese Mainland Ultimate Edition CLB: sv_wsm_waf_package_ultimate_clb_intl
	// Business expansion package CLB: sv_wsm_waf_qps_ep_clb
	// Domain name expansion package CLB: sv_wsm_waf_domain_clb
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	LabelTypes []*string `json:"LabelTypes,omitnil,omitempty" name:"LabelTypes"`

	// Number of Billing Detail Tags, Generally Corresponds One-to-One with SvLabelType
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	LabelCounts []*int64 `json:"LabelCounts,omitnil,omitempty" name:"LabelCounts"`

	// Dynamic Configuration Usage, Instance Expiration Time
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	CurDeadline *string `json:"CurDeadline,omitnil,omitempty" name:"CurDeadline"`

	// Purchasing Bot or API Security for Existing Instances
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

// Predefined struct for user
type CreateDealsRequestParams struct {
	// Billing and ordering input parameters
	Goods []*CreateDealsGoods `json:"Goods,omitnil,omitempty" name:"Goods"`
}

type CreateDealsRequest struct {
	*tchttp.BaseRequest
	
	// Billing and ordering input parameters
	Goods []*CreateDealsGoods `json:"Goods,omitnil,omitempty" name:"Goods"`
}

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

// Predefined struct for user
type CreateDealsResponseParams struct {
	// Billing order response structure
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *DealData `json:"Data,omitnil,omitempty" name:"Data"`

	// 1: Success, 0: Failure
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

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

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

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

// Predefined struct for user
type CreateHostRequestParams struct {
	// Protection Domain Configuration Information
	Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type CreateHostRequest struct {
	*tchttp.BaseRequest
	
	// Protection Domain Configuration Information
	Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type CreateHostResponseParams struct {
	// Unique ID of domain
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

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

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

// Predefined struct for user
type CreateIpAccessControlRequestParams struct {
	// Specific domain name, for example, test.qcloudwaf.com.
	// Global domain name, that is, global.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// IP parameter list.
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`

	// 42: blocklist; 40: allowlist.
	ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// valid_ts indicates a valid date. Its value is a second-level timestamp, such as 1680570420, which indicates 2023-04-04 09:07:00.
	//
	// Deprecated: ValidTS is deprecated.
	ValidTS *int64 `json:"ValidTS,omitnil,omitempty" name:"ValidTS"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// WAF instance type: sparta-waf for SaaS WAF, clb-waf for CLB WAF.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Valid values: batch (adding in batches), bot (adding to the bot details list in bot traffic analysis), cc (adding to IP addresses of the CC attack type in the attack log list), custom (default value for adding not in batches).
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// Remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Scheduled configuration type.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Details of scheduled configuration.
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

type CreateIpAccessControlRequest struct {
	*tchttp.BaseRequest
	
	// Specific domain name, for example, test.qcloudwaf.com.
	// Global domain name, that is, global.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// IP parameter list.
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`

	// 42: blocklist; 40: allowlist.
	ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// valid_ts indicates a valid date. Its value is a second-level timestamp, such as 1680570420, which indicates 2023-04-04 09:07:00.
	ValidTS *int64 `json:"ValidTS,omitnil,omitempty" name:"ValidTS"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// WAF instance type: sparta-waf for SaaS WAF, clb-waf for CLB WAF.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Valid values: batch (adding in batches), bot (adding to the bot details list in bot traffic analysis), cc (adding to IP addresses of the CC attack type in the attack log list), custom (default value for adding not in batches).
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// Remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Scheduled configuration type.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Details of scheduled configuration.
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

func (r *CreateIpAccessControlRequest) 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 *CreateIpAccessControlRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "IpList")
	delete(f, "ActionType")
	delete(f, "ValidTS")
	delete(f, "InstanceId")
	delete(f, "Edition")
	delete(f, "SourceType")
	delete(f, "Note")
	delete(f, "JobType")
	delete(f, "JobDateTime")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateIpAccessControlRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateIpAccessControlResponseParams struct {
	// ID of the new rule.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

// Predefined struct for user
type CreateOwaspWhiteRuleRequestParams struct {
	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// Rule-Based matching policy list.
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// ID list of allowlisted rules.
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`

	// Allowlist type. valid values: 0 (allowlisting by specific rule ID), 1 (allowlisting by rule type).
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// If the JobDateTime field is not set, this field is used. 0 means permanent, other values indicate the cutoff time for scheduled effect (unit: seconds).
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Rule status. valid values: 0 (disabled), 1 (enabled). enabled by default.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type CreateOwaspWhiteRuleRequest struct {
	*tchttp.BaseRequest
	
	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// Rule-Based matching policy list.
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// ID list of allowlisted rules.
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`

	// Allowlist type. valid values: 0 (allowlisting by specific rule ID), 1 (allowlisting by rule type).
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// If the JobDateTime field is not set, this field is used. 0 means permanent, other values indicate the cutoff time for scheduled effect (unit: seconds).
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Rule status. valid values: 0 (disabled), 1 (enabled). enabled by default.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

// Predefined struct for user
type CreateOwaspWhiteRuleResponseParams struct {
	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

type CronJob struct {
	// Execution day of each month.
	Days []*uint64 `json:"Days,omitnil,omitempty" name:"Days"`

	// Execution day of each week.
	WDays []*uint64 `json:"WDays,omitnil,omitempty" name:"WDays"`

	// Start time.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DealData struct {
	// Order Number List: the number of elements matches the number of elements in the Goods array of the request package. Product details correspond to orders in sequence
	DealNames []*string `json:"DealNames,omitnil,omitempty" name:"DealNames"`

	// Large Order Number, a large order number can have multiple sub-orders, indicating the same order placement [{},{}]
	BigDealId *string `json:"BigDealId,omitnil,omitempty" name:"BigDealId"`
}

// Predefined struct for user
type DeleteAntiFakeUrlRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

type DeleteAntiFakeUrlRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

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

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

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

// Predefined struct for user
type DeleteAntiInfoLeakRuleRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`
}

type DeleteAntiInfoLeakRuleRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`
}

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

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

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

// Predefined struct for user
type DeleteCCRuleRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Rule ID
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`
}

type DeleteCCRuleRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Rule ID
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`
}

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

// Predefined struct for user
type DeleteCCRuleResponseParams struct {
	// Normally null
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *string `json:"Data,omitnil,omitempty" name:"Data"`

	// Operational rule ID
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

// Predefined struct for user
type DeleteCustomRuleRequestParams struct {
	// Deleted domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// List of rules to be deleted in batches
	DomainRuleIdList []*DomainRuleId `json:"DomainRuleIdList,omitnil,omitempty" name:"DomainRuleIdList"`
}

type DeleteCustomRuleRequest struct {
	*tchttp.BaseRequest
	
	// Deleted domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// List of rules to be deleted in batches
	DomainRuleIdList []*DomainRuleId `json:"DomainRuleIdList,omitnil,omitempty" name:"DomainRuleIdList"`
}

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

// Predefined struct for user
type DeleteCustomRuleResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type DeleteCustomWhiteRuleRequestParams struct {
	// Deleted domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Deleted rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`
}

type DeleteCustomWhiteRuleRequest struct {
	*tchttp.BaseRequest
	
	// Deleted domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Deleted rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`
}

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

// Predefined struct for user
type DeleteCustomWhiteRuleResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type DeleteHostRequestParams struct {
	// List of domains to be deleted
	HostsDel []*HostDel `json:"HostsDel,omitnil,omitempty" name:"HostsDel"`
}

type DeleteHostRequest struct {
	*tchttp.BaseRequest
	
	// List of domains to be deleted
	HostsDel []*HostDel `json:"HostsDel,omitnil,omitempty" name:"HostsDel"`
}

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

// Predefined struct for user
type DeleteHostResponseParams struct {
	// Domain name deletion result. Code represents the status code, and Message represents details.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type DeleteIpAccessControlV2RequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID list. Batch deletion is supported. This parameter does not need to be specified when DeleteAll is true.
	RuleIds []*uint64 `json:"RuleIds,omitnil,omitempty" name:"RuleIds"`

	// Whether to delete all IP blocklists/allowlists under the corresponding domain name. true: delete all lists; false: delete only the specified lists. Batch protection is not supported.
	DeleteAll *bool `json:"DeleteAll,omitnil,omitempty" name:"DeleteAll"`

	// batch: indicates batch protection IP allowlists/blocklists.
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// IP blocklist/allowlist type. 40: IP allowlist; 42: IP blocklist. This parameter should be passed in when DeleteAll is true.
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`
}

type DeleteIpAccessControlV2Request struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID list. Batch deletion is supported. This parameter does not need to be specified when DeleteAll is true.
	RuleIds []*uint64 `json:"RuleIds,omitnil,omitempty" name:"RuleIds"`

	// Whether to delete all IP blocklists/allowlists under the corresponding domain name. true: delete all lists; false: delete only the specified lists. Batch protection is not supported.
	DeleteAll *bool `json:"DeleteAll,omitnil,omitempty" name:"DeleteAll"`

	// batch: indicates batch protection IP allowlists/blocklists.
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// IP blocklist/allowlist type. 40: IP allowlist; 42: IP blocklist. This parameter should be passed in when DeleteAll is true.
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`
}

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

// Predefined struct for user
type DeleteIpAccessControlV2ResponseParams struct {
	// Number of items that fail to be deleted during deletion in batches.
	FailedCount *int64 `json:"FailedCount,omitnil,omitempty" name:"FailedCount"`

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

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

// Predefined struct for user
type DeleteOwaspRuleStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID list
	RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"`
}

type DeleteOwaspRuleStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID list
	RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"`
}

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

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

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

// Predefined struct for user
type DeleteOwaspWhiteRuleRequestParams struct {
	// ID list of allowlisted rules.
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`

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

type DeleteOwaspWhiteRuleRequest struct {
	*tchttp.BaseRequest
	
	// ID list of allowlisted rules.
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`

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

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

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

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

// Predefined struct for user
type DeleteSessionRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// SessionID to be deleted
	SessionID *int64 `json:"SessionID,omitnil,omitempty" name:"SessionID"`
}

type DeleteSessionRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// SessionID to be deleted
	SessionID *int64 `json:"SessionID,omitnil,omitempty" name:"SessionID"`
}

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

// Predefined struct for user
type DeleteSessionResponseParams struct {
	// Result
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *string `json:"Data,omitnil,omitempty" name:"Data"`

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

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

// Predefined struct for user
type DeleteSpartaProtectionRequestParams struct {
	// Domain name list
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Instance type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// (Required) Instance ID of the domain name
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type DeleteSpartaProtectionRequest struct {
	*tchttp.BaseRequest
	
	// Domain name list
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Instance type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// (Required) Instance ID of the domain name
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

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

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

// Predefined struct for user
type DescribeAntiFakeRulesRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. A name can be one of the following values: RuleID, ParamName, Url, Action, Method, Source, and Status.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Currently supports sorting by TS
	By *string `json:"By,omitnil,omitempty" name:"By"`
}

type DescribeAntiFakeRulesRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. A name can be one of the following values: RuleID, ParamName, Url, Action, Method, Source, and Status.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Currently supports sorting by TS
	By *string `json:"By,omitnil,omitempty" name:"By"`
}

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

// Predefined struct for user
type DescribeAntiFakeRulesResponseParams struct {
	// Total number
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Returned value
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data []*CacheUrlItems `json:"Data,omitnil,omitempty" name:"Data"`

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

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

type DescribeAntiInfoLeakRulesStrategyItem struct {
	// Field
	Field *string `json:"Field,omitnil,omitempty" name:"Field"`

	// Condition
	CompareFunc *string `json:"CompareFunc,omitnil,omitempty" name:"CompareFunc"`

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

// Predefined struct for user
type DescribeAntiInfoLeakageRulesRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page turning support, read offset
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Paging support, read length limit
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Sort method, asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Filter. The following values are allowed:
	// RuleId,Match_field,Name,Action,Status
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeAntiInfoLeakageRulesRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page turning support, read offset
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Paging support, read length limit
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Sort method, asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Filter. The following values are allowed:
	// RuleId,Match_field,Name,Action,Status
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

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

// Predefined struct for user
type DescribeAntiInfoLeakageRulesResponseParams struct {
	// Number of records
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// List of rules
	RuleList []*DescribeAntiLeakageItem `json:"RuleList,omitnil,omitempty" name:"RuleList"`

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

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

type DescribeAntiLeakageItem struct {
	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Status value
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Action
	Action *string `json:"Action,omitnil,omitempty" name:"Action"`

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

	// Match condition
	// Note: This field may return null, indicating that no valid values can be obtained.
	Strategies []*DescribeAntiInfoLeakRulesStrategyItem `json:"Strategies,omitnil,omitempty" name:"Strategies"`

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

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

// Predefined struct for user
type DescribeAttackOverviewRequestParams struct {
	// Query start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// Query end time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Customer app ID
	Appid *uint64 `json:"Appid,omitnil,omitempty" name:"Appid"`

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

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type DescribeAttackOverviewRequest struct {
	*tchttp.BaseRequest
	
	// Query start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// Query end time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Customer app ID
	Appid *uint64 `json:"Appid,omitnil,omitempty" name:"Appid"`

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

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type DescribeAttackOverviewResponseParams struct {
	// Total number of access requests
	AccessCount *uint64 `json:"AccessCount,omitnil,omitempty" name:"AccessCount"`

	// Total web attacks
	AttackCount *uint64 `json:"AttackCount,omitnil,omitempty" name:"AttackCount"`

	// Total number of access controls
	ACLCount *uint64 `json:"ACLCount,omitnil,omitempty" name:"ACLCount"`

	// Total CC attacks
	CCCount *uint64 `json:"CCCount,omitnil,omitempty" name:"CCCount"`

	// Total bot attack count
	BotCount *uint64 `json:"BotCount,omitnil,omitempty" name:"BotCount"`

	// Total API assets
	ApiAssetsCount *uint64 `json:"ApiAssetsCount,omitnil,omitempty" name:"ApiAssetsCount"`

	// Number of API risk events
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ApiRiskEventCount *uint64 `json:"ApiRiskEventCount,omitnil,omitempty" name:"ApiRiskEventCount"`

	// Total number of blocklisted IP addresses.
	// Note: This field may return null, indicating that no valid values can be obtained.
	IPBlackCount *uint64 `json:"IPBlackCount,omitnil,omitempty" name:"IPBlackCount"`

	// Total number of tamper-proof items
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	TamperCount *uint64 `json:"TamperCount,omitnil,omitempty" name:"TamperCount"`

	// Total number of information leaks
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	LeakCount *uint64 `json:"LeakCount,omitnil,omitempty" name:"LeakCount"`

	// Weekly proportion of API risk events.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ApiRiskEventCircleCount *int64 `json:"ApiRiskEventCircleCount,omitnil,omitempty" name:"ApiRiskEventCircleCount"`

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

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

// Predefined struct for user
type DescribeAttackTypeRequestParams struct {
	// Start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// End time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Compatible host, gradually phasing out Host field
	Host *string `json:"Host,omitnil,omitempty" name:"Host"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Domain filtering, not applied if not input, used to replace Host field and phase out Host
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type DescribeAttackTypeRequest struct {
	*tchttp.BaseRequest
	
	// Start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// End time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Compatible host, gradually phasing out Host field
	Host *string `json:"Host,omitnil,omitempty" name:"Host"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Domain filtering, not applied if not input, used to replace Host field and phase out Host
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

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

// Predefined struct for user
type DescribeAttackTypeResponseParams struct {
	// Quantity
	Piechart []*PiechartItem `json:"Piechart,omitnil,omitempty" name:"Piechart"`

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

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

// Predefined struct for user
type DescribeBatchIpAccessControlRequestParams struct {
	// Filter criteria: supports ActionType 40/42, IP: IP address, Domain: Three types of domains
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Offset
	OffSet *uint64 `json:"OffSet,omitnil,omitempty" name:"OffSet"`

	// Limit
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Sort parameters
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`
}

type DescribeBatchIpAccessControlRequest struct {
	*tchttp.BaseRequest
	
	// Filter criteria: supports ActionType 40/42, IP: IP address, Domain: Three types of domains
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Offset
	OffSet *uint64 `json:"OffSet,omitnil,omitempty" name:"OffSet"`

	// Limit
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Sort parameters
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`
}

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

// Predefined struct for user
type DescribeBatchIpAccessControlResponseParams struct {
	// Output
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *BatchIpAccessControlData `json:"Data,omitnil,omitempty" name:"Data"`

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

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

// Predefined struct for user
type DescribeCCRuleListRequestParams struct {
	// Domain name of the API to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Currently supports sorting by ts_version
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Filter array. A name can be one of the following values: RuleID, ParamName, Url, Action, Method, Source, and Status.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

type DescribeCCRuleListRequest struct {
	*tchttp.BaseRequest
	
	// Domain name of the API to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Currently supports sorting by ts_version
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Filter array. A name can be one of the following values: RuleID, ParamName, Url, Action, Method, Source, and Status.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

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

// Predefined struct for user
type DescribeCCRuleListResponseParams struct {
	// List of CC rules found
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *CCRuleLists `json:"Data,omitnil,omitempty" name:"Data"`

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

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

// Predefined struct for user
type DescribeCCRuleRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page number
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of pages
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Sort parameters
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Filter criteria.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`
}

type DescribeCCRuleRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page number
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of pages
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Sort parameters
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Filter criteria.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`
}

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

// Predefined struct for user
type DescribeCCRuleResponseParams struct {
	// Result
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *CCRuleData `json:"Data,omitnil,omitempty" name:"Data"`

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

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

// Predefined struct for user
type DescribeCertificateVerifyResultRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Certificate type. 0: Do not check international standard certificates; 1: The certificate is a self-owned certificate; 2: The certificate is a managed certificate.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// When CertType is 1, this parameter is required, indicating the self-owned certificate chain
	Certificate *string `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// When CertType is 2, this parameter must be filled, indicating the certificate ID hosted on Tencent Cloud's SSL platform
	CertID *string `json:"CertID,omitnil,omitempty" name:"CertID"`

	// When CertType=1, this parameter is required, indicating the private key of the self-owned certificate.
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// SM certificate type. 0: Do not check SM certificates; 1: The certificate is a self-owned SM certificate; 2: The certificate is a managed SM certificate.
	GmCertType *int64 `json:"GmCertType,omitnil,omitempty" name:"GmCertType"`

	// When GmCertType is 1, this parameter needs to be set, indicating the certificate chain of the self-owned SM certificate.
	GmCert *string `json:"GmCert,omitnil,omitempty" name:"GmCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the self-owned SM certificate.
	GmPrivateKey *string `json:"GmPrivateKey,omitnil,omitempty" name:"GmPrivateKey"`

	// When GmCertType is 1, this parameter needs to be set, indicating the encryption certificate of the self-owned SM certificate.
	GmEncCert *string `json:"GmEncCert,omitnil,omitempty" name:"GmEncCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the encryption certificate for the self-owned SM certificate.
	GmEncPrivateKey *string `json:"GmEncPrivateKey,omitnil,omitempty" name:"GmEncPrivateKey"`

	// When GmCertType is 2, this parameter needs to be set, indicating the ID of the certificate managed by the Tencent Cloud SSL platform.
	GmSSLId *string `json:"GmSSLId,omitnil,omitempty" name:"GmSSLId"`
}

type DescribeCertificateVerifyResultRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Certificate type. 0: Do not check international standard certificates; 1: The certificate is a self-owned certificate; 2: The certificate is a managed certificate.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// When CertType is 1, this parameter is required, indicating the self-owned certificate chain
	Certificate *string `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// When CertType is 2, this parameter must be filled, indicating the certificate ID hosted on Tencent Cloud's SSL platform
	CertID *string `json:"CertID,omitnil,omitempty" name:"CertID"`

	// When CertType=1, this parameter is required, indicating the private key of the self-owned certificate.
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// SM certificate type. 0: Do not check SM certificates; 1: The certificate is a self-owned SM certificate; 2: The certificate is a managed SM certificate.
	GmCertType *int64 `json:"GmCertType,omitnil,omitempty" name:"GmCertType"`

	// When GmCertType is 1, this parameter needs to be set, indicating the certificate chain of the self-owned SM certificate.
	GmCert *string `json:"GmCert,omitnil,omitempty" name:"GmCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the self-owned SM certificate.
	GmPrivateKey *string `json:"GmPrivateKey,omitnil,omitempty" name:"GmPrivateKey"`

	// When GmCertType is 1, this parameter needs to be set, indicating the encryption certificate of the self-owned SM certificate.
	GmEncCert *string `json:"GmEncCert,omitnil,omitempty" name:"GmEncCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the encryption certificate for the self-owned SM certificate.
	GmEncPrivateKey *string `json:"GmEncPrivateKey,omitnil,omitempty" name:"GmEncPrivateKey"`

	// When GmCertType is 2, this parameter needs to be set, indicating the ID of the certificate managed by the Tencent Cloud SSL platform.
	GmSSLId *string `json:"GmSSLId,omitnil,omitempty" name:"GmSSLId"`
}

func (r *DescribeCertificateVerifyResultRequest) 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 *DescribeCertificateVerifyResultRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "CertType")
	delete(f, "Certificate")
	delete(f, "CertID")
	delete(f, "PrivateKey")
	delete(f, "GmCertType")
	delete(f, "GmCert")
	delete(f, "GmPrivateKey")
	delete(f, "GmEncCert")
	delete(f, "GmEncPrivateKey")
	delete(f, "GmSSLId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCertificateVerifyResultRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCertificateVerifyResultResponseParams struct {
	// Status code
	// 0: normal certificate
	// 310: abnormal certificate
	// 311: certificate expired
	// 312: certificate about to expire
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Error details
	Detail []*string `json:"Detail,omitnil,omitempty" name:"Detail"`

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

	// Whether the certificate is changed
	// 0: not changed
	// 1: changed
	// Note: This field may return null, indicating that no valid values can be obtained.
	Changed *int64 `json:"Changed,omitnil,omitempty" name:"Changed"`

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

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

// Predefined struct for user
type DescribeCiphersDetailRequestParams struct {

}

type DescribeCiphersDetailRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type DescribeCiphersDetailResponseParams struct {
	// Cipher suite information
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Ciphers []*TLSCiphers `json:"Ciphers,omitnil,omitempty" name:"Ciphers"`

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

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

// Predefined struct for user
type DescribeCustomRuleListRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. A name can be one of the following: RuleID, RuleName, and Match.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// exp_ts or mod_ts
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Domain name list to query. This parameter is not required on the access control page.
	DomainList []*string `json:"DomainList,omitnil,omitempty" name:"DomainList"`
}

type DescribeCustomRuleListRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. A name can be one of the following: RuleID, RuleName, and Match.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// exp_ts or mod_ts
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Domain name list to query. This parameter is not required on the access control page.
	DomainList []*string `json:"DomainList,omitnil,omitempty" name:"DomainList"`
}

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

// Predefined struct for user
type DescribeCustomRuleListResponseParams struct {
	// Rule details
	RuleList []*DescribeCustomRulesRspRuleListItem `json:"RuleList,omitnil,omitempty" name:"RuleList"`

	// Number of rules
	TotalCount *string `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 DescribeCustomRuleListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomRuleListResponseParams `json:"Response"`
}

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

type DescribeCustomRulesRspRuleListItem struct {
	// Action type
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Skipped Policy
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

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

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

	// Policy name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// URL for redirection
	Redirect *string `json:"Redirect,omitnil,omitempty" name:"Redirect"`

	// Policy ID
	RuleId *string `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Priority
	SortId *string `json:"SortId,omitnil,omitempty" name:"SortId"`

	// Status
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Policy details
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

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

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

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

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

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

	// Scheduled task configuration
	// Note: This field may return null, indicating that no valid values can be obtained.
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

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

	// Custom tag in risk control rules, indicating whether a rule is built-in or user-defined
	// Note: This field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

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

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

// Predefined struct for user
type DescribeCustomWhiteRuleRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Offset.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. A name can be one of the following: RuleID, RuleName, and Match.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// exp_ts or mod_ts
	By *string `json:"By,omitnil,omitempty" name:"By"`
}

type DescribeCustomWhiteRuleRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Offset.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. A name can be one of the following: RuleID, RuleName, and Match.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// asc or desc
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// exp_ts or mod_ts
	By *string `json:"By,omitnil,omitempty" name:"By"`
}

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

// Predefined struct for user
type DescribeCustomWhiteRuleResponseParams struct {
	// Rule details
	RuleList []*DescribeCustomRulesRspRuleListItem `json:"RuleList,omitnil,omitempty" name:"RuleList"`

	// Number of rules
	TotalCount *string `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 DescribeCustomWhiteRuleResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomWhiteRuleResponseParams `json:"Response"`
}

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

// Predefined struct for user
type DescribeDomainCountInfoRequestParams struct {

}

type DescribeDomainCountInfoRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type DescribeDomainCountInfoResponseParams struct {
	// Total number of domain names
	AllDomain *uint64 `json:"AllDomain,omitnil,omitempty" name:"AllDomain"`

	// Last discovery time
	UpdateTime *string `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`

	// Total number of connected domains
	WafDomainCount *uint64 `json:"WafDomainCount,omitnil,omitempty" name:"WafDomainCount"`

	// Remaining quota
	LeftDomainCount *uint64 `json:"LeftDomainCount,omitnil,omitempty" name:"LeftDomainCount"`

	// Number of protected domain names
	OpenWafDomain *uint64 `json:"OpenWafDomain,omitnil,omitempty" name:"OpenWafDomain"`

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

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

// Predefined struct for user
type DescribeDomainDetailsClbRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeDomainDetailsClbRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

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

// Predefined struct for user
type DescribeDomainDetailsClbResponseParams struct {
	// CLB domain details
	DomainsClbPartInfo *ClbDomainsInfo `json:"DomainsClbPartInfo,omitnil,omitempty" name:"DomainsClbPartInfo"`

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

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

// Predefined struct for user
type DescribeDomainDetailsSaasRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeDomainDetailsSaasRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

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

// Predefined struct for user
type DescribeDomainDetailsSaasResponseParams struct {
	// Domain name details
	DomainsPartInfo *DomainsPartInfo `json:"DomainsPartInfo,omitnil,omitempty" name:"DomainsPartInfo"`

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

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

// Predefined struct for user
type DescribeDomainVerifyResultRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type DescribeDomainVerifyResultRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type DescribeDomainVerifyResultResponseParams struct {
	// Result description: if possible, return an empty string
	Msg *string `json:"Msg,omitnil,omitempty" name:"Msg"`

	// Inspection status. 0 indicates that it can be added; greater than 0 indicates that it cannot be added.
	VerifyCode *int64 `json:"VerifyCode,omitnil,omitempty" name:"VerifyCode"`

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

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

// Predefined struct for user
type DescribeDomainsRequestParams struct {
	// Paging offset, a multiple of limit. The minimum value is 0, and the maximum value is Total/Limit rounded up.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned domains
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. The filter fields are as follows. Edition: instance version, which can be set to sparta-waf or clb-waf; Domain: domain name; DomainId: domain name ID; InstanceName: instance name; InstanceId: instance ID; FlowMode: traffic access mode, which supports only CLB WAF; FlowCheckMode: traffic inspection mode, which supports only CLB WAF; ClsStatus: log switch; Status: WAF switch; BotStatus: BOT switch; ApiStatus: API security switch; Engine: engine mode; UpstreamIP: origin server IP address, which supports only SaaS WAF; UpstreamDomain: origin server domain name, which supports only SaaS WAF; DomainState: domain name status, which supports only SaaS WAF; SgState: security group status, which supports only SaaS WAF; Label: group tag, which supports the filtering of only one tag at a time.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeDomainsRequest struct {
	*tchttp.BaseRequest
	
	// Paging offset, a multiple of limit. The minimum value is 0, and the maximum value is Total/Limit rounded up.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned domains
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array. The filter fields are as follows. Edition: instance version, which can be set to sparta-waf or clb-waf; Domain: domain name; DomainId: domain name ID; InstanceName: instance name; InstanceId: instance ID; FlowMode: traffic access mode, which supports only CLB WAF; FlowCheckMode: traffic inspection mode, which supports only CLB WAF; ClsStatus: log switch; Status: WAF switch; BotStatus: BOT switch; ApiStatus: API security switch; Engine: engine mode; UpstreamIP: origin server IP address, which supports only SaaS WAF; UpstreamDomain: origin server domain name, which supports only SaaS WAF; DomainState: domain name status, which supports only SaaS WAF; SgState: security group status, which supports only SaaS WAF; Label: group tag, which supports the filtering of only one tag at a time.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

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

// Predefined struct for user
type DescribeDomainsResponseParams struct {
	// Total number
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Domain list
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Domains []*DomainInfo `json:"Domains,omitnil,omitempty" name:"Domains"`

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

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

// Predefined struct for user
type DescribeFindDomainListRequestParams struct {
	// Pagination
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter criteria.
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

	// Whether to access WAF
	IsWafDomain *string `json:"IsWafDomain,omitnil,omitempty" name:"IsWafDomain"`

	// Sort parameters
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Sorting method
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

type DescribeFindDomainListRequest struct {
	*tchttp.BaseRequest
	
	// Pagination
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter criteria.
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

	// Whether to access WAF
	IsWafDomain *string `json:"IsWafDomain,omitnil,omitempty" name:"IsWafDomain"`

	// Sort parameters
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Sorting method
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

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

// Predefined struct for user
type DescribeFindDomainListResponseParams struct {
	// Total number of domain names
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Domain information list
	List []*FindAllDomainDetail `json:"List,omitnil,omitempty" name:"List"`

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

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

// Predefined struct for user
type DescribeHistogramRequestParams struct {
	// Start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// End time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Clustering fields. ip: IP aggregation; art: response time aggregation; url: URL aggregation; local: city aggregation after IP conversion; qps: second-level peak request count aggregation; up: peak upstream bandwidth aggregation; down: peak downstream bandwidth aggregation
	QueryField *string `json:"QueryField,omitnil,omitempty" name:"QueryField"`

	// Condition, access for access logs, attack for attack logs
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Compatible host, gradually phasing out Host field
	Host *string `json:"Host,omitnil,omitempty" name:"Host"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Domain filtering, not applied if not input, used to replace Host field and phase out Host
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type DescribeHistogramRequest struct {
	*tchttp.BaseRequest
	
	// Start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// End time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Clustering fields. ip: IP aggregation; art: response time aggregation; url: URL aggregation; local: city aggregation after IP conversion; qps: second-level peak request count aggregation; up: peak upstream bandwidth aggregation; down: peak downstream bandwidth aggregation
	QueryField *string `json:"QueryField,omitnil,omitempty" name:"QueryField"`

	// Condition, access for access logs, attack for attack logs
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Compatible host, gradually phasing out Host field
	Host *string `json:"Host,omitnil,omitempty" name:"Host"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Domain filtering, not applied if not input, used to replace Host field and phase out Host
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

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

// Predefined struct for user
type DescribeHistogramResponseParams struct {
	// Statistical data
	Histogram []*string `json:"Histogram,omitnil,omitempty" name:"Histogram"`

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

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

// Predefined struct for user
type DescribeHostLimitRequestParams struct {
	// Added domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Traffic source
	AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"`
}

type DescribeHostLimitRequest struct {
	*tchttp.BaseRequest
	
	// Added domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Traffic source
	AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"`
}

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

// Predefined struct for user
type DescribeHostLimitResponseParams struct {
	// Successfully returned status code
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type DescribeHostRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type DescribeHostRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type DescribeHostResponseParams struct {
	// Domain name details
	Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"`

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

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

// Predefined struct for user
type DescribeHostsRequestParams struct {
	// Protection domain. If a specific protection domain is to be queried, this parameter should be input. It requires an accurate domain and does not support fuzzy search.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Protection domain ID. If it is to query a specific protection domain, this parameter is input, requiring the accurate domain ID. This parameter does not support fuzzy search.
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Searching criteria, fuzzy search on domain based on this parameter
	Search *string `json:"Search,omitnil,omitempty" name:"Search"`

	// Complex search criteria
	Item *SearchItem `json:"Item,omitnil,omitempty" name:"Item"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type DescribeHostsRequest struct {
	*tchttp.BaseRequest
	
	// Protection domain. If a specific protection domain is to be queried, this parameter should be input. It requires an accurate domain and does not support fuzzy search.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Protection domain ID. If it is to query a specific protection domain, this parameter is input, requiring the accurate domain ID. This parameter does not support fuzzy search.
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Searching criteria, fuzzy search on domain based on this parameter
	Search *string `json:"Search,omitnil,omitempty" name:"Search"`

	// Complex search criteria
	Item *SearchItem `json:"Item,omitnil,omitempty" name:"Item"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type DescribeHostsResponseParams struct {
	// Length of a protection domain list
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// List of protection domains
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	HostList []*HostRecord `json:"HostList,omitnil,omitempty" name:"HostList"`

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

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

// Predefined struct for user
type DescribeInstancesRequestParams struct {
	// Offset.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Deletion delay flag.
	FreeDelayFlag *uint64 `json:"FreeDelayFlag,omitnil,omitempty" name:"FreeDelayFlag"`
}

type DescribeInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Offset.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter array
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Deletion delay flag.
	FreeDelayFlag *uint64 `json:"FreeDelayFlag,omitnil,omitempty" name:"FreeDelayFlag"`
}

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

// Predefined struct for user
type DescribeInstancesResponseParams struct {
	// Total number
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Instance list
	Instances []*InstanceInfo `json:"Instances,omitnil,omitempty" name:"Instances"`

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

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

// Predefined struct for user
type DescribeIpAccessControlRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Count identifier
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Action. 40 for querying the allowlist, 42 for querying the blocklist
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Timestamp of the minimum valid time
	//
	// Deprecated: VtsMin is deprecated.
	VtsMin *uint64 `json:"VtsMin,omitnil,omitempty" name:"VtsMin"`

	// Timestamp of the maximum valid time
	//
	// Deprecated: VtsMax is deprecated.
	VtsMax *uint64 `json:"VtsMax,omitnil,omitempty" name:"VtsMax"`

	// Timestamp for minimum creation time
	CtsMin *uint64 `json:"CtsMin,omitnil,omitempty" name:"CtsMin"`

	// Timestamp for Maximum Creation Time
	CtsMax *uint64 `json:"CtsMax,omitnil,omitempty" name:"CtsMax"`

	// Paging offset, a multiple of limit. The minimum value is 0, and the maximum value is Total/Limit rounded up.
	OffSet *uint64 `json:"OffSet,omitnil,omitempty" name:"OffSet"`

	// Number of records returned per page, which is 20 by default.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

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

	// Sort parameters
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`

	// IP
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Effective status.
	ValidStatus *int64 `json:"ValidStatus,omitnil,omitempty" name:"ValidStatus"`

	// Timestamp of the minimum valid time
	ValidTimeStampMin *string `json:"ValidTimeStampMin,omitnil,omitempty" name:"ValidTimeStampMin"`

	// Timestamp of the maximum valid time
	ValidTimeStampMax *string `json:"ValidTimeStampMax,omitnil,omitempty" name:"ValidTimeStampMax"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Filter by scheduled task type. Valid values: 0, 1, 2, 3, 4.
	TimerType *int64 `json:"TimerType,omitnil,omitempty" name:"TimerType"`
}

type DescribeIpAccessControlRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Count identifier
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Action. 40 for querying the allowlist, 42 for querying the blocklist
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Timestamp of the minimum valid time
	VtsMin *uint64 `json:"VtsMin,omitnil,omitempty" name:"VtsMin"`

	// Timestamp of the maximum valid time
	VtsMax *uint64 `json:"VtsMax,omitnil,omitempty" name:"VtsMax"`

	// Timestamp for minimum creation time
	CtsMin *uint64 `json:"CtsMin,omitnil,omitempty" name:"CtsMin"`

	// Timestamp for Maximum Creation Time
	CtsMax *uint64 `json:"CtsMax,omitnil,omitempty" name:"CtsMax"`

	// Paging offset, a multiple of limit. The minimum value is 0, and the maximum value is Total/Limit rounded up.
	OffSet *uint64 `json:"OffSet,omitnil,omitempty" name:"OffSet"`

	// Number of records returned per page, which is 20 by default.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

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

	// Sort parameters
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`

	// IP
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Effective status.
	ValidStatus *int64 `json:"ValidStatus,omitnil,omitempty" name:"ValidStatus"`

	// Timestamp of the minimum valid time
	ValidTimeStampMin *string `json:"ValidTimeStampMin,omitnil,omitempty" name:"ValidTimeStampMin"`

	// Timestamp of the maximum valid time
	ValidTimeStampMax *string `json:"ValidTimeStampMax,omitnil,omitempty" name:"ValidTimeStampMax"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Filter by scheduled task type. Valid values: 0, 1, 2, 3, 4.
	TimerType *int64 `json:"TimerType,omitnil,omitempty" name:"TimerType"`
}

func (r *DescribeIpAccessControlRequest) 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 *DescribeIpAccessControlRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "Count")
	delete(f, "ActionType")
	delete(f, "VtsMin")
	delete(f, "VtsMax")
	delete(f, "CtsMin")
	delete(f, "CtsMax")
	delete(f, "OffSet")
	delete(f, "Limit")
	delete(f, "Source")
	delete(f, "Sort")
	delete(f, "Ip")
	delete(f, "ValidStatus")
	delete(f, "ValidTimeStampMin")
	delete(f, "ValidTimeStampMax")
	delete(f, "RuleId")
	delete(f, "TimerType")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeIpAccessControlRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeIpAccessControlResponseParams struct {
	// Output.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *IpAccessControlData `json:"Data,omitnil,omitempty" name:"Data"`

	// Total number of IP addresses in the used IP allowlist/blocklist.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	UsedTotal *uint64 `json:"UsedTotal,omitnil,omitempty" name:"UsedTotal"`

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

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

// Predefined struct for user
type DescribeModuleStatusRequestParams struct {
	// Domain to query status
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type DescribeModuleStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain to query status
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

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

// Predefined struct for user
type DescribeModuleStatusResponseParams struct {
	// Whether web security rules are enabled
	WebSecurity *uint64 `json:"WebSecurity,omitnil,omitempty" name:"WebSecurity"`

	// Whether access control rule is enabled
	AccessControl *int64 `json:"AccessControl,omitnil,omitempty" name:"AccessControl"`

	// Whether CC protection is enabled.
	CcProtection *uint64 `json:"CcProtection,omitnil,omitempty" name:"CcProtection"`

	// Whether web tamper-proof is enabled
	AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"`

	// Whether information leakage prevention is enabled
	AntiLeakage *uint64 `json:"AntiLeakage,omitnil,omitempty" name:"AntiLeakage"`

	// Whether API security is enabled
	ApiProtection *uint64 `json:"ApiProtection,omitnil,omitempty" name:"ApiProtection"`

	// Traffic limiting module switch
	RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"`

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

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

// Predefined struct for user
type DescribeObjectsRequestParams struct {
	// Supported filters:
	// 	ObjectId: CLB instance ID
	// 	VIP: public IP address of the CLB instance
	// 	InstanceId: WAF instance ID
	// 	Domain: precise domain name
	// 	Status: WAF protection switch status. 0: disabled; 1: enabled
	// 	ClsStatus: WAF log switch. 0: disabled; 1: enabled
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeObjectsRequest struct {
	*tchttp.BaseRequest
	
	// Supported filters:
	// 	ObjectId: CLB instance ID
	// 	VIP: public IP address of the CLB instance
	// 	InstanceId: WAF instance ID
	// 	Domain: precise domain name
	// 	Status: WAF protection switch status. 0: disabled; 1: enabled
	// 	ClsStatus: WAF log switch. 0: disabled; 1: enabled
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

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

// Predefined struct for user
type DescribeObjectsResponseParams struct {
	// Object list
	ClbObjects []*ClbObject `json:"ClbObjects,omitnil,omitempty" name:"ClbObjects"`

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

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

// Predefined struct for user
type DescribeOwaspRuleTypesRequestParams struct {
	// Domain names to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page number, defaults to 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page. defaults to 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter conditions. supports rule ID, CVE ID, and description.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeOwaspRuleTypesRequest struct {
	*tchttp.BaseRequest
	
	// Domain names to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page number, defaults to 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page. defaults to 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter conditions. supports rule ID, CVE ID, and description.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

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

// Predefined struct for user
type DescribeOwaspRuleTypesResponseParams struct {
	// Number of rule types.
	Total *int64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Rule type list and information.
	List []*OwaspRuleType `json:"List,omitnil,omitempty" name:"List"`

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

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

// Predefined struct for user
type DescribeOwaspRulesRequestParams struct {
	// Domain to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page number, defaults to 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page. defaults to 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the field used to sort. valid values: RuleId, UpdateTime.
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Sorting method. supports asc, desc.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Specifies the criteria, support rule ID, rule type, rule description, CVE ID, rule Status, and threat level.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeOwaspRulesRequest struct {
	*tchttp.BaseRequest
	
	// Domain to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Page number, defaults to 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page. defaults to 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the field used to sort. valid values: RuleId, UpdateTime.
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Sorting method. supports asc, desc.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Specifies the criteria, support rule ID, rule type, rule description, CVE ID, rule Status, and threat level.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

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

// Predefined struct for user
type DescribeOwaspRulesResponseParams struct {
	// Total number of rules.
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// List of rules
	List []*OwaspRule `json:"List,omitnil,omitempty" name:"List"`

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

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

// Predefined struct for user
type DescribeOwaspWhiteRulesRequestParams struct {
	// Domain to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Paginate, defaults to 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page. defaults to 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the field used to sort. valid values: CreateTime (creation time), UpdateTime (update time).
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Sorting method. supports asc, desc.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Filter conditions, support RuleId: whitelist rule ID, Name: rule Name, RuleType: whitelist rule type, Status: rule enabling Status, ValidStatus: rule effective Status, TimerType: effective method, ID: specific whitelist ID, determine whether it is a rule ID or type ID based on RuleType.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

type DescribeOwaspWhiteRulesRequest struct {
	*tchttp.BaseRequest
	
	// Domain to be queried
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Paginate, defaults to 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Capacity per page. defaults to 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the field used to sort. valid values: CreateTime (creation time), UpdateTime (update time).
	By *string `json:"By,omitnil,omitempty" name:"By"`

	// Sorting method. supports asc, desc.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`

	// Filter conditions, support RuleId: whitelist rule ID, Name: rule Name, RuleType: whitelist rule type, Status: rule enabling Status, ValidStatus: rule effective Status, TimerType: effective method, ID: specific whitelist ID, determine whether it is a rule ID or type ID based on RuleType.
	Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"`
}

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

// Predefined struct for user
type DescribeOwaspWhiteRulesResponseParams struct {
	// Total number of rules.
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Rule allowlist list
	List []*OwaspWhiteRule `json:"List,omitnil,omitempty" name:"List"`

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

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

// Predefined struct for user
type DescribePeakPointsRequestParams struct {
	// Query start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// Query End Time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// The domain to query, leave this parameter blank if querying data for all domains
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Twelve available values:
	// access: peak QPS trend chart
	// botAccess: peak bot QPS trend chart
	// down: downstream peak bandwidth trend chart
	// up: upstream peak bandwidth trend chart
	// attack: trend chart of total web attacks
	// cc: trend chart of total CC attacks
	// bw: trend chart of total attacks from blocklisted IP addresses
	// tamper: trend chart of total tampering attacks
	// leak: total leakage trend chart
	// acl: trend chart of total access control attacks
	// http_status: status code trend chart
	// wx_access: trend chart of peak WeChat mini program QPS
	MetricName *string `json:"MetricName,omitnil,omitempty" name:"MetricName"`
}

type DescribePeakPointsRequest struct {
	*tchttp.BaseRequest
	
	// Query start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// Query End Time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// The domain to query, leave this parameter blank if querying data for all domains
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Twelve available values:
	// access: peak QPS trend chart
	// botAccess: peak bot QPS trend chart
	// down: downstream peak bandwidth trend chart
	// up: upstream peak bandwidth trend chart
	// attack: trend chart of total web attacks
	// cc: trend chart of total CC attacks
	// bw: trend chart of total attacks from blocklisted IP addresses
	// tamper: trend chart of total tampering attacks
	// leak: total leakage trend chart
	// acl: trend chart of total access control attacks
	// http_status: status code trend chart
	// wx_access: trend chart of peak WeChat mini program QPS
	MetricName *string `json:"MetricName,omitnil,omitempty" name:"MetricName"`
}

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

// Predefined struct for user
type DescribePeakPointsResponseParams struct {
	// Data points
	Points []*PeakPointsItem `json:"Points,omitnil,omitempty" name:"Points"`

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

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

// Predefined struct for user
type DescribePolicyStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// clb-waf or saas-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

type DescribePolicyStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// clb-waf or saas-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

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

// Predefined struct for user
type DescribePolicyStatusResponseParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Protection status
	Status *uint64 `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 DescribePolicyStatusResponse struct {
	*tchttp.BaseResponse
	Response *DescribePolicyStatusResponseParams `json:"Response"`
}

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

// Predefined struct for user
type DescribePortsRequestParams struct {
	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Instance type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

type DescribePortsRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Instance type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

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

// Predefined struct for user
type DescribePortsResponseParams struct {
	// HTTP Port List
	HttpPorts []*string `json:"HttpPorts,omitnil,omitempty" name:"HttpPorts"`

	// HTTPS port list
	HttpsPorts []*string `json:"HttpsPorts,omitnil,omitempty" name:"HttpsPorts"`

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

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

// Predefined struct for user
type DescribeRuleLimitRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeRuleLimitRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

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

// Predefined struct for user
type DescribeRuleLimitResponseParams struct {
	// WAF module specifications
	Res *WafRuleLimit `json:"Res,omitnil,omitempty" name:"Res"`

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

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

// Predefined struct for user
type DescribeSessionRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

type DescribeSessionRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// clb-waf or sparta-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

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

// Predefined struct for user
type DescribeSessionResponseParams struct {
	// Returned result
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *SessionData `json:"Data,omitnil,omitempty" name:"Data"`

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

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

// Predefined struct for user
type DescribeSpartaProtectionInfoRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Version
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Instance
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type DescribeSpartaProtectionInfoRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Version
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Instance
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type DescribeSpartaProtectionInfoResponseParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// CNAME value
	Cname *string `json:"Cname,omitnil,omitempty" name:"Cname"`

	// Status
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Source IP address list
	SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"`

	// Certificate type
	CertType *string `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Certificate
	Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"`

	// Private key
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// SSL ID
	Sslid *string `json:"Sslid,omitnil,omitempty" name:"Sslid"`

	// Whether it is a CDN
	IsCdn *string `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// Grayscale area list
	GrayAreas []*string `json:"GrayAreas,omitnil,omitempty" name:"GrayAreas"`

	// Engine
	Engine *string `json:"Engine,omitnil,omitempty" name:"Engine"`

	// HTTPS rewriting
	HttpsRewrite *string `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"`

	// upstreamType value
	UpstreamType *string `json:"UpstreamType,omitnil,omitempty" name:"UpstreamType"`

	// Value of upstreamDomain
	UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"`

	// Value of upstreamScheme
	UpstreamScheme *string `json:"UpstreamScheme,omitnil,omitempty" name:"UpstreamScheme"`

	// Whether it is HTTP2.
	IsHttp2 *string `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"`

	// Whether it includes WebSocket
	IsWebsocket *string `json:"IsWebsocket,omitnil,omitempty" name:"IsWebsocket"`

	// LoadBalance information
	LoadBalance *string `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"`

	// Value of httpsUpstreamPort
	HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"`

	// Port information
	Ports []*PortItem `json:"Ports,omitnil,omitempty" name:"Ports"`

	// Whether it is grayscale
	IsGray *string `json:"IsGray,omitnil,omitempty" name:"IsGray"`

	// Mode
	Mode *string `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Defense level: 100, 200, 300
	Level *string `json:"Level,omitnil,omitempty" name:"Level"`

	// Whether to maintain a long connection with the origin server
	IsKeepAlive *string `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"`

	// 0: BGP; 1: Anycast.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Anycast *string `json:"Anycast,omitnil,omitempty" name:"Anycast"`

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

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

// Predefined struct for user
type DescribeTlsVersionRequestParams struct {

}

type DescribeTlsVersionRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type DescribeTlsVersionResponseParams struct {
	// TLS key value
	TLS []*TLSVersion `json:"TLS,omitnil,omitempty" name:"TLS"`

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

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

// Predefined struct for user
type DescribeTopAttackDomainRequestParams struct {
	// Query start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// Query end time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Top N, selectable from 0-10. The default is 10.
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type DescribeTopAttackDomainRequest struct {
	*tchttp.BaseRequest
	
	// Query start time
	FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"`

	// Query end time
	ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"`

	// Top N, selectable from 0-10. The default is 10.
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Only two values are valid: sparta-waf, clb-waf. No filtering if not input.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// WAF instance ID. No filter will be carried out if it is not input.
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type DescribeTopAttackDomainResponseParams struct {
	// CC attack domain list
	CC []*KVInt `json:"CC,omitnil,omitempty" name:"CC"`

	// Web attack domain list
	Web []*KVInt `json:"Web,omitnil,omitempty" name:"Web"`

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

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

// Predefined struct for user
type DescribeUserClbWafRegionsRequestParams struct {
	// Traffic source. The default value is clb if not specified. clb: Cloud Load Balancer; tsegw: cloud-native API gateway; scf: Serverless Cloud Function; apisix: other gateways on Tencent Cloud.
	AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"`
}

type DescribeUserClbWafRegionsRequest struct {
	*tchttp.BaseRequest
	
	// Traffic source. The default value is clb if not specified. clb: Cloud Load Balancer; tsegw: cloud-native API gateway; scf: Serverless Cloud Function; apisix: other gateways on Tencent Cloud.
	AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"`
}

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

// Predefined struct for user
type DescribeUserClbWafRegionsResponseParams struct {
	// Region (in standard ap-format) list
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data []*string `json:"Data,omitnil,omitempty" name:"Data"`

	// Geographical information with detailed attributes
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RichDatas []*ClbWafRegionItem `json:"RichDatas,omitnil,omitempty" name:"RichDatas"`

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

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

// Predefined struct for user
type DescribeUserDomainInfoRequestParams struct {

}

type DescribeUserDomainInfoRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type DescribeUserDomainInfoResponseParams struct {
	// SaaS and CLB domain information
	UsersInfo []*UserDomainInfo `json:"UsersInfo,omitnil,omitempty" name:"UsersInfo"`

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

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

// Predefined struct for user
type DescribeUserLevelRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type DescribeUserLevelRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

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

// Predefined struct for user
type DescribeUserLevelResponseParams struct {
	// 300: Normal, 400: Strict
	Level *uint64 `json:"Level,omitnil,omitempty" name:"Level"`

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

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

// Predefined struct for user
type DescribeVipInfoRequestParams struct {
	// WAF instance ID list
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

type DescribeVipInfoRequest struct {
	*tchttp.BaseRequest
	
	// WAF instance ID list
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

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

// Predefined struct for user
type DescribeVipInfoResponseParams struct {
	// VIP information
	VipInfo []*VipInfo `json:"VipInfo,omitnil,omitempty" name:"VipInfo"`

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

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

// Predefined struct for user
type DescribeWebshellStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type DescribeWebshellStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

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

// Predefined struct for user
type DescribeWebshellStatusResponseParams struct {
	// Webshell domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Enabling status
	Status *uint64 `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 DescribeWebshellStatusResponse struct {
	*tchttp.BaseResponse
	Response *DescribeWebshellStatusResponseParams `json:"Response"`
}

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

type DomainInfo struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// CNAME Address
	Cname *string `json:"Cname,omitnil,omitempty" name:"Cname"`

	// Instance type of the domain name.
	// sparta-waf: SaaS WAF instance
	// clb-waf: CLB WAF instance
	// cdc-clb-waf: CLB WAF instances in the CDC environment
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Region
	// "Toronto": "ca"
	// "Guangzhou": "gz"
	// "Chengdu": "cd"
	// "Fuzhou": "fzec"
	// "Shenzhen": "szx"
	// "India": "in"
	// "Jinan": "jnec"
	// "Chongqing": "cq"
	// "Tianjin": "tsn"
	// "Northeast Europe": "ru"
	// "Nanjing": "nj"
	// "Silicon Valley, USA": "usw"
	// "Thailand": "th"
	// "Guangzhou Open": "gzopen"
	// "Shenzhen Finance": "szjr"
	// "Frankfurt": "de"
	// "Japan": "jp"
	// "Virginia": "use"
	// "Beijing": "bj"
	// "Hong Kong (China)": "hk"
	// "Hangzhou": "hzec"
	// "Beijing Finance": "bjjr"
	// "Shanghai Finance": "shjr"
	// "Taipei (China)": "tpe"
	// "Seoul": "kr"
	// "Shanghai": "sh"
	// "Singapore": "sg"
	// "Qingyuan": "qy"
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Instance name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Access log switch status
	// 0: disabled
	// 1: enabled
	ClsStatus *uint64 `json:"ClsStatus,omitnil,omitempty" name:"ClsStatus"`

	// CLB WAF usage mode
	// 0: image mode
	// 1: cleaning mode
	FlowMode *uint64 `json:"FlowMode,omitnil,omitempty" name:"FlowMode"`

	// WAF switch status
	// 0: disabled
	// 1: enabled
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Rule engine protection mode
	// 0: observation mode
	// 1: interception mode
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Joint status of rule engine and AI engine protection modes.
	// 1: initial status: interception for the rule engine and disabled for the AI engine
	// 10: observation for the rule engine and disabled for the AI engine
	// 11: observation for both the rule engine and AI engine
	// 12: observation for the rule engine and interception for the AI engine
	// 20: interception for the rule engine and disabled for the AI engine
	// 21: interception for the rule engine and observation for the AI engine
	// 22: interception for both the rule engine and AI engine
	Engine *uint64 `json:"Engine,omitnil,omitempty" name:"Engine"`

	// Sandbox cluster origin-pull outbound IP list
	CCList []*string `json:"CCList,omitnil,omitempty" name:"CCList"`

	// Production cluster origin-pull outbound IP list
	RsList []*string `json:"RsList,omitnil,omitempty" name:"RsList"`

	// Service port configuration
	Ports []*PortInfo `json:"Ports,omitnil,omitempty" name:"Ports"`

	// CLB-related configuration
	LoadBalancerSet []*LoadBalancerPackageNew `json:"LoadBalancerSet,omitnil,omitempty" name:"LoadBalancerSet"`

	// User ID
	AppId *uint64 `json:"AppId,omitnil,omitempty" name:"AppId"`

	// LB listener status of the domain name protected by CLB WAF0: Operation successful.
	// 4: The LB is being bound.
	// 6: The LB is being unbound.
	// 7: Failed to unbind the LB.
	// 8: Failed to bind the LB.
	// 10: Internal error.
	State *int64 `json:"State,omitnil,omitempty" name:"State"`

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

	// IPv6 switch status.
	// 0: disabled
	// 1: enabled
	Ipv6Status *int64 `json:"Ipv6Status,omitnil,omitempty" name:"Ipv6Status"`

	// Bot switch status.
	// 0: disabled
	// 1: disabled
	// 2: enabled
	// 3: enabled
	BotStatus *int64 `json:"BotStatus,omitnil,omitempty" name:"BotStatus"`

	// Instance version information.
	// 101: Small and Micro Agile Edition
	// 102: Small and Micro Ultra-light Edition
	// 2: Advanced Edition
	// 3: Enterprise Edition
	// 4: Ultimate Edition
	// 6: Exclusive Edition
	Level *int64 `json:"Level,omitnil,omitempty" name:"Level"`

	// Shipping status of CLS.
	// 0: disabled
	// 1: enabled
	PostCLSStatus *int64 `json:"PostCLSStatus,omitnil,omitempty" name:"PostCLSStatus"`

	// Shipping status of CKafka.
	// 0: disabled
	// 1: enabled
	PostCKafkaStatus *int64 `json:"PostCKafkaStatus,omitnil,omitempty" name:"PostCKafkaStatus"`

	// Cluster information accessed by the CDC instance domain name, which can be ignored for non-CDC instances.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CdcClusters *string `json:"CdcClusters,omitnil,omitempty" name:"CdcClusters"`

	// API security switch status.
	// 0: disabled
	// 1: enabled
	// Note: This field may return null, indicating that no valid values can be obtained.
	ApiStatus *int64 `json:"ApiStatus,omitnil,omitempty" name:"ApiStatus"`

	// Application-based CLB type. The default value is clb.
	// clb: layer-7 CLB
	// apisix: APISIX gateway
	// Note: This field may return null, indicating that no valid values can be obtained.
	AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"`

	// Security group status.
	// 0: not display
	// 1: non-Tencent Cloud origin server
	// 2: Security group binding failed.
	// 3: security groups changed.
	// Note: This field may return null, indicating that no valid values can be obtained.
	SgState *int64 `json:"SgState,omitnil,omitempty" name:"SgState"`

	// Detailed Explanation of Security Group Status
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SgDetail *string `json:"SgDetail,omitnil,omitempty" name:"SgDetail"`

	// Domain name cloud environment. hybrid: hybrid cloud domain name
	// public: public cloud domain name
	// Note: This field may return null, indicating that no valid values can be obtained.
	CloudType *string `json:"CloudType,omitnil,omitempty" name:"CloudType"`

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

	// SaaS WAF origin server IP list
	// Note: This field may return null, indicating that no valid values can be obtained.
	SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"`

	// SaaS WAF origin server domain name list
	// Note: This field may return null, indicating that no valid values can be obtained.
	UpstreamDomainList []*string `json:"UpstreamDomainList,omitnil,omitempty" name:"UpstreamDomainList"`

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

	// CLB WAF access status
	// Note: This field may return null, indicating that no valid values can be obtained.
	AccessStatus *int64 `json:"AccessStatus,omitnil,omitempty" name:"AccessStatus"`

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

type DomainPackageNew struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

	// Auto-renewal, 1: Enabled, 0: Disabled
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RenewFlag *uint64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Number of Package Purchases
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Package Purchase Region, currently not used in CLB-WAF
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`
}

type DomainRuleId struct {
	// Domain name
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

type DomainURI struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Version
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

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

type DomainsPartInfo struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Unique domain name ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Unique instance ID of the domain name
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance type of the domain name
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

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

	// Certificate
	Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"`

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

	// Status of the rule engine and AI engine
	// 1: initial status. Interception for the rule engine and disabled for the AI engine.
	// 10: observation for the rule engine and disabled for the AI engine
	// 11: observation for both the rule engine and AI engine
	// 12: observation for the rule engine and interception for the AI engine
	// 20: interception for the rule engine and disabled for the AI engine
	// 21: interception for the rule engine and observation for the AI engine
	// 22: interception for both the rule engine and AI engine
	Engine *uint64 `json:"Engine,omitnil,omitempty" name:"Engine"`

	// Whether to enable forced redirection from HTTP to HTTPS
	// 0: do not force redirection
	// 1: enable forced redirection
	HttpsRewrite *uint64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"`

	// HTTPS origin-pull port
	HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"`

	// Whether a layer-7 proxy service is deployed before WAF
	// 0: No proxy service deployed
	// 1: Proxy service deployed, and WAF will use XFF to obtain the client IP address
	// 2: Proxy service deployed and WAF will use remote_addr to obtain the client IP address
	// 3: Proxy service deployed and WAF will use the custom header in ip_headers to obtain the client IP address
	IsCdn *uint64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// This parameter has been deprecated.
	IsGray *uint64 `json:"IsGray,omitnil,omitempty" name:"IsGray"`

	// Whether to enable HTTP2. You should enable HTTPS as well.
	// 0: disable
	// 1: enable
	IsHttp2 *uint64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"`

	// Whether to enable support for WebSocket
	// 0: disable
	// 1: enable
	IsWebsocket *uint64 `json:"IsWebsocket,omitnil,omitempty" name:"IsWebsocket"`

	// Load balancing policy for origin-pull
	// 0: round-robin
	// 1: IP hash
	// 2: weighted round-robin
	LoadBalance *uint64 `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"`

	// Protection mode
	// 0: observation mode
	// 1: interception mode
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Private key of the self-owned certificate
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// When CertType is 2, this parameter must be filled, indicating the certificate ID hosted on Tencent Cloud's SSL platform
	SSLId *string `json:"SSLId,omitnil,omitempty" name:"SSLId"`

	// Origin domain when domain is back to source. When UpstreamType=1, this field needs to be filled
	UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"`

	// Origin-pull type
	// 0: origin-pull via IP address
	// 1: origin-pull via domain name
	UpstreamType *uint64 `json:"UpstreamType,omitnil,omitempty" name:"UpstreamType"`

	// Origin IP list when IP is back to source. When UpstreamType=0, this field is required
	SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"`

	//  Domain name port configuration
	Ports []*PortInfo `json:"Ports,omitnil,omitempty" name:"Ports"`

	// Certificate type
	// 0: no certificate, with only the HTTP listening port configured
	// 1: self-owned certificate
	// 2: managed certificate
	CertType *uint64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Origin-pull protocol for HTTPS when the service is configured with an HTTPS port
	// http: Use the HTTP protocol for origin-pull. It is used together with HttpsUpstreamPort.
	// https: Use the HTTPS protocol for origin-pull.
	UpstreamScheme *string `json:"UpstreamScheme,omitnil,omitempty" name:"UpstreamScheme"`

	// Whether to enable access logging
	// 0: disable
	// 1: enable
	Cls *uint64 `json:"Cls,omitnil,omitempty" name:"Cls"`

	// CNAME record for accessing a domain name protected by SaaS WAF
	Cname *string `json:"Cname,omitnil,omitempty" name:"Cname"`

	// Whether to enable persistent connection
	// 0: non-persistent connection
	// 1: persistent connection
	IsKeepAlive *uint64 `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"`

	// Whether to enable proactive health check
	// 0: disable
	// 1: enable
	// Note: This field may return null, indicating that no valid values can be obtained.
	ActiveCheck *uint64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"`

	// TLS version information
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	TLSVersion *int64 `json:"TLSVersion,omitnil,omitempty" name:"TLSVersion"`

	// Custom encryption suite list. When CipherTemplate is 3, this field is required, indicating the custom encryption suite, value obtained through DescribeCiphersDetail API.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Ciphers []*int64 `json:"Ciphers,omitnil,omitempty" name:"Ciphers"`

	// Cipher suite template
	// 0: default template
	// 1: general template
	// 2: security template
	// 3: custom template
	// Note: This field may return null, indicating that no valid values can be obtained.
	CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"`

	// Read timeout between WAF and origin server, 300s by default.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"`

	// WAF and origin server write timeout, 300s by default.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ProxySendTimeout *int64 `json:"ProxySendTimeout,omitnil,omitempty" name:"ProxySendTimeout"`

	// SNI type during WAF origin-pull
	// 0: Disable SNI and do not configure server_name in client_hello.
	// 1: Enable SNI. server_name in client_hello is a protected domain name.
	// 2: Enable SNI. SNI is the origin server domain name during the domain name origin-pull.
	// 3: Enable SNI. SNI is a custom domain name.
	// Note: This field may return null, indicating that no valid values can be obtained.
	SniType *int64 `json:"SniType,omitnil,omitempty" name:"SniType"`

	// When SniType=3, this parameter is required, indicating a custom SNI;
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SniHost *string `json:"SniHost,omitnil,omitempty" name:"SniHost"`

	// Weight of the IP address for origin-pull
	// Note: This field may return null, indicating that no valid values can be obtained.
	Weights []*string `json:"Weights,omitnil,omitempty" name:"Weights"`

	// IsCdn=3 indicates custom header
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// Whether to enable XFF reset
	// 0: disable
	// 1: enable
	// Note: This field may return null, indicating that no valid values can be obtained.
	XFFReset *int64 `json:"XFFReset,omitnil,omitempty" name:"XFFReset"`

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

	// Custom origin-pull host. The default value is a null string, indicating that a protected domain name is used as the origin-pull host.
	// Note: This field may return null, indicating that no valid values can be obtained.
	UpstreamHost *string `json:"UpstreamHost,omitnil,omitempty" name:"UpstreamHost"`

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

	// Whether to enable caching. 0: disable; 1: enable.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ProxyBuffer *int64 `json:"ProxyBuffer,omitnil,omitempty" name:"ProxyBuffer"`

	// Whether to enable SM. 0: do not enable SM; 1: add support for SM based on the existing TLS option; 2: enable SM and support only SM client access.
	// Note: This field may return null, indicating that no valid values can be obtained.
	GmType *int64 `json:"GmType,omitnil,omitempty" name:"GmType"`

	// SM certificate type. 0: no SM certificate is available; 1: the certificate is a self-owned SM certificate; 2: the certificate is a managed SM certificate.
	// Note: This field may return null, indicating that no valid values can be obtained.
	GmCertType *int64 `json:"GmCertType,omitnil,omitempty" name:"GmCertType"`

	// When GmCertType is 1, this parameter needs to be set, indicating the certificate chain of the self-owned SM certificate.
	// Note: This field may return null, indicating that no valid values can be obtained.
	GmCert *string `json:"GmCert,omitnil,omitempty" name:"GmCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the self-owned SM certificate.
	// Note: This field may return null, indicating that no valid values can be obtained.
	GmPrivateKey *string `json:"GmPrivateKey,omitnil,omitempty" name:"GmPrivateKey"`

	// When GmCertType is 1, this parameter needs to be set, indicating the encryption certificate of the self-owned SM certificate.
	// Note: This field may return null, indicating that no valid values can be obtained.
	GmEncCert *string `json:"GmEncCert,omitnil,omitempty" name:"GmEncCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the encryption certificate for the self-owned SM certificate.
	// Note: This field may return null, indicating that no valid values can be obtained.
	GmEncPrivateKey *string `json:"GmEncPrivateKey,omitnil,omitempty" name:"GmEncPrivateKey"`

	// When GmCertType is 2, this parameter needs to be set, indicating the ID of the certificate managed by the Tencent Cloud SSL platform.
	// Note: This field may return null, indicating that no valid values can be obtained.
	GmSSLId *string `json:"GmSSLId,omitnil,omitempty" name:"GmSSLId"`

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

type FiltersItemNew struct {
	// Field name, used for filtering
	// Filter the sub-order number (value) by DealName.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Values after filtering
	Values []*string `json:"Values,omitnil,omitempty" name:"Values"`

	// Exact search or not
	ExactMatch *bool `json:"ExactMatch,omitnil,omitempty" name:"ExactMatch"`
}

type FindAllDomainDetail struct {
	// User ID
	Appid *uint64 `json:"Appid,omitnil,omitempty" name:"Appid"`

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

	// Domain IP
	Ips []*string `json:"Ips,omitnil,omitempty" name:"Ips"`

	// Detection time
	FindTime *string `json:"FindTime,omitnil,omitempty" name:"FindTime"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// WAF type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Whether to access WAF
	IsWafDomain *uint64 `json:"IsWafDomain,omitnil,omitempty" name:"IsWafDomain"`
}

type FraudPkg struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

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

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

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

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

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

	// Renewal flag.
	// Note: This field may return null, indicating that no valid values can be obtained.
	RenewFlag *uint64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

// Predefined struct for user
type FreshAntiFakeUrlRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

type FreshAntiFakeUrlRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

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

// Predefined struct for user
type FreshAntiFakeUrlResponseParams struct {
	// Whether the result is successful
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

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

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

// Predefined struct for user
type GenerateDealsAndPayNewRequestParams struct {
	// Billing and ordering input parameters
	Goods []*GoodNews `json:"Goods,omitnil,omitempty" name:"Goods"`
}

type GenerateDealsAndPayNewRequest struct {
	*tchttp.BaseRequest
	
	// Billing and ordering input parameters
	Goods []*GoodNews `json:"Goods,omitnil,omitempty" name:"Goods"`
}

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

// Predefined struct for user
type GenerateDealsAndPayNewResponseParams struct {
	// Billing order response structure
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *DealData `json:"Data,omitnil,omitempty" name:"Data"`

	// 1: Success, 0: Failure
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

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

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

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

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

// Predefined struct for user
type GetAttackHistogramRequestParams struct {
	// Queried domain: use all for all domains
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Query start time
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Query end time
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Lucene syntax.
	QueryString *string `json:"QueryString,omitnil,omitempty" name:"QueryString"`
}

type GetAttackHistogramRequest struct {
	*tchttp.BaseRequest
	
	// Queried domain: use all for all domains
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Query start time
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Query end time
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Lucene syntax.
	QueryString *string `json:"QueryString,omitnil,omitempty" name:"QueryString"`
}

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

// Predefined struct for user
type GetAttackHistogramResponseParams struct {
	// Statistics details
	Data []*LogHistogramInfo `json:"Data,omitnil,omitempty" name:"Data"`

	// Time period size
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Number of entries counted
	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 GetAttackHistogramResponse struct {
	*tchttp.BaseResponse
	Response *GetAttackHistogramResponseParams `json:"Response"`
}

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

// Predefined struct for user
type GetAttackTotalCountRequestParams struct {
	// Start time
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Domain names queried. Fill in all for all domain names.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Query criteria, "" by default
	QueryString *string `json:"QueryString,omitnil,omitempty" name:"QueryString"`
}

type GetAttackTotalCountRequest struct {
	*tchttp.BaseRequest
	
	// Start time
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Domain names queried. Fill in all for all domain names.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Query criteria, "" by default
	QueryString *string `json:"QueryString,omitnil,omitempty" name:"QueryString"`
}

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

// Predefined struct for user
type GetAttackTotalCountResponseParams struct {
	// Total attack count
	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 GetAttackTotalCountResponse struct {
	*tchttp.BaseResponse
	Response *GetAttackTotalCountResponseParams `json:"Response"`
}

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

// Predefined struct for user
type GetInstanceQpsLimitRequestParams struct {
	// Package instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Package type.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`
}

type GetInstanceQpsLimitRequest struct {
	*tchttp.BaseRequest
	
	// Package instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Package type.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`
}

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

// Predefined struct for user
type GetInstanceQpsLimitResponseParams struct {
	// Elastic QPS related value set
	QpsData *QpsData `json:"QpsData,omitnil,omitempty" name:"QpsData"`

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

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

type GoodNews struct {
	// Number of products
	GoodsNum *int64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// Product Detail
	GoodsDetail *GoodsDetailNew `json:"GoodsDetail,omitnil,omitempty" name:"GoodsDetail"`

	// Order type ID, which is used to uniquely identify a business scene. (There are three scenes in total: new purchase, configuration change, and renewal.)
	// Advanced Edition: 102375 (new purchase), 102376 (renewal), and 102377 (configuration change)
	// Enterprise Edition: 102378 (new purchase), 102379 (renewal), and 102380 (configuration change)
	// Ultimate Edition: 102369 (new purchase), 102370 (renewal), and 102371 (configuration change)
	// Domain name package: 102372 (new purchase), 102373 (renewal), and 102374 (configuration change)
	// Business expansion package: 101040 (new purchase), 101041 (renewal), and 101042 (configuration change)
	// 
	// Advanced Edition - CLB: 101198 (new purchase), 101199 (renewal), and 101200 (configuration change)
	// Enterprise Edition - CLB: 101204 (new purchase), 101205 (renewal), and 101206 (configuration change)
	// Ultimate Edition - CLB: 101201 (new purchase), 101202 (renewal), and 101203 (configuration change)
	// Domain name package - CLB: 101207 (new purchase), 101208 (renewal), and 101209 (configuration change)
	// Business expansion package - CLB: 101210 (new purchase), 101211 (renewal), and 101212 (configuration adjustment)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	GoodsCategoryId *int64 `json:"GoodsCategoryId,omitnil,omitempty" name:"GoodsCategoryId"`

	// Region ID for purchasing WAF instance
	// 
	// 1 indicates purchasing resources in Chinese mainland.
	// 9 indicates purchasing resources outside Chinese mainland.
	// Note: This field may return null, indicating that no valid values can be obtained.
	RegionId *int64 `json:"RegionId,omitnil,omitempty" name:"RegionId"`
}

type GoodsDetailNew struct {
	// Time interval
	// Note: This field may return null, indicating that no valid values can be obtained.
	TimeSpan *int64 `json:"TimeSpan,omitnil,omitempty" name:"TimeSpan"`

	// Unit, support for purchasing d, m, y, i.e., (day, month, year)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	TimeUnit *string `json:"TimeUnit,omitnil,omitempty" name:"TimeUnit"`

	// Sub-product tag. It is mandatory for new purchase and renewal. For configuration change, it will be placed in oldConfig and newConfig.
	// 
	// SaaS Advanced Edition: sp_wsm_waf_premium
	// SaaS Enterprise Edition: sp_wsm_waf_enterprise
	// SaaS Ultimate Edition: sp_wsm_waf_ultimate
	// SaaS business expansion package: sp_wsm_waf_qpsep
	// SaaS domain name expansion package: sp_wsm_waf_domain
	// 
	// Advanced Edition - CLB: sp_wsm_waf_premium_clb
	// Enterprise Edition - CLB: sp_wsm_waf_enterprise_clb
	// Ultimate Edition - CLB: sp_wsm_waf_ultimate_clb
	//  Business expansion package - CLB: sp_wsm_waf_qpsep_clb
	// Domain name expansion package - CLB: sp_wsm_waf_domain_clb
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SubProductCode *string `json:"SubProductCode,omitnil,omitempty" name:"SubProductCode"`

	// PID applied for a business product (corresponding to a pricing formula). The pricing model can be found through PID billing.
	// Advanced Edition: 1000827
	// Enterprise Edition: 1000830
	// Ultimate Edition: 1000832
	// Domain name package: 1000834
	// Business expansion package: 1000481
	// Advanced Edition - CLB: 1001150
	// Enterprise Edition - CLB: 1001152
	// Ultimate Edition - CLB: 1001154
	// Domain name package - CLB: 1001156
	// Business expansion package - CLB: 1001160
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Pid *int64 `json:"Pid,omitnil,omitempty" name:"Pid"`

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

	// 1: Auto-renewal, 0: No Auto-renewal
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Actual Geographic Information of WAF Purchase
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RealRegion *int64 `json:"RealRegion,omitnil,omitempty" name:"RealRegion"`

	// Billing Detail Tag Array
	// 
	// SaaS Advanced Edition: sv_wsm_waf_package_premium
	// SaaS Enterprise Edition: sv_wsm_waf_package_enterprise
	// SaaS Ultimate Edition: sv_wsm_waf_package_ultimate
	// SaaS non-Chinese Mainland Advanced Edition: sv_wsm_waf_package_premium_intl
	// SaaS non-Chinese Mainland Enterprise Edition: sv_wsm_waf_package_enterprise_intl
	// SaaS non-Chinese Mainland Ultimate Edition: sv_wsm_waf_package_ultimate_intl
	// SaaS business expansion package: sv_wsm_waf_qps_ep
	// SaaS domain name expansion package: sv_wsm_waf_domain
	// 
	// Advanced Edition CLB: sv_wsm_waf_package_premium_clb
	// Enterprise Edition CLB: sv_wsm_waf_package_enterprise_clb
	// Ultimate Edition CLB: sv_wsm_waf_package_ultimate_clb
	// Non-Chinese Mainland Advanced Edition CLB: sv_wsm_waf_package_premium_clb_intl
	// Non-Chinese Mainland Enterprise Edition CLB: sv_wsm_waf_package_premium_clb_intl
	// Non-Chinese Mainland Ultimate Edition CLB: sv_wsm_waf_package_ultimate_clb_intl
	// Business expansion package CLB: sv_wsm_waf_qps_ep_clb
	// Domain name expansion package CLB: sv_wsm_waf_domain_clb
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	LabelTypes []*string `json:"LabelTypes,omitnil,omitempty" name:"LabelTypes"`

	// Number of Billing Detail Tags, Generally Corresponds One-to-One with SvLabelType
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	LabelCounts []*int64 `json:"LabelCounts,omitnil,omitempty" name:"LabelCounts"`

	// Dynamic Configuration Usage, Instance Expiration Time
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	CurDeadline *string `json:"CurDeadline,omitnil,omitempty" name:"CurDeadline"`

	// Purchasing Bot or API Security for Existing Instances
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// CLB WAF or SaaS WAF mode.
	// Note: This field may return null, indicating that no valid values can be obtained.
	MicroVersion *string `json:"MicroVersion,omitnil,omitempty" name:"MicroVersion"`
}

type HostDel struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance type
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type HostRecord struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Unique domain name ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Primary Domain, empty upon input
	MainDomain *string `json:"MainDomain,omitnil,omitempty" name:"MainDomain"`

	// Rule engine protection mode
	// 0: observation mode
	// 1: interception mode
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Binding relationship between WAF and CLB
	// 0: unbound
	// 1: bound
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Domain name listener status of CLB WAF
	// 0: operation successful
	// 4: CLB instance binding in progress
	// 6: CLB instance unbinding in progress
	// 7: CLB instance unbinding failed
	// 8: CLB instance binding failed
	// 10: internal error
	State *uint64 `json:"State,omitnil,omitempty" name:"State"`

	// Status of the rule engine and AI engine
	// 1: initial status. Interception for the rule engine and disabled for the AI engine.
	// 10: observation for the rule engine and disabled for the AI engine
	// 11: observation for both the rule engine and AI engine
	// 12: observation for the rule engine and interception for the AI engine
	// 20: interception for the rule engine and disabled for the AI engine
	// 21: interception for the rule engine and observation for the AI engine
	// 22: interception for both the rule engine and AI engine
	Engine *uint64 `json:"Engine,omitnil,omitempty" name:"Engine"`

	// Whether a layer-7 proxy service is deployed before WAF. 0: No proxy service deployed; 1: Proxy service deployed, and WAF will use XFF to obtain the client IP address; 2: Proxy service deployed, and WAF will use remote_addr to obtain the client IP address; 3: Proxy service deployed, and WAF will use the custom header in ip_headers to obtain the client IP address.
	IsCdn *uint64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// List of the information on the bound CLB instance
	LoadBalancerSet []*LoadBalancer `json:"LoadBalancerSet,omitnil,omitempty" name:"LoadBalancerSet"`

	// Region of the CLB instance bound to the domain name. Separate multiple regions by commas.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Instance type of the domain name. For CLB WAF, the value is "clb-waf".
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Traffic mode of domain names protected by CLB WAF
	// 1: cleaning mode
	// 0: mirror mode
	FlowMode *uint64 `json:"FlowMode,omitnil,omitempty" name:"FlowMode"`

	// Whether to enable access logging
	// 1: enable
	// 0: disable
	ClsStatus *uint64 `json:"ClsStatus,omitnil,omitempty" name:"ClsStatus"`

	// Protection Level, Optional Values: 100, 200, 300
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Level *uint64 `json:"Level,omitnil,omitempty" name:"Level"`

	// List of CDC clusters to which the domain name needs to be delivered. Specify this parameter for CDC scenes only.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CdcClusters []*string `json:"CdcClusters,omitnil,omitempty" name:"CdcClusters"`

	// Application CLB type. Default value: clb. 
	// clb: layer-7 CLB
	// tsegw: Tencent Cloud API Gateway
	// scf: Tencent Cloud Serverless
	// apisix: Other Tencent Cloud Gateway. eg: APISIX gateway
	// Note: This field may return null, indicating that no valid values can be obtained.
	AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"`

	// IsCdn=3 required for this parameter, indicates custom header
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// Rule engine type
	// 1: menshen
	// 2: tiga
	// Note: This field may return null, indicating that no valid values can be obtained.
	EngineType *int64 `json:"EngineType,omitnil,omitempty" name:"EngineType"`

	// Cloud type
	// public: public cloud
	// private: private cloud
	// hybrid: hybrid cloud
	// Note: This field may return null, indicating that no valid values can be obtained.
	CloudType *string `json:"CloudType,omitnil,omitempty" name:"CloudType"`

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

type HostStatus struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// WAF switch. 1: On, 0: Off
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type HybridPkg struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

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

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

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

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

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

	// Renewal flag.
	// Note: This field may return null, indicating that no valid values can be obtained.
	RenewFlag *uint64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

// Predefined struct for user
type ImportIpAccessControlRequestParams struct {
	// List of imported IP allowlists/blocklists.
	Data []*IpAccessControlParam `json:"Data,omitnil,omitempty" name:"Data"`

	// Specific domain name, for example, test.qcloudwaf.com.
	// Global domain name, that is, global.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Batch protection IP blocklists/allowlists or not. If yes, the value is batch; otherwise, it is empty.
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type ImportIpAccessControlRequest struct {
	*tchttp.BaseRequest
	
	// List of imported IP allowlists/blocklists.
	Data []*IpAccessControlParam `json:"Data,omitnil,omitempty" name:"Data"`

	// Specific domain name, for example, test.qcloudwaf.com.
	// Global domain name, that is, global.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Batch protection IP blocklists/allowlists or not. If yes, the value is batch; otherwise, it is empty.
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

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

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

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

type InstanceInfo struct {
	// Unique Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Resource ID corresponding to the Instance, for billing usage
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

	// Payment mode
	PayMode *uint64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Auto-renewal flag.
	// 
	// 0: disable
	// 
	// 1: enable
	RenewFlag *uint64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Elastic billing switch.
	// 0: disable
	// 
	// 1: enable
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Instance package version.
	// 101: Small and Micro Edition.
	// 102: Ultra-light Edition.
	// 2: Advanced Edition.
	// 3: Enterprise Edition.
	// 4: Ultimate Edition.
	// 6: Exclusive Edition
	Level *uint64 `json:"Level,omitnil,omitempty" name:"Level"`

	// Instance expiration time
	ValidTime *string `json:"ValidTime,omitnil,omitempty" name:"ValidTime"`

	// Instance Start Time
	BeginTime *string `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// Configured Domain Count
	DomainCount *uint64 `json:"DomainCount,omitnil,omitempty" name:"DomainCount"`

	// Maximum Domain Count
	SubDomainLimit *uint64 `json:"SubDomainLimit,omitnil,omitempty" name:"SubDomainLimit"`

	// Configured Primary Domain Count
	MainDomainCount *uint64 `json:"MainDomainCount,omitnil,omitempty" name:"MainDomainCount"`

	// Maximum Number of Primary Domain Names
	MainDomainLimit *uint64 `json:"MainDomainLimit,omitnil,omitempty" name:"MainDomainLimit"`

	// Instance QPS Peak within 30 Days
	MaxQPS *uint64 `json:"MaxQPS,omitnil,omitempty" name:"MaxQPS"`

	// QPS Expansion Package Information
	QPS *QPSPackageNew `json:"QPS,omitnil,omitempty" name:"QPS"`

	// Domain Extension Package Information
	DomainPkg *DomainPackageNew `json:"DomainPkg,omitnil,omitempty" name:"DomainPkg"`

	// User appid.
	AppId *uint64 `json:"AppId,omitnil,omitempty" name:"AppId"`

	// CLB or SaaS
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Business Security Package
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	FraudPkg *FraudPkg `json:"FraudPkg,omitnil,omitempty" name:"FraudPkg"`

	// Bot Resource Package
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	BotPkg *BotPkg `json:"BotPkg,omitnil,omitempty" name:"BotPkg"`

	// Bot's QPS details
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	BotQPS *BotQPS `json:"BotQPS,omitnil,omitempty" name:"BotQPS"`

	// QPS Elastic Billing Cap
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ElasticBilling *uint64 `json:"ElasticBilling,omitnil,omitempty" name:"ElasticBilling"`

	// Attack Log Shipping Switch
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	AttackLogPost *int64 `json:"AttackLogPost,omitnil,omitempty" name:"AttackLogPost"`

	// Peak Bandwidth, in B/s (Bytes per Second)
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	MaxBandwidth *uint64 `json:"MaxBandwidth,omitnil,omitempty" name:"MaxBandwidth"`

	// Whether API security is purchased
	APISecurity *uint64 `json:"APISecurity,omitnil,omitempty" name:"APISecurity"`

	// Purchased QPS Specification
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	QpsStandard *uint64 `json:"QpsStandard,omitnil,omitempty" name:"QpsStandard"`

	// Purchased Bandwidth Specification
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	BandwidthStandard *uint64 `json:"BandwidthStandard,omitnil,omitempty" name:"BandwidthStandard"`

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

	// Instance Sandbox QPS Value
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SandboxQps *uint64 `json:"SandboxQps,omitnil,omitempty" name:"SandboxQps"`

	// Whether API Security is on Trial
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	IsAPISecurityTrial *uint64 `json:"IsAPISecurityTrial,omitnil,omitempty" name:"IsAPISecurityTrial"`

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

	// Hybrid Cloud Sub-node Package
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	HybridPkg *HybridPkg `json:"HybridPkg,omitnil,omitempty" name:"HybridPkg"`

	// API security resource package
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ApiPkg *ApiPkg `json:"ApiPkg,omitnil,omitempty" name:"ApiPkg"`

	// MMPS Acceleration Package
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	MiniPkg *MiniPkg `json:"MiniPkg,omitnil,omitempty" name:"MiniPkg"`

	// Mini Program QPS Specification
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	MiniQpsStandard *uint64 `json:"MiniQpsStandard,omitnil,omitempty" name:"MiniQpsStandard"`

	// Mini Program QPS Peak
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	MiniMaxQPS *uint64 `json:"MiniMaxQPS,omitnil,omitempty" name:"MiniMaxQPS"`

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

	// ID quantity expansion package for secure mini program access.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	MiniExtendPkg *MiniExtendPkg `json:"MiniExtendPkg,omitnil,omitempty" name:"MiniExtendPkg"`

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

	// Flag for delay of instance deletion.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	FreeDelayFlag *uint64 `json:"FreeDelayFlag,omitnil,omitempty" name:"FreeDelayFlag"`
}

type IpAccessControlData struct {
	// IP Blocklist/Allowlist
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Res []*IpAccessControlItem `json:"Res,omitnil,omitempty" name:"Res"`

	// Counting.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`
}

type IpAccessControlItem struct {
	// MongoDB Table Auto-increment ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

	// Action
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// ip
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

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

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

	// Expiration Timestamp
	ValidTs *uint64 `json:"ValidTs,omitnil,omitempty" name:"ValidTs"`

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

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

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

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

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

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

	// Details of scheduled task configuration.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

type IpAccessControlParam struct {
	// IP list.
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`

	// valid_ts indicates a valid date. Its value is a second-level timestamp, such as 1680570420, which indicates 2023-04-04 09:07:00.
	ValidTs *uint64 `json:"ValidTs,omitnil,omitempty" name:"ValidTs"`

	// 42: blocklist; 40: allowlist.
	ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`
}

type JobDateTime struct {
	// Time parameter for scheduled execution.
	Timed []*TimedJob `json:"Timed,omitnil,omitempty" name:"Timed"`

	// Time parameter for periodic execution.
	Cron []*CronJob `json:"Cron,omitnil,omitempty" name:"Cron"`

	// Specifies the time zone.
	TimeTZone *string `json:"TimeTZone,omitnil,omitempty" name:"TimeTZone"`
}

type KVInt struct {
	// Key
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

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

type LoadBalancer struct {
	// CLB LD's ID
	LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"`

	// CLB LD's Name
	LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"`

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

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

	// IP of CLB Instance
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// Port of the CLB Instance
	Vport *uint64 `json:"Vport,omitnil,omitempty" name:"Vport"`

	// CLB LD's Region
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

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

	// Zone of the CLB Listener
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// CLB's VPC ID, -1 for public network, fill in the actual number for private network
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	NumericalVpcId *int64 `json:"NumericalVpcId,omitnil,omitempty" name:"NumericalVpcId"`

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

	// CLB Domain Name
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	LoadBalancerDomain *string `json:"LoadBalancerDomain,omitnil,omitempty" name:"LoadBalancerDomain"`
}

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

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

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

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

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

	// Region
	// "Toronto": "ca",
	// "Guangzhou": "gz",
	// "Chengdu": "cd",
	// "Fuzhou": "fzec",
	// "Shenzhen": "szx",
	// "India": "in",
	// "Jinan": "jnec",
	// "Chongqing": "cq",
	// "Tianjin": "tsn",
	// "Northeast Europe": "ru",
	// "Nanjing": "nj",
	// "Silicon Valley (U.S.)": "usw",
	// "Thailand": "th",
	// "Guangzhou Open": "gzopen",
	// "Shenzhen Finance": "szjr",
	// "Frankfurt": "de",
	// "Japan": "jp",
	// "Virginia": "use",
	// "Beijing": "bj",
	// "Hong Kong (China)": "hk",
	// "Hangzhou": "hzec",
	// "Beijing Finance": "bjjr",
	// "Shanghai Finance": "shjr",
	// "Taipei (China)": "tpe",
	// "Seoul": "kr",
	// "Shanghai": "sh",
	// "Singapore": "sg",
	// "Qingyuan": "qy"
	// Note: This field may return null, indicating that no valid values can be obtained.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

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

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

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

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

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

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

type LogHistogramInfo struct {
	// Number of logs.
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Timestamp.
	TimeStamp *int64 `json:"TimeStamp,omitnil,omitempty" name:"TimeStamp"`
}

type MajorEventsPkg struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

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

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

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

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

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

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

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

	// Protection Package Status
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	HWState *int64 `json:"HWState,omitnil,omitempty" name:"HWState"`
}

type MiniExtendPkg struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

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

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

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

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

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

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

type MiniPkg struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

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

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

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

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

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

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

// Predefined struct for user
type ModifyAntiFakeUrlRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// uri
	Uri *string `json:"Uri,omitnil,omitempty" name:"Uri"`

	// ID
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`
}

type ModifyAntiFakeUrlRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// uri
	Uri *string `json:"Uri,omitnil,omitempty" name:"Uri"`

	// ID
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`
}

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

// Predefined struct for user
type ModifyAntiFakeUrlResponseParams struct {
	// Result
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

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

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

// Predefined struct for user
type ModifyAntiFakeUrlStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// ID List
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`
}

type ModifyAntiFakeUrlStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// ID List
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`
}

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

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

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

// Predefined struct for user
type ModifyAntiInfoLeakRuleStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

type ModifyAntiInfoLeakRuleStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

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

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

// Predefined struct for user
type ModifyAntiInfoLeakRulesRequestParams struct {
	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// Action value
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Policy array
	Strategies []*StrategyForAntiInfoLeak `json:"Strategies,omitnil,omitempty" name:"Strategies"`
}

type ModifyAntiInfoLeakRulesRequest struct {
	*tchttp.BaseRequest
	
	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// Action value
	ActionType *uint64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Policy array
	Strategies []*StrategyForAntiInfoLeak `json:"Strategies,omitnil,omitempty" name:"Strategies"`
}

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

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

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

// Predefined struct for user
type ModifyApiAnalyzeStatusRequestParams struct {
	// Enabling status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

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

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// List of entities to be bulk enabled
	TargetList []*TargetEntity `json:"TargetList,omitnil,omitempty" name:"TargetList"`
}

type ModifyApiAnalyzeStatusRequest struct {
	*tchttp.BaseRequest
	
	// Enabling status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

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

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// List of entities to be bulk enabled
	TargetList []*TargetEntity `json:"TargetList,omitnil,omitempty" name:"TargetList"`
}

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

// Predefined struct for user
type ModifyApiAnalyzeStatusResponseParams struct {
	// Number of Activated. If the returned value is 3 (greater than the number of domains supported for activation), the activation has failed.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Domain list not supported to enable
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	UnSupportedList []*string `json:"UnSupportedList,omitnil,omitempty" name:"UnSupportedList"`

	// Domain list with enabling/disabling failed
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	FailDomainList []*string `json:"FailDomainList,omitnil,omitempty" name:"FailDomainList"`

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

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

// Predefined struct for user
type ModifyBotStatusRequestParams struct {
	// Category
	Category *string `json:"Category,omitnil,omitempty" name:"Category"`

	// Status
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

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

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Whether it is the bot 4.0 version
	IsVersionFour *bool `json:"IsVersionFour,omitnil,omitempty" name:"IsVersionFour"`

	// Enter the bot version number, scenario-based version: 4.1.0
	BotVersion *string `json:"BotVersion,omitnil,omitempty" name:"BotVersion"`

	// List of domain names on which bot detection is to be enabled or disabled in batch
	DomainList []*string `json:"DomainList,omitnil,omitempty" name:"DomainList"`
}

type ModifyBotStatusRequest struct {
	*tchttp.BaseRequest
	
	// Category
	Category *string `json:"Category,omitnil,omitempty" name:"Category"`

	// Status
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

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

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Whether it is the bot 4.0 version
	IsVersionFour *bool `json:"IsVersionFour,omitnil,omitempty" name:"IsVersionFour"`

	// Enter the bot version number, scenario-based version: 4.1.0
	BotVersion *string `json:"BotVersion,omitnil,omitempty" name:"BotVersion"`

	// List of domain names on which bot detection is to be enabled or disabled in batch
	DomainList []*string `json:"DomainList,omitnil,omitempty" name:"DomainList"`
}

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

// Predefined struct for user
type ModifyBotStatusResponseParams struct {
	// Normally null
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *string `json:"Data,omitnil,omitempty" name:"Data"`

	// List of domain names for which no bots are purchased
	// Note: This field may return null, indicating that no valid values can be obtained.
	UnSupportedList []*string `json:"UnSupportedList,omitnil,omitempty" name:"UnSupportedList"`

	// List of domain names which bots are purchased but the operation fails
	// Note: This field may return null, indicating that no valid values can be obtained.
	FailDomainList []*string `json:"FailDomainList,omitnil,omitempty" name:"FailDomainList"`

	// Number of successes
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

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

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

// Predefined struct for user
type ModifyCustomRuleRequestParams struct {
	// Edited domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Edited rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Edited rule name
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Executed actions: 0-allow, 1-block, 2-CAPTCHA, 3-observe, 4-redirect
	RuleAction *string `json:"RuleAction,omitnil,omitempty" name:"RuleAction"`

	// Matching condition array
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Redirected URL when action is set to redirect, / by default
	Redirect *string `json:"Redirect,omitnil,omitempty" name:"Redirect"`

	// Whether to continue executing other check logic upon allowing. geoip: continue region blocking protection; cc: continue CC policy protection; owasp: continue web application protection; ai: continue AI engine protection; antileakage: continue information leakage prevention. If multiple values are entered, separate them with commas (,).
	// The default value is "geoip,cc,owasp,ai,antileakage".
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Priority, an integer from 1 to 100. The smaller the number, the higher the execution priority of this rule.
	// 
	// The default value is 100.
	SortId *uint64 `json:"SortId,omitnil,omitempty" name:"SortId"`

	// Rule expiration deadline: 0 - permanently effective; other values correspond to the timestamp of the specified time.
	// 
	// The default value is 0.
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Scheduled task type
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// Rule source. This parameter checks whether the rule source is mini program.
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Enabling status. Pass the value for rules of mini program risk control.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// ID of the blocked page
	PageId *string `json:"PageId,omitnil,omitempty" name:"PageId"`
}

type ModifyCustomRuleRequest struct {
	*tchttp.BaseRequest
	
	// Edited domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Edited rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Edited rule name
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Executed actions: 0-allow, 1-block, 2-CAPTCHA, 3-observe, 4-redirect
	RuleAction *string `json:"RuleAction,omitnil,omitempty" name:"RuleAction"`

	// Matching condition array
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Redirected URL when action is set to redirect, / by default
	Redirect *string `json:"Redirect,omitnil,omitempty" name:"Redirect"`

	// Whether to continue executing other check logic upon allowing. geoip: continue region blocking protection; cc: continue CC policy protection; owasp: continue web application protection; ai: continue AI engine protection; antileakage: continue information leakage prevention. If multiple values are entered, separate them with commas (,).
	// The default value is "geoip,cc,owasp,ai,antileakage".
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Priority, an integer from 1 to 100. The smaller the number, the higher the execution priority of this rule.
	// 
	// The default value is 100.
	SortId *uint64 `json:"SortId,omitnil,omitempty" name:"SortId"`

	// Rule expiration deadline: 0 - permanently effective; other values correspond to the timestamp of the specified time.
	// 
	// The default value is 0.
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Scheduled task type
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// Rule source. This parameter checks whether the rule source is mini program.
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Enabling status. Pass the value for rules of mini program risk control.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// ID of the blocked page
	PageId *string `json:"PageId,omitnil,omitempty" name:"PageId"`
}

func (r *ModifyCustomRuleRequest) 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 *ModifyCustomRuleRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "RuleId")
	delete(f, "RuleName")
	delete(f, "RuleAction")
	delete(f, "Strategies")
	delete(f, "Edition")
	delete(f, "Redirect")
	delete(f, "Bypass")
	delete(f, "SortId")
	delete(f, "ExpireTime")
	delete(f, "JobType")
	delete(f, "JobDateTime")
	delete(f, "Source")
	delete(f, "Status")
	delete(f, "PageId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyCustomRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyCustomRuleResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type ModifyCustomRuleStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Status of the switch: 1 is On, 0 is Off
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Rule ID
	DomainRuleIdList []*DomainRuleId `json:"DomainRuleIdList,omitnil,omitempty" name:"DomainRuleIdList"`
}

type ModifyCustomRuleStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Status of the switch: 1 is On, 0 is Off
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Rule ID
	DomainRuleIdList []*DomainRuleId `json:"DomainRuleIdList,omitnil,omitempty" name:"DomainRuleIdList"`
}

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

// Predefined struct for user
type ModifyCustomRuleStatusResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type ModifyCustomWhiteRuleRequestParams struct {
	// Edited domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Edited rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Edited rule name
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Whether to continue executing other check logics when bypassing, continue executing regional ban protection - geoip; continue executing CC policy protection - cc; continue executing WEB application protection: owasp; continue executing AI engine protection - ai; continue executing information leakage protection - antileakage. If multiple items are selected, concatenate with commas (,).
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Priority, an integer from 1 to 100. The smaller the number, the higher the execution priority of this rule.
	SortId *uint64 `json:"SortId,omitnil,omitempty" name:"SortId"`

	// Rule expiration deadline: 0 - permanently effective; other values correspond to the timestamp of the specified time.
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Matching condition array
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Scheduled task type
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

type ModifyCustomWhiteRuleRequest struct {
	*tchttp.BaseRequest
	
	// Edited domain
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Edited rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Edited rule name
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Whether to continue executing other check logics when bypassing, continue executing regional ban protection - geoip; continue executing CC policy protection - cc; continue executing WEB application protection: owasp; continue executing AI engine protection - ai; continue executing information leakage protection - antileakage. If multiple items are selected, concatenate with commas (,).
	Bypass *string `json:"Bypass,omitnil,omitempty" name:"Bypass"`

	// Priority, an integer from 1 to 100. The smaller the number, the higher the execution priority of this rule.
	SortId *uint64 `json:"SortId,omitnil,omitempty" name:"SortId"`

	// Rule expiration deadline: 0 - permanently effective; other values correspond to the timestamp of the specified time.
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Matching condition array
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// Scheduled task type
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

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

// Predefined struct for user
type ModifyCustomWhiteRuleResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type ModifyCustomWhiteRuleStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Status of the switch: 1 is On, 0 is Off
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type ModifyCustomWhiteRuleStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Status of the switch: 1 is On, 0 is Off
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

// Predefined struct for user
type ModifyCustomWhiteRuleStatusResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type ModifyDomainIpv6StatusRequestParams struct {
	// Instance ID of the domain to be modified
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Domain to modify
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID to be modified
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// IPv6 switch for modifying domain is Status (1: enable, 2: disable)
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type ModifyDomainIpv6StatusRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID of the domain to be modified
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Domain to modify
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID to be modified
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// IPv6 switch for modifying domain is Status (1: enable, 2: disable)
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

// Predefined struct for user
type ModifyDomainIpv6StatusResponseParams struct {
	// Returned status (0: Operation Failed 1: Operation Succeeded 2: Not Supported for Enterprise Edition and Above 3: Not Supported for Below Enterprise Edition)
	Ipv6Status *int64 `json:"Ipv6Status,omitnil,omitempty" name:"Ipv6Status"`

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

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

// Predefined struct for user
type ModifyDomainPostActionRequestParams struct {
	// www.tx.com
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// 0- Disable shipping, 1- Enable shipping
	PostCLSAction *int64 `json:"PostCLSAction,omitnil,omitempty" name:"PostCLSAction"`

	// 0- Disable shipping, 1- Enable shipping
	PostCKafkaAction *int64 `json:"PostCKafkaAction,omitnil,omitempty" name:"PostCKafkaAction"`
}

type ModifyDomainPostActionRequest struct {
	*tchttp.BaseRequest
	
	// www.tx.com
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// 0- Disable shipping, 1- Enable shipping
	PostCLSAction *int64 `json:"PostCLSAction,omitnil,omitempty" name:"PostCLSAction"`

	// 0- Disable shipping, 1- Enable shipping
	PostCKafkaAction *int64 `json:"PostCKafkaAction,omitnil,omitempty" name:"PostCKafkaAction"`
}

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

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

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

// Predefined struct for user
type ModifyDomainsCLSStatusRequestParams struct {
	// Domain name list to be modified
	Domains []*DomainURI `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Change the access log switch of the domain to Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type ModifyDomainsCLSStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name list to be modified
	Domains []*DomainURI `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Change the access log switch of the domain to Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

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

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

// Predefined struct for user
type ModifyHostFlowModeRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// WAF traffic mode
	// 0: mirror mode (default)
	// 1: cleaning mode
	FlowMode *uint64 `json:"FlowMode,omitnil,omitempty" name:"FlowMode"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type ModifyHostFlowModeRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// WAF traffic mode
	// 0: mirror mode (default)
	// 1: cleaning mode
	FlowMode *uint64 `json:"FlowMode,omitnil,omitempty" name:"FlowMode"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type ModifyHostFlowModeResponseParams struct {
	// Successful status code
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type ModifyHostModeRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Protection status:
	// 10: rule-based observation and AI disabling; 11: rule- and AI-based observation; 12: rule-based observation and AI-based interception
	// 20: rule-based interception and AI disabling; 21: rule-based interception and AI-based observation; 22: rule- and AI-based interception
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// 0: Change protection mode, 1: Modify AI
	Type *uint64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Instance type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

type ModifyHostModeRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Protection status:
	// 10: rule-based observation and AI disabling; 11: rule- and AI-based observation; 12: rule-based observation and AI-based interception
	// 20: rule-based interception and AI disabling; 21: rule-based interception and AI-based observation; 22: rule- and AI-based interception
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// 0: Change protection mode, 1: Modify AI
	Type *uint64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Instance type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

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

// Predefined struct for user
type ModifyHostModeResponseParams struct {
	// Operation status code: if all resource operations succeed, the success status code is returned; if any resource operation fails, the content of Message needs to be parsed to see which resource failed.
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type ModifyHostRequestParams struct {
	// Edited domain configuration information
	Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"`

	// Unique Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type ModifyHostRequest struct {
	*tchttp.BaseRequest
	
	// Edited domain configuration information
	Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"`

	// Unique Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

// Predefined struct for user
type ModifyHostResponseParams struct {
	// Edited domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

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

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

// Predefined struct for user
type ModifyHostStatusRequestParams struct {
	// Domain status list
	HostsStatus []*HostStatus `json:"HostsStatus,omitnil,omitempty" name:"HostsStatus"`
}

type ModifyHostStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain status list
	HostsStatus []*HostStatus `json:"HostsStatus,omitnil,omitempty" name:"HostsStatus"`
}

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

// Predefined struct for user
type ModifyHostStatusResponseParams struct {
	// Successful status code, needs JSON decoding before use, the returned format is {Domain:Status}, successful status code is Success, others are failed status codes (YunAPI Defined Error Codes)
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

// Predefined struct for user
type ModifyInstanceElasticModeRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Elastic billing switch.
	Mode *int64 `json:"Mode,omitnil,omitempty" name:"Mode"`
}

type ModifyInstanceElasticModeRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Elastic billing switch.
	Mode *int64 `json:"Mode,omitnil,omitempty" name:"Mode"`
}

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

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

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

// Predefined struct for user
type ModifyInstanceNameRequestParams struct {
	// New name.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Version
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

type ModifyInstanceNameRequest struct {
	*tchttp.BaseRequest
	
	// New name.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Version
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

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

// Predefined struct for user
type ModifyInstanceNameResponseParams struct {
	// Modification status: 0 indicates success
	ModifyCode *int64 `json:"ModifyCode,omitnil,omitempty" name:"ModifyCode"`

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

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

// Predefined struct for user
type ModifyInstanceQpsLimitRequestParams struct {
	// Package instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// QPS cap
	QpsLimit *int64 `json:"QpsLimit,omitnil,omitempty" name:"QpsLimit"`
}

type ModifyInstanceQpsLimitRequest struct {
	*tchttp.BaseRequest
	
	// Package instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// QPS cap
	QpsLimit *int64 `json:"QpsLimit,omitnil,omitempty" name:"QpsLimit"`
}

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

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

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

// Predefined struct for user
type ModifyInstanceRenewFlagRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Renewal switch
	RenewFlag *int64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

type ModifyInstanceRenewFlagRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Renewal switch
	RenewFlag *int64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

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

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

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

// Predefined struct for user
type ModifyIpAccessControlRequestParams struct {
	// Specific domain name, for example, test.qcloudwaf.com.
	// Global domain name, that is, global.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// IP parameter list.
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`

	// 42: blocklist; 40: allowlist.
	ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// valid_ts indicates a valid date. Its value is a second-level timestamp, such as 1680570420, which indicates 2023-04-04 09:07:00.
	//
	// Deprecated: ValidTS is deprecated.
	ValidTS *int64 `json:"ValidTS,omitnil,omitempty" name:"ValidTS"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// WAF instance type: sparta-waf for SaaS WAF, clb-waf for CLB WAF.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Batch protection IP blocklists/allowlists or not. If yes, the value is batch; otherwise, it is empty.
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// Remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Scheduled configuration type.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Details of scheduled configuration.
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

type ModifyIpAccessControlRequest struct {
	*tchttp.BaseRequest
	
	// Specific domain name, for example, test.qcloudwaf.com.
	// Global domain name, that is, global.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// IP parameter list.
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`

	// 42: blocklist; 40: allowlist.
	ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// valid_ts indicates a valid date. Its value is a second-level timestamp, such as 1680570420, which indicates 2023-04-04 09:07:00.
	ValidTS *int64 `json:"ValidTS,omitnil,omitempty" name:"ValidTS"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// WAF instance type: sparta-waf for SaaS WAF, clb-waf for CLB WAF.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Batch protection IP blocklists/allowlists or not. If yes, the value is batch; otherwise, it is empty.
	SourceType *string `json:"SourceType,omitnil,omitempty" name:"SourceType"`

	// Remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Scheduled configuration type.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Details of scheduled configuration.
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`
}

func (r *ModifyIpAccessControlRequest) 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 *ModifyIpAccessControlRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "IpList")
	delete(f, "ActionType")
	delete(f, "RuleId")
	delete(f, "ValidTS")
	delete(f, "InstanceId")
	delete(f, "Edition")
	delete(f, "SourceType")
	delete(f, "Note")
	delete(f, "JobType")
	delete(f, "JobDateTime")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyIpAccessControlRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

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

// Predefined struct for user
type ModifyModuleStatusRequestParams struct {
	// Domain to be set
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Enabling status of the web security module. The value is 0 or 1.
	WebSecurity *uint64 `json:"WebSecurity,omitnil,omitempty" name:"WebSecurity"`

	// Access control module switch: 0 or 1
	AccessControl *uint64 `json:"AccessControl,omitnil,omitempty" name:"AccessControl"`

	// CC module switch, 0 or 1
	CcProtection *uint64 `json:"CcProtection,omitnil,omitempty" name:"CcProtection"`

	// API security module switch, 0 or 1
	ApiProtection *uint64 `json:"ApiProtection,omitnil,omitempty" name:"ApiProtection"`

	// Tamper-proof module switch: 0 or 1
	AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"`

	// Leakage prevention module switch: 0 or 1
	AntiLeakage *uint64 `json:"AntiLeakage,omitnil,omitempty" name:"AntiLeakage"`

	// Traffic limiting module switch: 0 or 1
	RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"`
}

type ModifyModuleStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain to be set
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Enabling status of the web security module. The value is 0 or 1.
	WebSecurity *uint64 `json:"WebSecurity,omitnil,omitempty" name:"WebSecurity"`

	// Access control module switch: 0 or 1
	AccessControl *uint64 `json:"AccessControl,omitnil,omitempty" name:"AccessControl"`

	// CC module switch, 0 or 1
	CcProtection *uint64 `json:"CcProtection,omitnil,omitempty" name:"CcProtection"`

	// API security module switch, 0 or 1
	ApiProtection *uint64 `json:"ApiProtection,omitnil,omitempty" name:"ApiProtection"`

	// Tamper-proof module switch: 0 or 1
	AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"`

	// Leakage prevention module switch: 0 or 1
	AntiLeakage *uint64 `json:"AntiLeakage,omitnil,omitempty" name:"AntiLeakage"`

	// Traffic limiting module switch: 0 or 1
	RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"`
}

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

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

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

// Predefined struct for user
type ModifyObjectRequestParams struct {
	// Modifies the object identifier
	ObjectId *string `json:"ObjectId,omitnil,omitempty" name:"ObjectId"`

	// Action type. Status: change enabling status; InstanceId: bind to an instance; Proxy: set the proxy status.
	OpType *string `json:"OpType,omitnil,omitempty" name:"OpType"`

	// New WAF switch status, considered successful if identical to existing status
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// New instance ID: considered a successful modification if identical to an already bound instance
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Whether to enable proxy. 0: do not enable; 1: use the first IP address in XFF as the client IP address; 2: use remote_addr as the client IP address; 3: obtain the client IP address from the specified header field that is given in IpHeaders. (This value is effective when OpType is set to Status or Proxy.)
	Proxy *uint64 `json:"Proxy,omitnil,omitempty" name:"Proxy"`

	// This parameter indicates a custom header and is required when IsCdn is set to 3. (The value is effective when OpType is set to Status or Proxy.)
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`
}

type ModifyObjectRequest struct {
	*tchttp.BaseRequest
	
	// Modifies the object identifier
	ObjectId *string `json:"ObjectId,omitnil,omitempty" name:"ObjectId"`

	// Action type. Status: change enabling status; InstanceId: bind to an instance; Proxy: set the proxy status.
	OpType *string `json:"OpType,omitnil,omitempty" name:"OpType"`

	// New WAF switch status, considered successful if identical to existing status
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// New instance ID: considered a successful modification if identical to an already bound instance
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Whether to enable proxy. 0: do not enable; 1: use the first IP address in XFF as the client IP address; 2: use remote_addr as the client IP address; 3: obtain the client IP address from the specified header field that is given in IpHeaders. (This value is effective when OpType is set to Status or Proxy.)
	Proxy *uint64 `json:"Proxy,omitnil,omitempty" name:"Proxy"`

	// This parameter indicates a custom header and is required when IsCdn is set to 3. (The value is effective when OpType is set to Status or Proxy.)
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`
}

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

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

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

// Predefined struct for user
type ModifyOwaspRuleStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule switch. valid values: 0 (disabled), 1 (enabled), 2 (observation only).
	RuleStatus *int64 `json:"RuleStatus,omitnil,omitempty" name:"RuleStatus"`

	// Specifies whether to select all.
	SelectAll *bool `json:"SelectAll,omitnil,omitempty" name:"SelectAll"`

	// Rule ID list
	RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"`

	// If reverse requires the input of data type.
	TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"`

	// Reason for modification. valid values: 0: none (compatibility record is empty). 1: avoid false positives due to business characteristics. 2: reporting of rule-based false positives. 3: gray release of core business rules. 4: others.
	Reason *int64 `json:"Reason,omitnil,omitempty" name:"Reason"`
}

type ModifyOwaspRuleStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule switch. valid values: 0 (disabled), 1 (enabled), 2 (observation only).
	RuleStatus *int64 `json:"RuleStatus,omitnil,omitempty" name:"RuleStatus"`

	// Specifies whether to select all.
	SelectAll *bool `json:"SelectAll,omitnil,omitempty" name:"SelectAll"`

	// Rule ID list
	RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"`

	// If reverse requires the input of data type.
	TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"`

	// Reason for modification. valid values: 0: none (compatibility record is empty). 1: avoid false positives due to business characteristics. 2: reporting of rule-based false positives. 3: gray release of core business rules. 4: others.
	Reason *int64 `json:"Reason,omitnil,omitempty" name:"Reason"`
}

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

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

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

// Predefined struct for user
type ModifyOwaspRuleTypeActionRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule type ID list.
	TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"`

	// Protection mode of the rule type. valid values: 0 (observation), 1 (intercept).
	RuleTypeAction *int64 `json:"RuleTypeAction,omitnil,omitempty" name:"RuleTypeAction"`
}

type ModifyOwaspRuleTypeActionRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule type ID list.
	TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"`

	// Protection mode of the rule type. valid values: 0 (observation), 1 (intercept).
	RuleTypeAction *int64 `json:"RuleTypeAction,omitnil,omitempty" name:"RuleTypeAction"`
}

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

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

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

// Predefined struct for user
type ModifyOwaspRuleTypeLevelRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule type ID list.
	TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"`

	// Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).
	RuleTypeLevel *int64 `json:"RuleTypeLevel,omitnil,omitempty" name:"RuleTypeLevel"`
}

type ModifyOwaspRuleTypeLevelRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule type ID list.
	TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"`

	// Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).
	RuleTypeLevel *int64 `json:"RuleTypeLevel,omitnil,omitempty" name:"RuleTypeLevel"`
}

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

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

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

// Predefined struct for user
type ModifyOwaspRuleTypeStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule type ID list.
	TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"`

	// The switch status of the rule type. valid values: 0 (disabled), 1 (enabled).
	RuleTypeStatus *int64 `json:"RuleTypeStatus,omitnil,omitempty" name:"RuleTypeStatus"`
}

type ModifyOwaspRuleTypeStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Rule type ID list.
	TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"`

	// The switch status of the rule type. valid values: 0 (disabled), 1 (enabled).
	RuleTypeStatus *int64 `json:"RuleTypeStatus,omitnil,omitempty" name:"RuleTypeStatus"`
}

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

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

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

// Predefined struct for user
type ModifyOwaspWhiteRuleRequestParams struct {
	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// Rule-Based matching policy list.
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// ID list of allowlisted rules.
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`

	// Allowlist type. valid values: 0 (allowlisting by specific rule ID), 1 (allowlisting by rule type).
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// If the JobDateTime field is not set, this field is used. 0 means permanent, other values indicate the cutoff time for scheduled effect (unit: seconds).
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Rule status. valid values: 0 (disabled), 1 (enabled). enabled by default.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type ModifyOwaspWhiteRuleRequest struct {
	*tchttp.BaseRequest
	
	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// Rule-Based matching policy list.
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

	// ID list of allowlisted rules.
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`

	// Allowlist type. valid values: 0 (allowlisting by specific rule ID), 1 (allowlisting by rule type).
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution.
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// If the JobDateTime field is not set, this field is used. 0 means permanent, other values indicate the cutoff time for scheduled effect (unit: seconds).
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Rule status. valid values: 0 (disabled), 1 (enabled). enabled by default.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

func (r *ModifyOwaspWhiteRuleRequest) 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 *ModifyOwaspWhiteRuleRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "RuleId")
	delete(f, "Name")
	delete(f, "Domain")
	delete(f, "Strategies")
	delete(f, "Ids")
	delete(f, "Type")
	delete(f, "JobType")
	delete(f, "JobDateTime")
	delete(f, "ExpireTime")
	delete(f, "Status")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyOwaspWhiteRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

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

// Predefined struct for user
type ModifyProtectionStatusRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

type ModifyProtectionStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Status
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`
}

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

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

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

// Predefined struct for user
type ModifySpartaProtectionModeRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Protection status:
	// 10: rule-based observation and AI disabling; 11: rule- and AI-based observation; 12: rule-based observation and AI-based interception
	// 20: rule-based interception and AI disabling; 21: rule-based interception and AI-based observation; 22: rule- and AI-based interception
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// 0 is for modifying the Rule Engine Status; 1 is for modifying the AI Status
	Type *uint64 `json:"Type,omitnil,omitempty" name:"Type"`
}

type ModifySpartaProtectionModeRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Protection status:
	// 10: rule-based observation and AI disabling; 11: rule- and AI-based observation; 12: rule-based observation and AI-based interception
	// 20: rule-based interception and AI disabling; 21: rule-based interception and AI-based observation; 22: rule- and AI-based interception
	Mode *uint64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Version of WAF. clb-waf indicates CLB WAF; sparta-waf indicates SaaS WAF. sparta-waf by default.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// 0 is for modifying the Rule Engine Status; 1 is for modifying the AI Status
	Type *uint64 `json:"Type,omitnil,omitempty" name:"Type"`
}

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

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

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

// Predefined struct for user
type ModifySpartaProtectionRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Required. Unique domain name ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Required. Instance ID of the domain name
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Certificate type. 0: no certificate, with only the HTTP listening port configured; 1: self-owned certificate; 2: managed certificate.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// When CertType is 1, this parameter is required, indicating the self-owned certificate chain
	Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"`

	// When CertType=1, this parameter is required, indicating the private key of the self-owned certificate.
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// When CertType is 2, this parameter must be filled, indicating the certificate ID hosted on Tencent Cloud's SSL platform
	SSLId *string `json:"SSLId,omitnil,omitempty" name:"SSLId"`

	// Whether a layer-7 proxy service is deployed before the WAF. 0: No proxy service is deployed; 1: The proxy service is deployed. The WAF will use XFF to obtain the client IP address; 2: The proxy service is deployed. The WAF will use remote_addr to obtain the client IP address; 3: The proxy service is deployed. The WAF will use a custom header in ip_headers to obtain the client IP address.
	IsCdn *int64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// Origin-pull protocol for HTTPS when the service is configured with an HTTPS port.
	// http: Use the HTTP protocol for origin-pull. It is used with HttpsUpstreamPort.
	// https: Use the HTTPS protocol for origin-pull.
	UpstreamScheme *string `json:"UpstreamScheme,omitnil,omitempty" name:"UpstreamScheme"`

	// HTTPS upstream port, required only when UpstreamScheme is http
	HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"`

	// Whether to enable forced redirection from HTTP to HTTPS. 0: disable; 1: enable
	HttpsRewrite *uint64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"`

	// upstream type. 0: proxy to upstream by IP; 1: proxy to upstream by domain name
	UpstreamType *int64 `json:"UpstreamType,omitnil,omitempty" name:"UpstreamType"`

	// Upstream domain when proxy to upstream by domain. When UpstreamType=1, this field needs to be filled
	UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"`

	// Upstream IP list when proxy to upstream by IP. When UpstreamType=0, this field is required
	SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"`

	// Whether to enable HTTP2. You should enable HTTPS as well. 0: disable; 1: enable
	IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"`

	// Whether to enable WebSocket. 0: disable; 1: enable
	IsWebsocket *int64 `json:"IsWebsocket,omitnil,omitempty" name:"IsWebsocket"`

	// Load balancing policy for upstream. 0: round-robin scheduling; 1: IP hash; 2: weighted round-robin scheduling
	LoadBalance *int64 `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"`

	// To be deprecated, can be left blank. Whether to enable grayscale: 0 indicates not to enable grayscale.
	IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"`

	// Instance type of the domain name
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Port information, which can be obtained through the DescribeDomains API
	Ports []*SpartaProtectionPort `json:"Ports,omitnil,omitempty" name:"Ports"`

	// Whether to enable persistent connection. 0: non-persistent connection; 1: persistent connection
	IsKeepAlive *string `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"`

	// To be deprecated. Currently, set this parameter to 0. Anycast IP type switch. 0: common IP; 1: Anycast IP
	Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"`

	// Weight of each IP in the upstream IP List, corresponding to SrcList. Required only when UpstreamType is 0, and SrcList contains multiple IPs, and LoadBalance is 2; otherwise, fill in [ ].
	Weights []*int64 `json:"Weights,omitnil,omitempty" name:"Weights"`

	// Whether to enable proactive health detection. 0: disable; 1: enable
	ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"`

	// TLS version information
	TLSVersion *int64 `json:"TLSVersion,omitnil,omitempty" name:"TLSVersion"`

	// Cipher suite information
	Ciphers []*int64 `json:"Ciphers,omitnil,omitempty" name:"Ciphers"`

	// Cipher suite template. 0: default template (no selection); 1: general template; 2: secure template; 3: custom template
	CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"`

	// Read timeout between WAF and upstream server, 300s by default.
	ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"`

	// WAF and origin server write timeout, 300s by default.
	ProxySendTimeout *int64 `json:"ProxySendTimeout,omitnil,omitempty" name:"ProxySendTimeout"`

	// SNI type when proxy to upstream.
	// 0: Disable SNI and do not configure server_name in client_hello.
	// 1: Enable SNI. server_name in client_hello is the protected domain name.
	// 2: Enable SNI. SNI is the origin server domain name when proxy to upstream by domain.
	// 3: Enable SNI. SNI is the custom domain name.
	SniType *int64 `json:"SniType,omitnil,omitempty" name:"SniType"`

	// When SniType=3, this parameter is required, indicating a custom SNI;
	SniHost *string `json:"SniHost,omitnil,omitempty" name:"SniHost"`

	// IsCdn=3 required for this parameter, indicates custom header
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// Whether to enable XFF reset. 0: disable; 1: enable
	XFFReset *int64 `json:"XFFReset,omitnil,omitempty" name:"XFFReset"`

	// Domain name remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Custom upstream host. The default value is a null string, indicating that the protected domain name is used as the upstream host.
	UpstreamHost *string `json:"UpstreamHost,omitnil,omitempty" name:"UpstreamHost"`

	// Whether to enable caching. 0: disable; 1: enable.
	ProxyBuffer *int64 `json:"ProxyBuffer,omitnil,omitempty" name:"ProxyBuffer"`

	// Whether to enable the test. 0: disable; 1: enable. The test is enabled by default.
	ProbeStatus *int64 `json:"ProbeStatus,omitnil,omitempty" name:"ProbeStatus"`

	// SM option. 0: do not enable SM; 1: add support for SM based on the existing TLS option; 2: enable SM and support only SM client access.
	GmType *int64 `json:"GmType,omitnil,omitempty" name:"GmType"`

	// SM certificate type. 0: no SM certificate is available; 1: the certificate is a self-owned SM certificate; 2: the certificate is a managed SM certificate.
	GmCertType *int64 `json:"GmCertType,omitnil,omitempty" name:"GmCertType"`

	// When GmCertType is 1, this parameter needs to be set, indicating the certificate chain of the self-owned SM certificate.
	GmCert *string `json:"GmCert,omitnil,omitempty" name:"GmCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the self-owned SM certificate.
	GmPrivateKey *string `json:"GmPrivateKey,omitnil,omitempty" name:"GmPrivateKey"`

	// When GmCertType is 1, this parameter needs to be set, indicating the encryption certificate of the self-owned SM certificate.
	GmEncCert *string `json:"GmEncCert,omitnil,omitempty" name:"GmEncCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the encryption certificate for the self-owned SM certificate.
	GmEncPrivateKey *string `json:"GmEncPrivateKey,omitnil,omitempty" name:"GmEncPrivateKey"`

	// When GmCertType is 2, this parameter needs to be set, indicating the ID of the certificate managed by the Tencent Cloud SSL platform.
	GmSSLId *string `json:"GmSSLId,omitnil,omitempty" name:"GmSSLId"`
}

type ModifySpartaProtectionRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Required. Unique domain name ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Required. Instance ID of the domain name
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`

	// Certificate type. 0: no certificate, with only the HTTP listening port configured; 1: self-owned certificate; 2: managed certificate.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// When CertType is 1, this parameter is required, indicating the self-owned certificate chain
	Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"`

	// When CertType=1, this parameter is required, indicating the private key of the self-owned certificate.
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

	// When CertType is 2, this parameter must be filled, indicating the certificate ID hosted on Tencent Cloud's SSL platform
	SSLId *string `json:"SSLId,omitnil,omitempty" name:"SSLId"`

	// Whether a layer-7 proxy service is deployed before the WAF. 0: No proxy service is deployed; 1: The proxy service is deployed. The WAF will use XFF to obtain the client IP address; 2: The proxy service is deployed. The WAF will use remote_addr to obtain the client IP address; 3: The proxy service is deployed. The WAF will use a custom header in ip_headers to obtain the client IP address.
	IsCdn *int64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"`

	// Origin-pull protocol for HTTPS when the service is configured with an HTTPS port.
	// http: Use the HTTP protocol for origin-pull. It is used with HttpsUpstreamPort.
	// https: Use the HTTPS protocol for origin-pull.
	UpstreamScheme *string `json:"UpstreamScheme,omitnil,omitempty" name:"UpstreamScheme"`

	// HTTPS upstream port, required only when UpstreamScheme is http
	HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"`

	// Whether to enable forced redirection from HTTP to HTTPS. 0: disable; 1: enable
	HttpsRewrite *uint64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"`

	// upstream type. 0: proxy to upstream by IP; 1: proxy to upstream by domain name
	UpstreamType *int64 `json:"UpstreamType,omitnil,omitempty" name:"UpstreamType"`

	// Upstream domain when proxy to upstream by domain. When UpstreamType=1, this field needs to be filled
	UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"`

	// Upstream IP list when proxy to upstream by IP. When UpstreamType=0, this field is required
	SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"`

	// Whether to enable HTTP2. You should enable HTTPS as well. 0: disable; 1: enable
	IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"`

	// Whether to enable WebSocket. 0: disable; 1: enable
	IsWebsocket *int64 `json:"IsWebsocket,omitnil,omitempty" name:"IsWebsocket"`

	// Load balancing policy for upstream. 0: round-robin scheduling; 1: IP hash; 2: weighted round-robin scheduling
	LoadBalance *int64 `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"`

	// To be deprecated, can be left blank. Whether to enable grayscale: 0 indicates not to enable grayscale.
	IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"`

	// Instance type of the domain name
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Port information, which can be obtained through the DescribeDomains API
	Ports []*SpartaProtectionPort `json:"Ports,omitnil,omitempty" name:"Ports"`

	// Whether to enable persistent connection. 0: non-persistent connection; 1: persistent connection
	IsKeepAlive *string `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"`

	// To be deprecated. Currently, set this parameter to 0. Anycast IP type switch. 0: common IP; 1: Anycast IP
	Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"`

	// Weight of each IP in the upstream IP List, corresponding to SrcList. Required only when UpstreamType is 0, and SrcList contains multiple IPs, and LoadBalance is 2; otherwise, fill in [ ].
	Weights []*int64 `json:"Weights,omitnil,omitempty" name:"Weights"`

	// Whether to enable proactive health detection. 0: disable; 1: enable
	ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"`

	// TLS version information
	TLSVersion *int64 `json:"TLSVersion,omitnil,omitempty" name:"TLSVersion"`

	// Cipher suite information
	Ciphers []*int64 `json:"Ciphers,omitnil,omitempty" name:"Ciphers"`

	// Cipher suite template. 0: default template (no selection); 1: general template; 2: secure template; 3: custom template
	CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"`

	// Read timeout between WAF and upstream server, 300s by default.
	ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"`

	// WAF and origin server write timeout, 300s by default.
	ProxySendTimeout *int64 `json:"ProxySendTimeout,omitnil,omitempty" name:"ProxySendTimeout"`

	// SNI type when proxy to upstream.
	// 0: Disable SNI and do not configure server_name in client_hello.
	// 1: Enable SNI. server_name in client_hello is the protected domain name.
	// 2: Enable SNI. SNI is the origin server domain name when proxy to upstream by domain.
	// 3: Enable SNI. SNI is the custom domain name.
	SniType *int64 `json:"SniType,omitnil,omitempty" name:"SniType"`

	// When SniType=3, this parameter is required, indicating a custom SNI;
	SniHost *string `json:"SniHost,omitnil,omitempty" name:"SniHost"`

	// IsCdn=3 required for this parameter, indicates custom header
	IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"`

	// Whether to enable XFF reset. 0: disable; 1: enable
	XFFReset *int64 `json:"XFFReset,omitnil,omitempty" name:"XFFReset"`

	// Domain name remarks
	Note *string `json:"Note,omitnil,omitempty" name:"Note"`

	// Custom upstream host. The default value is a null string, indicating that the protected domain name is used as the upstream host.
	UpstreamHost *string `json:"UpstreamHost,omitnil,omitempty" name:"UpstreamHost"`

	// Whether to enable caching. 0: disable; 1: enable.
	ProxyBuffer *int64 `json:"ProxyBuffer,omitnil,omitempty" name:"ProxyBuffer"`

	// Whether to enable the test. 0: disable; 1: enable. The test is enabled by default.
	ProbeStatus *int64 `json:"ProbeStatus,omitnil,omitempty" name:"ProbeStatus"`

	// SM option. 0: do not enable SM; 1: add support for SM based on the existing TLS option; 2: enable SM and support only SM client access.
	GmType *int64 `json:"GmType,omitnil,omitempty" name:"GmType"`

	// SM certificate type. 0: no SM certificate is available; 1: the certificate is a self-owned SM certificate; 2: the certificate is a managed SM certificate.
	GmCertType *int64 `json:"GmCertType,omitnil,omitempty" name:"GmCertType"`

	// When GmCertType is 1, this parameter needs to be set, indicating the certificate chain of the self-owned SM certificate.
	GmCert *string `json:"GmCert,omitnil,omitempty" name:"GmCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the self-owned SM certificate.
	GmPrivateKey *string `json:"GmPrivateKey,omitnil,omitempty" name:"GmPrivateKey"`

	// When GmCertType is 1, this parameter needs to be set, indicating the encryption certificate of the self-owned SM certificate.
	GmEncCert *string `json:"GmEncCert,omitnil,omitempty" name:"GmEncCert"`

	// When GmCertType is 1, this parameter needs to be set, indicating the private key of the encryption certificate for the self-owned SM certificate.
	GmEncPrivateKey *string `json:"GmEncPrivateKey,omitnil,omitempty" name:"GmEncPrivateKey"`

	// When GmCertType is 2, this parameter needs to be set, indicating the ID of the certificate managed by the Tencent Cloud SSL platform.
	GmSSLId *string `json:"GmSSLId,omitnil,omitempty" name:"GmSSLId"`
}

func (r *ModifySpartaProtectionRequest) 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 *ModifySpartaProtectionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "DomainId")
	delete(f, "InstanceID")
	delete(f, "CertType")
	delete(f, "Cert")
	delete(f, "PrivateKey")
	delete(f, "SSLId")
	delete(f, "IsCdn")
	delete(f, "UpstreamScheme")
	delete(f, "HttpsUpstreamPort")
	delete(f, "HttpsRewrite")
	delete(f, "UpstreamType")
	delete(f, "UpstreamDomain")
	delete(f, "SrcList")
	delete(f, "IsHttp2")
	delete(f, "IsWebsocket")
	delete(f, "LoadBalance")
	delete(f, "IsGray")
	delete(f, "Edition")
	delete(f, "Ports")
	delete(f, "IsKeepAlive")
	delete(f, "Anycast")
	delete(f, "Weights")
	delete(f, "ActiveCheck")
	delete(f, "TLSVersion")
	delete(f, "Ciphers")
	delete(f, "CipherTemplate")
	delete(f, "ProxyReadTimeout")
	delete(f, "ProxySendTimeout")
	delete(f, "SniType")
	delete(f, "SniHost")
	delete(f, "IpHeaders")
	delete(f, "XFFReset")
	delete(f, "Note")
	delete(f, "UpstreamHost")
	delete(f, "ProxyBuffer")
	delete(f, "ProbeStatus")
	delete(f, "GmType")
	delete(f, "GmCertType")
	delete(f, "GmCert")
	delete(f, "GmPrivateKey")
	delete(f, "GmEncCert")
	delete(f, "GmEncPrivateKey")
	delete(f, "GmSSLId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifySpartaProtectionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

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

// Predefined struct for user
type ModifyUserLevelRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Protection rule level: 300=standard, 400=extended
	Level *uint64 `json:"Level,omitnil,omitempty" name:"Level"`
}

type ModifyUserLevelRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Protection rule level: 300=standard, 400=extended
	Level *uint64 `json:"Level,omitnil,omitempty" name:"Level"`
}

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

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

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

// Predefined struct for user
type ModifyUserSignatureRuleRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Main class ID
	MainClassID *string `json:"MainClassID,omitnil,omitempty" name:"MainClassID"`

	// Main class switch 0=off, 1=on, 2=alarm only
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// List of rules issued for modification
	RuleID []*ReqUserRule `json:"RuleID,omitnil,omitempty" name:"RuleID"`
}

type ModifyUserSignatureRuleRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Main class ID
	MainClassID *string `json:"MainClassID,omitnil,omitempty" name:"MainClassID"`

	// Main class switch 0=off, 1=on, 2=alarm only
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// List of rules issued for modification
	RuleID []*ReqUserRule `json:"RuleID,omitnil,omitempty" name:"RuleID"`
}

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

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

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

// Predefined struct for user
type ModifyWebshellStatusRequestParams struct {
	// Domain Webshell Status
	Webshell *WebshellStatus `json:"Webshell,omitnil,omitempty" name:"Webshell"`
}

type ModifyWebshellStatusRequest struct {
	*tchttp.BaseRequest
	
	// Domain Webshell Status
	Webshell *WebshellStatus `json:"Webshell,omitnil,omitempty" name:"Webshell"`
}

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

// Predefined struct for user
type ModifyWebshellStatusResponseParams struct {
	// Successful status code, needs JSON decoding before use, the returned format is {Domain:Status}, successful status code is Success, others are failed status codes (YunAPI Defined Error Codes)
	Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"`

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

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

type OwaspRule struct {
	// Rule ID
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Rule switch. valid values: 0 (disabled), 1 (enabled), 2 (observation only).
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).
	Level *int64 `json:"Level,omitnil,omitempty" name:"Level"`

	// Threat level. valid values: 0 (unknown), 100 (low risk), 200 (medium risk), 300 (high risk), 400 (critical).
	VulLevel *int64 `json:"VulLevel,omitnil,omitempty" name:"VulLevel"`

	// CVE ID
	CveID *string `json:"CveID,omitnil,omitempty" name:"CveID"`

	// Specifies the rule type ID.
	TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"`

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

	// Update time.
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`

	// Whether the user is locked.
	Locked *int64 `json:"Locked,omitnil,omitempty" name:"Locked"`

	// Reason for modification
	// 
	// 0: none (compatibility records are empty).
	// 1: avoid false positives due to business characteristics.
	// 2: reporting of rule-based false positives.
	// 3: gray release of core business rules.
	// 4: others
	Reason *int64 `json:"Reason,omitnil,omitempty" name:"Reason"`
}

type OwaspRuleType struct {
	// Type ID
	TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"`

	// Type name
	TypeName *string `json:"TypeName,omitnil,omitempty" name:"TypeName"`

	// Type description.
	// 
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Data type category.
	Classification *string `json:"Classification,omitnil,omitempty" name:"Classification"`

	// Protection mode of the rule type. valid values: 0 (observation), 1 (intercept).
	Action *int64 `json:"Action,omitnil,omitempty" name:"Action"`

	// Protection level of the rule type. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).
	Level *int64 `json:"Level,omitnil,omitempty" name:"Level"`

	// The switch status of the rule type. valid values: 0 (disabled), 1 (enabled).
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Specifies all rules under the rule type. always.
	TotalRule *uint64 `json:"TotalRule,omitnil,omitempty" name:"TotalRule"`

	// Indicates the total number of rules enabled under the rule type.
	ActiveRule *uint64 `json:"ActiveRule,omitnil,omitempty" name:"ActiveRule"`
}

type OwaspWhiteRule struct {
	// Rule ID of the allowlist.
	RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// ID list of allowlisted rules.
	Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"`

	// Allowlist rule state. valid values: 0 (disabled), 1 (enabled).
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Allowlist type. valid values: 0 (allowlisting by specific rule ID), 1 (allowlisting by rule type).
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Rule-Based matching policy list.
	Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"`

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

	// Modification time
	UpdateTime *string `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`

	// Scheduled task type
	JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"`

	// Scheduled task configuration
	JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"`

	// Periodic task granularity.
	CronType *string `json:"CronType,omitnil,omitempty" name:"CronType"`

	// Whether there is currently valid.
	ValidStatus *bool `json:"ValidStatus,omitnil,omitempty" name:"ValidStatus"`
}

type PeakPointsItem struct {
	// Second-level Timestamp
	Time *uint64 `json:"Time,omitnil,omitempty" name:"Time"`

	// QPS
	Access *uint64 `json:"Access,omitnil,omitempty" name:"Access"`

	// Upstream bandwidth peak, unit: B
	Up *uint64 `json:"Up,omitnil,omitempty" name:"Up"`

	// Downstream bandwidth peak, unit: B
	Down *uint64 `json:"Down,omitnil,omitempty" name:"Down"`

	// Web attack count
	Attack *uint64 `json:"Attack,omitnil,omitempty" name:"Attack"`

	// CC attack count
	Cc *uint64 `json:"Cc,omitnil,omitempty" name:"Cc"`

	// Bot qps
	BotAccess *uint64 `json:"BotAccess,omitnil,omitempty" name:"BotAccess"`

	// Number of 5xx status codes returned by WAF to client
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	StatusServerError *uint64 `json:"StatusServerError,omitnil,omitempty" name:"StatusServerError"`

	// Number of times WAF returned 4xx status codes to client
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	StatusClientError *uint64 `json:"StatusClientError,omitnil,omitempty" name:"StatusClientError"`

	// WAF Returned to Client Status Code 302 Count
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	StatusRedirect *uint64 `json:"StatusRedirect,omitnil,omitempty" name:"StatusRedirect"`

	// Number of Times WAF Returns Status Code 202 to Client
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	StatusOk *uint64 `json:"StatusOk,omitnil,omitempty" name:"StatusOk"`

	// Number of Times the Origin Server Returned 5xx Status Codes to WAF
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	UpstreamServerError *uint64 `json:"UpstreamServerError,omitnil,omitempty" name:"UpstreamServerError"`

	// Number of times the origin server returned 4xx status codes to WAF
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	UpstreamClientError *uint64 `json:"UpstreamClientError,omitnil,omitempty" name:"UpstreamClientError"`

	// Number of times the original server returns status code 302 to WAF
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	UpstreamRedirect *uint64 `json:"UpstreamRedirect,omitnil,omitempty" name:"UpstreamRedirect"`

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

	// Tamper-Proof Attempts
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Tamper *uint64 `json:"Tamper,omitnil,omitempty" name:"Tamper"`

	// Information Leakage Prevention Count
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Leak *uint64 `json:"Leak,omitnil,omitempty" name:"Leak"`

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

	// Mini Program QPS
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	WxAccess *uint64 `json:"WxAccess,omitnil,omitempty" name:"WxAccess"`

	// Number of mini program requests
	// Note: This field may return null, indicating that no valid values can be obtained.
	WxCount *uint64 `json:"WxCount,omitnil,omitempty" name:"WxCount"`

	// Peak upstream bandwidth of the mini program. Unit: B
	// Note: This field may return null, indicating that no valid values can be obtained.
	WxUp *uint64 `json:"WxUp,omitnil,omitempty" name:"WxUp"`

	// Peak downstream bandwidth of the mini program. Unit: B
	// Note: This field may return null, indicating that no valid values can be obtained.
	WxDown *uint64 `json:"WxDown,omitnil,omitempty" name:"WxDown"`
}

type PiechartItem struct {
	// Type
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

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

type PortInfo struct {
	// Nginx Server ID
	NginxServerId *uint64 `json:"NginxServerId,omitnil,omitempty" name:"NginxServerId"`

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

	// Protocol Corresponding to the Port
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Origin-pull port
	UpstreamPort *string `json:"UpstreamPort,omitnil,omitempty" name:"UpstreamPort"`

	// Origin-pull protocol
	UpstreamProtocol *string `json:"UpstreamProtocol,omitnil,omitempty" name:"UpstreamProtocol"`
}

type PortItem struct {
	// Listening Port Configuration
	Port *string `json:"Port,omitnil,omitempty" name:"Port"`

	// Corresponds one-to-one with ports, indicating the protocol associated with the port.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Corresponds one-to-one with port, indicates the origin port
	UpstreamPort *string `json:"UpstreamPort,omitnil,omitempty" name:"UpstreamPort"`

	// Corresponds one-to-one with Port, indicating the origin protocol
	UpstreamProtocol *string `json:"UpstreamProtocol,omitnil,omitempty" name:"UpstreamProtocol"`

	// Nginx Server ID
	NginxServerId *string `json:"NginxServerId,omitnil,omitempty" name:"NginxServerId"`
}

type QPSPackageNew struct {
	// Resource ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"`

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

	// Auto-renewal, 1: Enabled, 0: Disabled
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RenewFlag *int64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Number of Package Purchases
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Package Purchase Region, currently not used in CLB-WAF
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

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

type QpsData struct {
	// Elastic QPS Default Value
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ElasticBillingDefault *uint64 `json:"ElasticBillingDefault,omitnil,omitempty" name:"ElasticBillingDefault"`

	// Elastic QPS Minimum Value
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ElasticBillingMin *uint64 `json:"ElasticBillingMin,omitnil,omitempty" name:"ElasticBillingMin"`

	// Maximum Elastic QPS
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	ElasticBillingMax *uint64 `json:"ElasticBillingMax,omitnil,omitempty" name:"ElasticBillingMax"`

	// Maximum QPS for Business Expansion Package
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	QPSExtendMax *uint64 `json:"QPSExtendMax,omitnil,omitempty" name:"QPSExtendMax"`

	// Maximum QPS for Overseas Business Expansion Package
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	QPSExtendIntlMax *uint64 `json:"QPSExtendIntlMax,omitnil,omitempty" name:"QPSExtendIntlMax"`
}

// Predefined struct for user
type RefreshAccessCheckResultRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

type RefreshAccessCheckResultRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`
}

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

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

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

type ReqUserRule struct {
	// Feature serial number
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

	// Rule switch
	// 0: disabled
	// 1: enabled
	// 2: alarm only
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Reason for modification
	// 
	// 0: none (Compatibility records are empty.)
	// 1: avoidance of false positives due to business characteristics
	// 2: reporting of rule-based false positives
	// 3: grayscale release of core business rules
	// 4: others
	Reason *int64 `json:"Reason,omitnil,omitempty" name:"Reason"`
}

type ResponseCode struct {
	// If successful, return a success; if failed, return Cloud API Defined Error Codes
	Code *string `json:"Code,omitnil,omitempty" name:"Code"`

	// If successful, return a success; if failed, return the secondary error code of WAF Definition
	Message *string `json:"Message,omitnil,omitempty" name:"Message"`
}

// Predefined struct for user
type SearchAttackLogRequestParams struct {
	// Queried domain: use all for all domains
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Query start time
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Query end time
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// API upgrade. Input an empty string for this field. Use the Page field for page turning.
	Context *string `json:"Context,omitnil,omitempty" name:"Context"`

	// Lucene syntax.
	QueryString *string `json:"QueryString,omitnil,omitempty" name:"QueryString"`

	// Number of queries: 10 by default, up to 100
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// desc by default. Value can be set to desc or asc.
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`

	// Page number, starting from 0
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`
}

type SearchAttackLogRequest struct {
	*tchttp.BaseRequest
	
	// Queried domain: use all for all domains
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Query start time
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Query end time
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// API upgrade. Input an empty string for this field. Use the Page field for page turning.
	Context *string `json:"Context,omitnil,omitempty" name:"Context"`

	// Lucene syntax.
	QueryString *string `json:"QueryString,omitnil,omitempty" name:"QueryString"`

	// Number of queries: 10 by default, up to 100
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// desc by default. Value can be set to desc or asc.
	Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"`

	// Page number, starting from 0
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`
}

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

// Predefined struct for user
type SearchAttackLogResponseParams struct {
	// Number of attack logs returned
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// API upgrade: this field is invalid, defaults to returning an empty string
	Context *string `json:"Context,omitnil,omitempty" name:"Context"`

	// Attack log array entry content
	Data []*AttackLogInfo `json:"Data,omitnil,omitempty" name:"Data"`

	// CLS API returned content
	ListOver *bool `json:"ListOver,omitnil,omitempty" name:"ListOver"`

	// CLS API returned content, indicating whether to enable the new version index
	SqlFlag *bool `json:"SqlFlag,omitnil,omitempty" name:"SqlFlag"`

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

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

type SearchItem struct {
	// Log switch
	ClsStatus *string `json:"ClsStatus,omitnil,omitempty" name:"ClsStatus"`

	// WAF Switch
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Traffic mode
	FlowMode *string `json:"FlowMode,omitnil,omitempty" name:"FlowMode"`
}

type SessionData struct {
	// Session definition
	Res []*SessionItem `json:"Res,omitnil,omitempty" name:"Res"`
}

type SessionItem struct {
	// Type to match
	Category *string `json:"Category,omitnil,omitempty" name:"Category"`

	// Start Mode
	KeyOrStartMat *string `json:"KeyOrStartMat,omitnil,omitempty" name:"KeyOrStartMat"`

	// End Mode
	EndMat *string `json:"EndMat,omitnil,omitempty" name:"EndMat"`

	// Starting Offset
	StartOffset *string `json:"StartOffset,omitnil,omitempty" name:"StartOffset"`

	// End Offset
	EndOffset *string `json:"EndOffset,omitnil,omitempty" name:"EndOffset"`

	// Data source
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Update Timestamp
	TsVersion *string `json:"TsVersion,omitnil,omitempty" name:"TsVersion"`

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

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

	// Whether the session is being enabled
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	SessionInUsed *bool `json:"SessionInUsed,omitnil,omitempty" name:"SessionInUsed"`

	// Session-related CC Rule ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	RelatedRuleID []*int64 `json:"RelatedRuleID,omitnil,omitempty" name:"RelatedRuleID"`
}

type SpartaProtectionPort struct {
	// nginx Id
	NginxServerId *uint64 `json:"NginxServerId,omitnil,omitempty" name:"NginxServerId"`

	// Port
	Port *string `json:"Port,omitnil,omitempty" name:"Port"`

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

	// Backend port
	UpstreamPort *string `json:"UpstreamPort,omitnil,omitempty" name:"UpstreamPort"`

	// Backend protocol
	UpstreamProtocol *string `json:"UpstreamProtocol,omitnil,omitempty" name:"UpstreamProtocol"`
}

type Strategy struct {
	// Specifies the matching field.
	// 
	// Different matching fields result in different matching parameters, logical operators, and matching contents. the details are as follows:.
	// <table><thead><tr><th>Matching Field</th> <th>Matching Parameter</th> <th>Logical Symbol</th> <th>Matching Content</th></tr></thead> <tbody><tr><td>IP (source IP)</td> <td>Parameters are not supported.</td> <td>ipmatch (match)<br/>ipnmatch (mismatch)</td> <td>Multiple IP addresses are separated by commas. A maximum of 20 IP addresses are allowed.</td></tr> <tr><td>IPv6 (source IPv6)</td> <td>Parameters are not supported.</td> <td>ipmatch (match)<br/>ipnmatch (mismatch)</td> <td>A single IPv6 address is supported.</td></tr> <tr><td>Referer (referer)</td> <td>Parameters are not supported.</td> <td>empty (Content is empty.)<br/>null (do not exist)<br/>eq (equal to)<br/>neq (not equal to)<br/>contains (contain)<br/>ncontains (do not contain)<br/>len_eq (length equals to)<br/>len_gt (length is greater than)<br/>len_lt (length is less than)<br/>strprefix (prefix matching)<br/>strsuffix (suffix matching)<br/>rematch (regular expression matching)</td> <td>Enter the content, with a maximum of 512 characters.</td></tr> <tr><td>URL (request path)</td> <td>Parameters are not supported.</td> <td>eq (equal to)<br/>neq (not equal to)<br/>contains (contain)<br/>ncontains (do not contain)<br/>len_eq (length equals to)<br/>len_gt (length is greater than)<br/>len_lt (length is 
	//  less than)<br/>strprefix (prefix matching)<br/>strsuffix (suffix matching)<br/>rematch (regular expression matching)</td> <td>Enter the content starting with /, with a maximum of 512 characters.</td></tr> <tr><td>UserAgent (UserAgent)</td> <td>Parameters are not supported.</td><td>Same logical symbols as the matching field <font color="Red">Referer</font></td> <td>Enter the content with a maximum of 512 characters.</td></tr> <tr><td>HTTP_METHOD (HTTP request method)</td> <td>Parameters are not supported.</td> <td>eq (equal to)<br/>neq (not equal to)</td> <td>Enter the method name. The uppercase is recommended.</td></tr> <tr><td>QUERY_STRING (request string)</td> <td>Parameters are not supported.</td> <td>Same logical symbol as the matching field <font color="Red">Request Path</font></td><td>Enter the content with a maximum of 512 characters.</td></tr> <tr><td>GET (GET parameter value)</td> <td>Parameter entry is supported.</td> <td>contains (contain)<br/>ncontains (do not contain)<br/>len_eq (length equals to)<br/>len_gt (length is greater than)<br/>len_lt (length is less than)<br/>strprefix (prefix matching)<br/>strsuffix (suffix matching)</td> <td>Enter the content with a maximum of 512 characters.</td></tr> <tr><td>GET_PARAMS_NAMES (GET parameter name)</td> <td>Parameters are not supported.</td> <td>exist (Parameter exists.)<br/>nexist (Parameter does not exist.)<br/>len_eq (length equals to)<br/>len_gt (length is greater than)<br/>len_lt (length is less than)<br/>strprefix (prefix matching)<br/>strsuffix (suffix matching)</td><td>Enter the content with a maximum of 512 characters.</td></tr> <tr><td>POST (POST parameter value)</td> <td>Parameter entry is supported.</td> <td>Same logical symbol as the matching field <font color="Red">GET Parameter Value</font></td> <td>Enter the content with a maximum of 512 characters.</td></tr> <tr><td>GET_POST_NAMES (POST parameter name)</td> <td>Parameters are not supported.</td> <td>Same logical symbol as the matching field <font color="Red">GET Parameter Name</font></td> <td>Enter the content with a maximum of 512 characters.</td></tr> <tr><td>POST_BODY (complete body)</td> <td>Parameters are not supported.</td> <td>Same logical symbol as the matching field <font color="Red">Request Path</font></td><td>Enter the body content with a maximum of 512 characters.</td></tr> <tr><td>COOKIE (cookie)</td> <td>Parameters are not supported.</td> <td>empty (Content is empty.)<br/>null (do not exist)<br/>rematch (regular expression matching)</td> <td><font color="Red">Unsupported currently</font></td></tr> <tr><td>GET_COOKIES_NAMES (cookie parameter name)</td> <td>Parameters are not supported.</td> <td>Same logical symbol as the matching field <font color="Red">GET Parameter Name</font></td> <td>Enter the content with a maximum of 512 characters.</td></tr> <tr><td>ARGS_COOKIE (cookie parameter value)</td> <td>Parameter entry is supported.</td> <td>Same logical symbol as the matching field <font color="Red">GET Parameter Value</font></td> <td>Enter the content512 characters limit</td></tr><tr><td>GET_HEADERS_NAMES (Header parameter name)</td><td>parameter not supported</td><td>exsit (parameter exists)<br/>nexsit (parameter does not exist)<br/>len_eq (LENGTH equal)<br/>len_gt (LENGTH greater than)<br/>len_lt (LENGTH less than)<br/>strprefix (prefix match)<br/>strsuffix (suffix matching)<br/>rematch (regular expression matching)</td><td>enter CONTENT, lowercase is recommended, up to 512 characters</td></tr><tr><td>ARGS_Header (Header parameter value)</td><td>support parameter entry</td><td>contains (include)<br/>ncontains (does not include)<br/>len_eq (LENGTH equal)<br/>len_gt (LENGTH greater than)<br/>len_lt (LENGTH less than)<br/>strprefix (prefix match)<br/>strsuffix (suffix matching)<br/>rematch (regular expression matching)</td><td>enter CONTENT, up to 512 characters</td></tr><tr><td>CONTENT_LENGTH (CONTENT-LENGTH)</td><td>support parameter entry</td><td>numgt (value greater than)<br/>numlt (value smaller than)<br/>numeq (value equal to)<br/></td><td>enter an integer between 0-9999999999999</td></tr><tr><td>IP_GEO (source IP geolocation)</td><td>support parameter entry</td><td>GEO_in (belong)<br/>GEO_not_in (not_in)<br/></td><td>enter CONTENT, up to 10240 characters, format: serialized JSON, format: [{"Country":"china","Region":"guangdong","City":"shenzhen"}]</td></tr><tr><td>CAPTCHA_RISK (CAPTCHA RISK)</td><td>parameter not supported</td><td>eq (equal)<br/>neq (not equal to)<br/>belong (belong)<br/>not_belong (not belong to)<br/>null (nonexistent)<br/>exist (exist)</td><td>enter RISK level value, value range 0-255</td></tr><tr><td>CAPTCHA_DEVICE_RISK (CAPTCHA DEVICE RISK)</td><td>parameter not supported</td><td>eq (equal)<br/>neq (not equal to)<br/>belong (belong)<br/>not_belong (not belong to)<br/>null (nonexistent)<br/>exist (exist)</td><td>enter DEVICE RISK code, valid values: 101, 201, 301, 401, 501, 601, 701</td></tr><tr><td>CAPTCHAR_SCORE (CAPTCHA RISK assessment SCORE)</td><td>parameter not supported</td><td>numeq (value equal to)<br/>numgt (value greater than)<br/>numlt (value smaller than)<br/>numle (less than or equal to)<br/>numge (value is greater than or equal to)<br/>null (nonexistent)<br/>exist (exist)</td><td>enter assessment SCORE, value range 0-100</td></tr>.
	// </tbody></table>
	Field *string `json:"Field,omitnil,omitempty" name:"Field"`

	// Specifies the logic symbol. 
	// 
	// Logical symbols are divided into the following types:.
	// Empty (content is empty).
	// null (not found).
	// Eq (equal to).
	// neq (not equal to).
	// contains (contain).
	// ncontains (do not contain).
	// strprefix (prefix matching).
	// strsuffix (suffix matching).
	// Len_eq (length equals to).
	// Len_gt (length greater than).
	// Len_lt (length less than).
	// ipmatch (belong).
	// ipnmatch (not_in).
	// numgt (value greater than).
	// NumValue smaller than].
	// Value equal to.
	// numneq (value not equal to).
	// numle (less than or equal to).
	// numge (value is greater than or equal to).
	// geo_in (IP geographic belong).
	// geo_not_in (IP geographic not_in).
	// Specifies different logical operators for matching fields. for details, see the matching field table above.
	CompareFunc *string `json:"CompareFunc,omitnil,omitempty" name:"CompareFunc"`

	// Specifies the match content.
	// 
	// Currently, when the match field is COOKIE (COOKIE), match content is not required. all others are needed.
	Content *string `json:"Content,omitnil,omitempty" name:"Content"`

	// Specifies the matching parameter.
	// 
	// Configuration parameters are divided into two data types: parameter not supported and support parameters.
	// When the match field is one of the following four, the matching parameter can be entered, otherwise not supported.
	// GET (get parameter value).
	// 		
	// POST (post parameter value).
	// 		
	// ARGS_COOKIE (COOKIE parameter value).
	// 		
	// ARGS_HEADER (HEADER parameter value).
	Arg *string `json:"Arg,omitnil,omitempty" name:"Arg"`

	// Case-Sensitive.
	// Case-Insensitive.
	CaseNotSensitive *uint64 `json:"CaseNotSensitive,omitnil,omitempty" name:"CaseNotSensitive"`
}

type StrategyForAntiInfoLeak struct {
	// Matching Criteria, returncode (Response Code), keywords (Keywords), information (Sensitive Information)
	Field *string `json:"Field,omitnil,omitempty" name:"Field"`

	// Logical operator, fixed value: contains
	CompareFunc *string `json:"CompareFunc,omitnil,omitempty" name:"CompareFunc"`

	// Matching content
	// The following options are available when Field is set to information:
	// idcard (ID card), phone (phone number), and bankcard (bank card).
	// The following options are available when Field is set to returncode:
	// 400 (status code 400), 403 (status code 403), 404 (status code 404), 4xx (other 4xx status codes), 500 (status code 500), 501 (status code 501), 502 (status code 502), 504 (status code 504), and 5xx (other 5xx status codes).
	// When Field is set to keywords, users need to input the matching content themselves.
	Content *string `json:"Content,omitnil,omitempty" name:"Content"`
}

// Predefined struct for user
type SwitchElasticModeRequestParams struct {
	// Version, can only be sparta-waf, clb-waf, or cdn-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// 0 indicates Off; 1 indicates On
	Mode *int64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

type SwitchElasticModeRequest struct {
	*tchttp.BaseRequest
	
	// Version, can only be sparta-waf, clb-waf, or cdn-waf
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// 0 indicates Off; 1 indicates On
	Mode *int64 `json:"Mode,omitnil,omitempty" name:"Mode"`

	// Instance ID
	InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"`
}

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

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

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

type TLSCiphers struct {
	// TLS version ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	VersionId *int64 `json:"VersionId,omitnil,omitempty" name:"VersionId"`

	// Encryption Suite ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	CipherId *int64 `json:"CipherId,omitnil,omitempty" name:"CipherId"`

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

type TLSVersion struct {
	// ID of TLSVERSION
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	VersionId *int64 `json:"VersionId,omitnil,omitempty" name:"VersionId"`

	// TLSVERSION's Name
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	VersionName *string `json:"VersionName,omitnil,omitempty" name:"VersionName"`
}

type TargetEntity struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

type TimedJob struct {
	// Start timestamp, in seconds.
	StartDateTime *uint64 `json:"StartDateTime,omitnil,omitempty" name:"StartDateTime"`

	// End timestamp, in seconds.
	EndDateTime *uint64 `json:"EndDateTime,omitnil,omitempty" name:"EndDateTime"`
}

// Predefined struct for user
type UpsertCCRuleRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Status
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Advanced mode (whether to use session detection). 0: disabled; 1: enabled
	Advance *string `json:"Advance,omitnil,omitempty" name:"Advance"`

	// CC detection threshold
	Limit *string `json:"Limit,omitnil,omitempty" name:"Limit"`

	// CC detection cycle
	Interval *string `json:"Interval,omitnil,omitempty" name:"Interval"`

	// Detection URL
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Matching method. 0: equal to; 1: prefix matching; 2: included
	MatchFunc *int64 `json:"MatchFunc,omitnil,omitempty" name:"MatchFunc"`

	// Action. 20: observation; 21: CAPTCHA; 22: interception; 23: precise interception
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Priority
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Valid time for action
	ValidTime *int64 `json:"ValidTime,omitnil,omitempty" name:"ValidTime"`

	// Additional Parameters
	OptionsArr *string `json:"OptionsArr,omitnil,omitempty" name:"OptionsArr"`

	// WAF version. The value can be sparta-waf or clb-waf.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Operation type
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Source event ID for adding rules
	EventId *string `json:"EventId,omitnil,omitempty" name:"EventId"`

	// Session ID that needs to be enabled for the rule
	SessionApplied []*int64 `json:"SessionApplied,omitnil,omitempty" name:"SessionApplied"`

	// Rule ID: fill in 0 when adding
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule creation time
	CreateTime *uint64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// URL length
	Length *uint64 `json:"Length,omitnil,omitempty" name:"Length"`
}

type UpsertCCRuleRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Status
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Advanced mode (whether to use session detection). 0: disabled; 1: enabled
	Advance *string `json:"Advance,omitnil,omitempty" name:"Advance"`

	// CC detection threshold
	Limit *string `json:"Limit,omitnil,omitempty" name:"Limit"`

	// CC detection cycle
	Interval *string `json:"Interval,omitnil,omitempty" name:"Interval"`

	// Detection URL
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Matching method. 0: equal to; 1: prefix matching; 2: included
	MatchFunc *int64 `json:"MatchFunc,omitnil,omitempty" name:"MatchFunc"`

	// Action. 20: observation; 21: CAPTCHA; 22: interception; 23: precise interception
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Priority
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Valid time for action
	ValidTime *int64 `json:"ValidTime,omitnil,omitempty" name:"ValidTime"`

	// Additional Parameters
	OptionsArr *string `json:"OptionsArr,omitnil,omitempty" name:"OptionsArr"`

	// WAF version. The value can be sparta-waf or clb-waf.
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Operation type
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Source event ID for adding rules
	EventId *string `json:"EventId,omitnil,omitempty" name:"EventId"`

	// Session ID that needs to be enabled for the rule
	SessionApplied []*int64 `json:"SessionApplied,omitnil,omitempty" name:"SessionApplied"`

	// Rule ID: fill in 0 when adding
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// Rule creation time
	CreateTime *uint64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// URL length
	Length *uint64 `json:"Length,omitnil,omitempty" name:"Length"`
}

func (r *UpsertCCRuleRequest) 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 *UpsertCCRuleRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "Name")
	delete(f, "Status")
	delete(f, "Advance")
	delete(f, "Limit")
	delete(f, "Interval")
	delete(f, "Url")
	delete(f, "MatchFunc")
	delete(f, "ActionType")
	delete(f, "Priority")
	delete(f, "ValidTime")
	delete(f, "OptionsArr")
	delete(f, "Edition")
	delete(f, "Type")
	delete(f, "EventId")
	delete(f, "SessionApplied")
	delete(f, "RuleId")
	delete(f, "CreateTime")
	delete(f, "Length")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpsertCCRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type UpsertCCRuleResponseParams struct {
	// Normally null
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *string `json:"Data,omitnil,omitempty" name:"Data"`

	// Operated RuleId
	RuleId *int64 `json:"RuleId,omitnil,omitempty" name:"RuleId"`

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

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

// Predefined struct for user
type UpsertSessionRequestParams struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Session source location
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Extraction category
	Category *string `json:"Category,omitnil,omitempty" name:"Category"`

	// Extract key or initial match mode
	KeyOrStartMat *string `json:"KeyOrStartMat,omitnil,omitempty" name:"KeyOrStartMat"`

	// End match mode
	EndMat *string `json:"EndMat,omitnil,omitempty" name:"EndMat"`

	// Start offset position
	StartOffset *string `json:"StartOffset,omitnil,omitempty" name:"StartOffset"`

	// End offset position
	EndOffset *string `json:"EndOffset,omitnil,omitempty" name:"EndOffset"`

	// Version
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Session Name
	SessionName *string `json:"SessionName,omitnil,omitempty" name:"SessionName"`

	// ID corresponding to session
	SessionID *int64 `json:"SessionID,omitnil,omitempty" name:"SessionID"`
}

type UpsertSessionRequest struct {
	*tchttp.BaseRequest
	
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Session source location
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Extraction category
	Category *string `json:"Category,omitnil,omitempty" name:"Category"`

	// Extract key or initial match mode
	KeyOrStartMat *string `json:"KeyOrStartMat,omitnil,omitempty" name:"KeyOrStartMat"`

	// End match mode
	EndMat *string `json:"EndMat,omitnil,omitempty" name:"EndMat"`

	// Start offset position
	StartOffset *string `json:"StartOffset,omitnil,omitempty" name:"StartOffset"`

	// End offset position
	EndOffset *string `json:"EndOffset,omitnil,omitempty" name:"EndOffset"`

	// Version
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

	// Session Name
	SessionName *string `json:"SessionName,omitnil,omitempty" name:"SessionName"`

	// ID corresponding to session
	SessionID *int64 `json:"SessionID,omitnil,omitempty" name:"SessionID"`
}

func (r *UpsertSessionRequest) 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 *UpsertSessionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Domain")
	delete(f, "Source")
	delete(f, "Category")
	delete(f, "KeyOrStartMat")
	delete(f, "EndMat")
	delete(f, "StartOffset")
	delete(f, "EndOffset")
	delete(f, "Edition")
	delete(f, "SessionName")
	delete(f, "SessionID")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpsertSessionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type UpsertSessionResponseParams struct {
	// Result
	// Note: This field may return null, indicating that no valid values can be obtained.
	Data *string `json:"Data,omitnil,omitempty" name:"Data"`

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

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

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

type UserDomainInfo struct {
	// User ID
	Appid *uint64 `json:"Appid,omitnil,omitempty" name:"Appid"`

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

	// Domain ID
	DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"`

	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// WAF type
	Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"`

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

	// Switch for Specified Domain Access Log Fields
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	WriteConfig *string `json:"WriteConfig,omitnil,omitempty" name:"WriteConfig"`

	// Whether to Write the CLS Switch for the Specified Domain 1: Yes, 0: No
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Cls *uint64 `json:"Cls,omitnil,omitempty" name:"Cls"`

	// Marks if it is hybrid cloud access. Hybrid indicates a hybrid cloud access domain
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	CloudType *string `json:"CloudType,omitnil,omitempty" name:"CloudType"`

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

	// Bot detection enabling status
	// Note: This field may return null, indicating that no valid values can be obtained.
	BotStatus *int64 `json:"BotStatus,omitnil,omitempty" name:"BotStatus"`

	// API enabling status
	// Note: This field may return null, indicating that no valid values can be obtained.
	ApiStatus *int64 `json:"ApiStatus,omitnil,omitempty" name:"ApiStatus"`
}

type VipInfo struct {
	// Virtual IP
	// Note: This field may return null, indicating that no valid values can be obtained.
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// WAF Instance ID
	// 
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type WafRuleLimit struct {
	// Specifications of Custom CC
	CC *uint64 `json:"CC,omitnil,omitempty" name:"CC"`

	// Specifications for Custom Policy
	CustomRule *uint64 `json:"CustomRule,omitnil,omitempty" name:"CustomRule"`

	// Specifications for Blocklist/Allowlist
	IPControl *uint64 `json:"IPControl,omitnil,omitempty" name:"IPControl"`

	// Specifications for Information Leakage Prevention
	AntiLeak *uint64 `json:"AntiLeak,omitnil,omitempty" name:"AntiLeak"`

	// Tamper-proof Specifications
	AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"`

	// Specifications for Urgent CC
	AutoCC *uint64 `json:"AutoCC,omitnil,omitempty" name:"AutoCC"`

	// Specifications for Region Banning
	AreaBan *uint64 `json:"AreaBan,omitnil,omitempty" name:"AreaBan"`

	// Configure Session in Custom CC
	CCSession *uint64 `json:"CCSession,omitnil,omitempty" name:"CCSession"`

	// AI Specifications
	AI *uint64 `json:"AI,omitnil,omitempty" name:"AI"`

	// Specifications of Precision Allowlist
	CustomWhite *uint64 `json:"CustomWhite,omitnil,omitempty" name:"CustomWhite"`

	// API Security Specification
	ApiSecurity *uint64 `json:"ApiSecurity,omitnil,omitempty" name:"ApiSecurity"`

	// Specifications for client traffic flag
	ClientMsg *uint64 `json:"ClientMsg,omitnil,omitempty" name:"ClientMsg"`

	// Specifications for Traffic Tagging
	TrafficMarking *uint64 `json:"TrafficMarking,omitnil,omitempty" name:"TrafficMarking"`
}

type WebshellStatus struct {
	// Domain name
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Webshell Switch, 1: On. 0: Off. 2: Observation
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}