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

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

type ApiGatewayInstanceDetail struct {
	// The instance ID.
	ServiceId *string `json:"ServiceId,omitnil,omitempty" name:"ServiceId"`

	// The instance name.
	ServiceName *string `json:"ServiceName,omitnil,omitempty" name:"ServiceName"`

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

	// Certificate id.
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// The protocol.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`
}

type ApiGatewayInstanceList struct {
	// The region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// API gateway instance details.	
	InstanceList []*ApiGatewayInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// The total number of APIGATEWAY instances in this region.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Whether to query exceptions.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

// Predefined struct for user
type ApplyCertificateRequestParams struct {
	// Certificate domain validation methods:
	// 
	// DNS_AUTO: Automatically add domain DNS validation. Requires the user's domain to be hosted on 'Cloud DNS' and associated with the same Tencent Cloud account as the certificate application.
	// 
	// DNS: Manually add domain DNS validation. Requires the user to manually add the validation value at their domain's DNS service provider.
	// 
	// FILE: Manually add domain file validation. Requires the user to manually add a specified path file in the root directory of the domain site for file validation. Either HTTP or HTTPS validation will suffice; the domain site must be accessible by overseas CA institutions. The specific access whitelist is: 64.78.193.238, 216.168.247.9, 216.168.249.9, 54.189.196.217.
	DvAuthMethod *string `json:"DvAuthMethod,omitnil,omitempty" name:"DvAuthMethod"`

	// The domain bound to the certificate.
	DomainName *string `json:"DomainName,omitnil,omitempty" name:"DomainName"`

	// The project ID associated with the certificate. Default is 0 (default project)
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Certificate type, optional, currently only type 83 is supported. 83 = trustasia c1 dv free.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// The email associated with the certificate order, By default, it uses the Tencent Cloud account email. If it does not exist, a fixed email address will be used.
	ContactEmail *string `json:"ContactEmail,omitnil,omitempty" name:"ContactEmail"`

	// The mobile phone number associated with the certificate. If it does not exist, a fixed mobile phone number will be used.
	ContactPhone *string `json:"ContactPhone,omitnil,omitempty" name:"ContactPhone"`

	// Certificate valid period, 3 months by default, currently only 3 months is supported.
	ValidityPeriod *string `json:"ValidityPeriod,omitnil,omitempty" name:"ValidityPeriod"`

	// Encryption algorithm, values can be ECC or RSA, default is RSA.
	CsrEncryptAlgo *string `json:"CsrEncryptAlgo,omitnil,omitempty" name:"CsrEncryptAlgo"`

	// Key pair parameters. RSA supports only 2048. ECC supports only prime256v1. When the encryption algorithm is set to ECC, this parameter is mandatory.
	CsrKeyParameter *string `json:"CsrKeyParameter,omitnil,omitempty" name:"CsrKeyParameter"`

	// Private key password, currently only used when generating jks, pfx format certificates; private key certificates of other formats are not encrypted.
	CsrKeyPassword *string `json:"CsrKeyPassword,omitnil,omitempty" name:"CsrKeyPassword"`

	// Certificate alias.
	Alias *string `json:"Alias,omitnil,omitempty" name:"Alias"`

	// Old certificate id, used for certificate renewal (the certificate valid period is within 30 days and not expired), a renewal relationship will be established, which can be hosted; not providing it means applying for a new certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Benefit package ID, used for free certificate expansion package, the free certificate expansion package has been discontinued.
	PackageId *string `json:"PackageId,omitnil,omitempty" name:"PackageId"`

	// Whether to delete the automatic domain name verification record after issuance, which is fasle by default. This parameter can be passed in only for domain names of the DNS_AUTO verification type.
	DeleteDnsAutoRecord *bool `json:"DeleteDnsAutoRecord,omitnil,omitempty" name:"DeleteDnsAutoRecord"`

	// Other domains bound to the certificate, to be opened. This parameter is not currently supported.
	DnsNames []*string `json:"DnsNames,omitnil,omitempty" name:"DnsNames"`
}

type ApplyCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Certificate domain validation methods:
	// 
	// DNS_AUTO: Automatically add domain DNS validation. Requires the user's domain to be hosted on 'Cloud DNS' and associated with the same Tencent Cloud account as the certificate application.
	// 
	// DNS: Manually add domain DNS validation. Requires the user to manually add the validation value at their domain's DNS service provider.
	// 
	// FILE: Manually add domain file validation. Requires the user to manually add a specified path file in the root directory of the domain site for file validation. Either HTTP or HTTPS validation will suffice; the domain site must be accessible by overseas CA institutions. The specific access whitelist is: 64.78.193.238, 216.168.247.9, 216.168.249.9, 54.189.196.217.
	DvAuthMethod *string `json:"DvAuthMethod,omitnil,omitempty" name:"DvAuthMethod"`

	// The domain bound to the certificate.
	DomainName *string `json:"DomainName,omitnil,omitempty" name:"DomainName"`

	// The project ID associated with the certificate. Default is 0 (default project)
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Certificate type, optional, currently only type 83 is supported. 83 = trustasia c1 dv free.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// The email associated with the certificate order, By default, it uses the Tencent Cloud account email. If it does not exist, a fixed email address will be used.
	ContactEmail *string `json:"ContactEmail,omitnil,omitempty" name:"ContactEmail"`

	// The mobile phone number associated with the certificate. If it does not exist, a fixed mobile phone number will be used.
	ContactPhone *string `json:"ContactPhone,omitnil,omitempty" name:"ContactPhone"`

	// Certificate valid period, 3 months by default, currently only 3 months is supported.
	ValidityPeriod *string `json:"ValidityPeriod,omitnil,omitempty" name:"ValidityPeriod"`

	// Encryption algorithm, values can be ECC or RSA, default is RSA.
	CsrEncryptAlgo *string `json:"CsrEncryptAlgo,omitnil,omitempty" name:"CsrEncryptAlgo"`

	// Key pair parameters. RSA supports only 2048. ECC supports only prime256v1. When the encryption algorithm is set to ECC, this parameter is mandatory.
	CsrKeyParameter *string `json:"CsrKeyParameter,omitnil,omitempty" name:"CsrKeyParameter"`

	// Private key password, currently only used when generating jks, pfx format certificates; private key certificates of other formats are not encrypted.
	CsrKeyPassword *string `json:"CsrKeyPassword,omitnil,omitempty" name:"CsrKeyPassword"`

	// Certificate alias.
	Alias *string `json:"Alias,omitnil,omitempty" name:"Alias"`

	// Old certificate id, used for certificate renewal (the certificate valid period is within 30 days and not expired), a renewal relationship will be established, which can be hosted; not providing it means applying for a new certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Benefit package ID, used for free certificate expansion package, the free certificate expansion package has been discontinued.
	PackageId *string `json:"PackageId,omitnil,omitempty" name:"PackageId"`

	// Whether to delete the automatic domain name verification record after issuance, which is fasle by default. This parameter can be passed in only for domain names of the DNS_AUTO verification type.
	DeleteDnsAutoRecord *bool `json:"DeleteDnsAutoRecord,omitnil,omitempty" name:"DeleteDnsAutoRecord"`

	// Other domains bound to the certificate, to be opened. This parameter is not currently supported.
	DnsNames []*string `json:"DnsNames,omitnil,omitempty" name:"DnsNames"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ApplyCertificateRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "DvAuthMethod")
	delete(f, "DomainName")
	delete(f, "ProjectId")
	delete(f, "PackageType")
	delete(f, "ContactEmail")
	delete(f, "ContactPhone")
	delete(f, "ValidityPeriod")
	delete(f, "CsrEncryptAlgo")
	delete(f, "CsrKeyParameter")
	delete(f, "CsrKeyPassword")
	delete(f, "Alias")
	delete(f, "OldCertificateId")
	delete(f, "PackageId")
	delete(f, "DeleteDnsAutoRecord")
	delete(f, "DnsNames")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ApplyCertificateRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ApplyCertificateResponseParams struct {
	// The newly applied certificate id.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

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

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

// Predefined struct for user
type BatchDeleteCSRRequestParams struct {
	// The IDs of the CSRs to be deleted, 100 IDs at most.
	CSRIds []*int64 `json:"CSRIds,omitnil,omitempty" name:"CSRIds"`
}

type BatchDeleteCSRRequest struct {
	*tchttp.BaseRequest
	
	// The IDs of the CSRs to be deleted, 100 IDs at most.
	CSRIds []*int64 `json:"CSRIds,omitnil,omitempty" name:"CSRIds"`
}

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

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

// Predefined struct for user
type BatchDeleteCSRResponseParams struct {
	// The IDs of the CSRs successfully deleted.
	Success []*int64 `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 BatchDeleteCSRResponse struct {
	*tchttp.BaseResponse
	Response *BatchDeleteCSRResponseParams `json:"Response"`
}

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

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

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

	// The total number of associated cloud resources.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`
}

type BindResourceResult struct {
	// Supported types: CLB, CDN, WAF, LIVE, VOD, DDOS, TKE, APIGATEWAY, TCB, and TEO (EDGEONE).
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// The region of associated cloud resources.
	BindResourceRegionResult []*BindResourceRegionResult `json:"BindResourceRegionResult,omitnil,omitempty" name:"BindResourceRegionResult"`
}

type COSInstanceList struct {
	// Region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Instance details.
	InstanceList []*CosInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Total number under the region.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Predefined struct for user
type CancelAuditCertificateRequestParams struct {
	// The certificate ID.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

type CancelAuditCertificateRequest struct {
	*tchttp.BaseRequest
	
	// The certificate ID.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

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

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

// Predefined struct for user
type CancelAuditCertificateResponseParams struct {
	// Whether the operation succeeded.
	Result *bool `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 CancelAuditCertificateResponse struct {
	*tchttp.BaseResponse
	Response *CancelAuditCertificateResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type CancelCertificateOrderRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

type CancelCertificateOrderRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

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

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

// Predefined struct for user
type CancelCertificateOrderResponseParams struct {
	// ID of the certificate whose order has been successfully cancelled
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

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

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

type CdnInstanceDetail struct {
	// The domain.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// The ID of the deployed certificate.
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// Domain name status: rejected - the domain name failed the review or its registration has expired/been canceled; processing - deploying; online - started; offline - closed.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Domain billing status, where on indicates enable and off indicates disable.
	HttpsBillingSwitch *string `json:"HttpsBillingSwitch,omitnil,omitempty" name:"HttpsBillingSwitch"`
}

type CdnInstanceList struct {
	// The total number of CDN domains in this region.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// CDN domain name details.	
	InstanceList []*CdnInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Whether to query exceptions.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

type CertBasicInfo struct {
	// Issuer.
	Issuer *string `json:"Issuer,omitnil,omitempty" name:"Issuer"`

	// Issued to.
	Subject *string `json:"Subject,omitnil,omitempty" name:"Subject"`

	// Certificate fingerprint.
	Fingerprint *string `json:"Fingerprint,omitnil,omitempty" name:"Fingerprint"`

	// Certificate valid period start time.
	ValidFrom *string `json:"ValidFrom,omitnil,omitempty" name:"ValidFrom"`

	// Certificate valid period end time.
	ValidTo *string `json:"ValidTo,omitnil,omitempty" name:"ValidTo"`
}

type CertTaskId struct {
	// The certificate ID.
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// The async task ID.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

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

	// The list of domains bound to the certificate.
	DnsNames []*string `json:"DnsNames,omitnil,omitempty" name:"DnsNames"`

	// Root certificate id.
	CertCaId *string `json:"CertCaId,omitnil,omitempty" name:"CertCaId"`

	// Certificate authentication mode: unidirectional one-way authentication, mutual mutual authentication.
	SSLMode *string `json:"SSLMode,omitnil,omitempty" name:"SSLMode"`
}

type CertificateExtra struct {
	// Quantity of configurable domain names for the certificate.
	DomainNumber *string `json:"DomainNumber,omitnil,omitempty" name:"DomainNumber"`

	// Renew the original certificate id.
	// Note: this field may return null, indicating that no valid values can be obtained.
	OriginCertificateId *string `json:"OriginCertificateId,omitnil,omitempty" name:"OriginCertificateId"`

	// Original ID of the new certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	ReplacedBy *string `json:"ReplacedBy,omitnil,omitempty" name:"ReplacedBy"`

	// Reissue certificate id.
	// Note: this field may return null, indicating that no valid values can be obtained.
	ReplacedFor *string `json:"ReplacedFor,omitnil,omitempty" name:"ReplacedFor"`

	// Renewal certificate id.
	// Note: this field may return null, indicating that no valid values can be obtained.
	RenewOrder *string `json:"RenewOrder,omitnil,omitempty" name:"RenewOrder"`

	// Whether it is a China SM certificate.
	SMCert *int64 `json:"SMCert,omitnil,omitempty" name:"SMCert"`

	// Company type, valid values: 1 (individual); 2 (company).
	CompanyType *int64 `json:"CompanyType,omitnil,omitempty" name:"CompanyType"`
}

// Predefined struct for user
type CertificateInfoSubmitRequestParams struct {
	// Paid SSL certificate ID of materials to be submitted.	
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// This field is required. CSR generation method, value is:
	// -online: Tencent Cloud submits the filled parameter information to generate a CSR and private key, and by Tencent Cloud for encrypted storage.
	// -parse: Generate CSR and private key manually, and apply for a certificate by uploading CSR.
	GenCsrType *string `json:"GenCsrType,omitnil,omitempty" name:"GenCsrType"`

	// Common name for certificate binding. If an uploaded CSR is used, that domain name must match the common name resolved by the CSR.
	CertCommonName *string `json:"CertCommonName,omitnil,omitempty" name:"CertCommonName"`

	// Organization information type. Valid values:
	// 1 (Personal): Only DV-type certificates can be set to 1. For personal-type certificates, organization information fields (Org, Admin, Tech) can be omitted.
	// 2 (Company): All types of certificates can be set to 2. Pass organization information fields as needed.
	CompanyType *uint64 `json:"CompanyType,omitnil,omitempty" name:"CompanyType"`

	// Company ID can be viewed in the [Tencent Cloud Console](https://console.cloud.tencent.com/ssl/info). If no company information is found, set this parameter to 0. If company information matching the current order exists, you can view the company ID via [DescribeCompanies](https://www.tencentcloud.com/document/product/400/90375?from_cn_redirect=1). If a company ID is provided, parameters starting with "Org" can be omitted.
	// 
	CompanyId *string `json:"CompanyId,omitnil,omitempty" name:"CompanyId"`

	// Company document type. Valid values:
	// TYDMZ (unified social credit code): This field is required only for CFCA certificates, not required for other types.
	// OTHERS
	OrgIdType *string `json:"OrgIdType,omitnil,omitempty" name:"OrgIdType"`

	// Company identification number, value ranges from...to...
	// TYDMZ (unified social credit code): 11532xxxxxxxx24820
	OrgIdNumber *string `json:"OrgIdNumber,omitnil,omitempty" name:"OrgIdNumber"`

	// Document type of the manager. Valid values:
	// SFZ (ID card): This field is required only for CFCA certs, not required for other types.
	// HZ (passport): This field is required only for CFCA certs and not required for other types.
	AdminIdType *string `json:"AdminIdType,omitnil,omitempty" name:"AdminIdType"`

	// ID number of the manager. This field is required only for CFCA certificates, not required for other types. Value ranges from...to...
	// ID card: 110000xxxxxxxx1242
	// HZ (Passport): EFxxxxxxx
	AdminIdNumber *string `json:"AdminIdNumber,omitnil,omitempty" name:"AdminIdNumber"`

	// Contact person document type. Valid values:
	// SFZ (ID card): This field is required only for CFCA certs, not required for other types.
	// HZ (passport): This field is required only for CFCA certs and not required for other types.
	TechIdType *string `json:"TechIdType,omitnil,omitempty" name:"TechIdType"`

	// ID number of the contact person. This field is required only for CFCA certs and not required for other types. Value ranges from...to...
	// ID card: 110000xxxxxxxx1242
	// HZ (Passport): EFxxxxxxx
	TechIdNumber *string `json:"TechIdNumber,omitnil,omitempty" name:"TechIdNumber"`

	// Uploaded CSR content.
	// If GenCsrType is parse, this field is required.
	Csr *string `json:"Csr,omitnil,omitempty" name:"Csr"`

	// Other domains bound to the certificate. No need to provide for single domain or wildcard certificates. Required for multi-domain names and multiple wildcard certificates.
	DnsNames []*string `json:"DnsNames,omitnil,omitempty" name:"DnsNames"`

	// Private key password. Currently used only when generating certs in jks or pfx format; private key certificates in other formats are unencrypted.	
	KeyPass *string `json:"KeyPass,omitnil,omitempty" name:"KeyPass"`

	// Company name. This field is required if CompanyId or ManagerId is not provided.
	OrgOrganization *string `json:"OrgOrganization,omitnil,omitempty" name:"OrgOrganization"`

	// Department name. If not passing CompanyId or ManagerId, this field is required.
	OrgDivision *string `json:"OrgDivision,omitnil,omitempty" name:"OrgDivision"`

	// Company detailed address. If not pass CompanyId or ManagerId, this field is required.
	OrgAddress *string `json:"OrgAddress,omitnil,omitempty" name:"OrgAddress"`

	// Country/region name, for example China: CN. If not passing CompanyId or ManagerId, this field is required.
	OrgCountry *string `json:"OrgCountry,omitnil,omitempty" name:"OrgCountry"`

	// Located city. If not pass CompanyId or ManagerId, this field is required.
	OrgCity *string `json:"OrgCity,omitnil,omitempty" name:"OrgCity"`

	// Province where the company is located. If not passing CompanyId or ManagerId, this field is required.
	OrgRegion *string `json:"OrgRegion,omitnil,omitempty" name:"OrgRegion"`

	// Area code of the company. If not passing CompanyId or ManagerId, this field is required.
	// For example: 021. Pass 86 as the mobile number.
	OrgPhoneArea *string `json:"OrgPhoneArea,omitnil,omitempty" name:"OrgPhoneArea"`

	// Company number. If CompanyId or ManagerId is not provided, this field is required.
	OrgPhoneNumber *string `json:"OrgPhoneNumber,omitnil,omitempty" name:"OrgPhoneNumber"`

	// Domain validation method of the certificate
	// DNS: Manually add domain DNS validation. The user needs to manually add the verification value at the DNS service provider.
	// FILE: Manual addition of domain name FILE verification. Users are advised to manually add a specified path FILE in the root directory of the domain site to perform FILE verification. Either http or https passing is sufficient. The domain site must be accessible by overseas certificate authorities. The specific access allowlist is: 64.78.193.238, 216.168.247.9, 216.168.249.9, 54.189.196.217.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// Manage name. If not passing ManagerId, this field is required.
	AdminFirstName *string `json:"AdminFirstName,omitnil,omitempty" name:"AdminFirstName"`

	// Manager name. If not, this field is required when ManagerId is not passed.
	AdminLastName *string `json:"AdminLastName,omitnil,omitempty" name:"AdminLastName"`

	// Manager mobile number. If not passing ManagerId, this field is required.
	AdminPhone *string `json:"AdminPhone,omitnil,omitempty" name:"AdminPhone"`

	// Manager email address. If not passing ManagerId, this field is required.
	AdminEmail *string `json:"AdminEmail,omitnil,omitempty" name:"AdminEmail"`

	// Manager position. If not passing ManagerId, this field is required.
	AdminTitle *string `json:"AdminTitle,omitnil,omitempty" name:"AdminTitle"`

	// Contact name. If not passing ManagerId, this field is required.
	TechFirstName *string `json:"TechFirstName,omitnil,omitempty" name:"TechFirstName"`

	// Last name of the contact. If not, this field is required when ManagerId is not passed.
	TechLastName *string `json:"TechLastName,omitnil,omitempty" name:"TechLastName"`

	// Contact email address. This field is required when CompanyType is 1.
	ContactEmail *string `json:"ContactEmail,omitnil,omitempty" name:"ContactEmail"`

	// Whether to enable auto-renewal: 0, not enabled; 1, enabled; defaults to 0.
	AutoRenewFlag *uint64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Key pair parameters. RSA supports 2048 and 4096. ECC is only supported for prime256v1. This parameter is required when the CSR generation method is online.
	CsrKeyParameter *string `json:"CsrKeyParameter,omitnil,omitempty" name:"CsrKeyParameter"`

	// Encryption algorithm, value is ECC or RSA, defaults to RSA. This parameter is required when CSR generation method is online.
	CsrEncryptAlgo *string `json:"CsrEncryptAlgo,omitnil,omitempty" name:"CsrEncryptAlgo"`

	// Manager ID can be viewed in the [Tencent Cloud Console](https://console.cloud.tencent.com/ssl/info). If no administrator information is found, pass 0 for this parameter. If administrator information exists that meets the current order, the manager ID can be selected based on [DescribeManagers](https://www.tencentcloud.com/document/product/400/52672?from_cn_redirect=1). If the manager ID is passed, parameters beginning with Org, Admin, or Tech can be omitted. The manager ID includes company information.
	ManagerId *string `json:"ManagerId,omitnil,omitempty" name:"ManagerId"`

	// Contact phone. If not passing ManagerId, this field is required.
	TechPhone *string `json:"TechPhone,omitnil,omitempty" name:"TechPhone"`

	// contact email
	TechEmail *string `json:"TechEmail,omitnil,omitempty" name:"TechEmail"`

	// Contact person position. If not passing ManagerId, this field is required.
	TechTitle *string `json:"TechTitle,omitnil,omitempty" name:"TechTitle"`

	// Certificate type
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Valid only for Dnspod series certs. ca organization kind can be sectigo and digicert.
	CaType *string `json:"CaType,omitnil,omitempty" name:"CaType"`

	// signature algorithm
	SignAlgo *string `json:"SignAlgo,omitnil,omitempty" name:"SignAlgo"`

	// Whether to use intersect root certificate
	UseCrossSignRoot *bool `json:"UseCrossSignRoot,omitnil,omitempty" name:"UseCrossSignRoot"`
}

type CertificateInfoSubmitRequest struct {
	*tchttp.BaseRequest
	
	// Paid SSL certificate ID of materials to be submitted.	
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// This field is required. CSR generation method, value is:
	// -online: Tencent Cloud submits the filled parameter information to generate a CSR and private key, and by Tencent Cloud for encrypted storage.
	// -parse: Generate CSR and private key manually, and apply for a certificate by uploading CSR.
	GenCsrType *string `json:"GenCsrType,omitnil,omitempty" name:"GenCsrType"`

	// Common name for certificate binding. If an uploaded CSR is used, that domain name must match the common name resolved by the CSR.
	CertCommonName *string `json:"CertCommonName,omitnil,omitempty" name:"CertCommonName"`

	// Organization information type. Valid values:
	// 1 (Personal): Only DV-type certificates can be set to 1. For personal-type certificates, organization information fields (Org, Admin, Tech) can be omitted.
	// 2 (Company): All types of certificates can be set to 2. Pass organization information fields as needed.
	CompanyType *uint64 `json:"CompanyType,omitnil,omitempty" name:"CompanyType"`

	// Company ID can be viewed in the [Tencent Cloud Console](https://console.cloud.tencent.com/ssl/info). If no company information is found, set this parameter to 0. If company information matching the current order exists, you can view the company ID via [DescribeCompanies](https://www.tencentcloud.com/document/product/400/90375?from_cn_redirect=1). If a company ID is provided, parameters starting with "Org" can be omitted.
	// 
	CompanyId *string `json:"CompanyId,omitnil,omitempty" name:"CompanyId"`

	// Company document type. Valid values:
	// TYDMZ (unified social credit code): This field is required only for CFCA certificates, not required for other types.
	// OTHERS
	OrgIdType *string `json:"OrgIdType,omitnil,omitempty" name:"OrgIdType"`

	// Company identification number, value ranges from...to...
	// TYDMZ (unified social credit code): 11532xxxxxxxx24820
	OrgIdNumber *string `json:"OrgIdNumber,omitnil,omitempty" name:"OrgIdNumber"`

	// Document type of the manager. Valid values:
	// SFZ (ID card): This field is required only for CFCA certs, not required for other types.
	// HZ (passport): This field is required only for CFCA certs and not required for other types.
	AdminIdType *string `json:"AdminIdType,omitnil,omitempty" name:"AdminIdType"`

	// ID number of the manager. This field is required only for CFCA certificates, not required for other types. Value ranges from...to...
	// ID card: 110000xxxxxxxx1242
	// HZ (Passport): EFxxxxxxx
	AdminIdNumber *string `json:"AdminIdNumber,omitnil,omitempty" name:"AdminIdNumber"`

	// Contact person document type. Valid values:
	// SFZ (ID card): This field is required only for CFCA certs, not required for other types.
	// HZ (passport): This field is required only for CFCA certs and not required for other types.
	TechIdType *string `json:"TechIdType,omitnil,omitempty" name:"TechIdType"`

	// ID number of the contact person. This field is required only for CFCA certs and not required for other types. Value ranges from...to...
	// ID card: 110000xxxxxxxx1242
	// HZ (Passport): EFxxxxxxx
	TechIdNumber *string `json:"TechIdNumber,omitnil,omitempty" name:"TechIdNumber"`

	// Uploaded CSR content.
	// If GenCsrType is parse, this field is required.
	Csr *string `json:"Csr,omitnil,omitempty" name:"Csr"`

	// Other domains bound to the certificate. No need to provide for single domain or wildcard certificates. Required for multi-domain names and multiple wildcard certificates.
	DnsNames []*string `json:"DnsNames,omitnil,omitempty" name:"DnsNames"`

	// Private key password. Currently used only when generating certs in jks or pfx format; private key certificates in other formats are unencrypted.	
	KeyPass *string `json:"KeyPass,omitnil,omitempty" name:"KeyPass"`

	// Company name. This field is required if CompanyId or ManagerId is not provided.
	OrgOrganization *string `json:"OrgOrganization,omitnil,omitempty" name:"OrgOrganization"`

	// Department name. If not passing CompanyId or ManagerId, this field is required.
	OrgDivision *string `json:"OrgDivision,omitnil,omitempty" name:"OrgDivision"`

	// Company detailed address. If not pass CompanyId or ManagerId, this field is required.
	OrgAddress *string `json:"OrgAddress,omitnil,omitempty" name:"OrgAddress"`

	// Country/region name, for example China: CN. If not passing CompanyId or ManagerId, this field is required.
	OrgCountry *string `json:"OrgCountry,omitnil,omitempty" name:"OrgCountry"`

	// Located city. If not pass CompanyId or ManagerId, this field is required.
	OrgCity *string `json:"OrgCity,omitnil,omitempty" name:"OrgCity"`

	// Province where the company is located. If not passing CompanyId or ManagerId, this field is required.
	OrgRegion *string `json:"OrgRegion,omitnil,omitempty" name:"OrgRegion"`

	// Area code of the company. If not passing CompanyId or ManagerId, this field is required.
	// For example: 021. Pass 86 as the mobile number.
	OrgPhoneArea *string `json:"OrgPhoneArea,omitnil,omitempty" name:"OrgPhoneArea"`

	// Company number. If CompanyId or ManagerId is not provided, this field is required.
	OrgPhoneNumber *string `json:"OrgPhoneNumber,omitnil,omitempty" name:"OrgPhoneNumber"`

	// Domain validation method of the certificate
	// DNS: Manually add domain DNS validation. The user needs to manually add the verification value at the DNS service provider.
	// FILE: Manual addition of domain name FILE verification. Users are advised to manually add a specified path FILE in the root directory of the domain site to perform FILE verification. Either http or https passing is sufficient. The domain site must be accessible by overseas certificate authorities. The specific access allowlist is: 64.78.193.238, 216.168.247.9, 216.168.249.9, 54.189.196.217.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// Manage name. If not passing ManagerId, this field is required.
	AdminFirstName *string `json:"AdminFirstName,omitnil,omitempty" name:"AdminFirstName"`

	// Manager name. If not, this field is required when ManagerId is not passed.
	AdminLastName *string `json:"AdminLastName,omitnil,omitempty" name:"AdminLastName"`

	// Manager mobile number. If not passing ManagerId, this field is required.
	AdminPhone *string `json:"AdminPhone,omitnil,omitempty" name:"AdminPhone"`

	// Manager email address. If not passing ManagerId, this field is required.
	AdminEmail *string `json:"AdminEmail,omitnil,omitempty" name:"AdminEmail"`

	// Manager position. If not passing ManagerId, this field is required.
	AdminTitle *string `json:"AdminTitle,omitnil,omitempty" name:"AdminTitle"`

	// Contact name. If not passing ManagerId, this field is required.
	TechFirstName *string `json:"TechFirstName,omitnil,omitempty" name:"TechFirstName"`

	// Last name of the contact. If not, this field is required when ManagerId is not passed.
	TechLastName *string `json:"TechLastName,omitnil,omitempty" name:"TechLastName"`

	// Contact email address. This field is required when CompanyType is 1.
	ContactEmail *string `json:"ContactEmail,omitnil,omitempty" name:"ContactEmail"`

	// Whether to enable auto-renewal: 0, not enabled; 1, enabled; defaults to 0.
	AutoRenewFlag *uint64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Key pair parameters. RSA supports 2048 and 4096. ECC is only supported for prime256v1. This parameter is required when the CSR generation method is online.
	CsrKeyParameter *string `json:"CsrKeyParameter,omitnil,omitempty" name:"CsrKeyParameter"`

	// Encryption algorithm, value is ECC or RSA, defaults to RSA. This parameter is required when CSR generation method is online.
	CsrEncryptAlgo *string `json:"CsrEncryptAlgo,omitnil,omitempty" name:"CsrEncryptAlgo"`

	// Manager ID can be viewed in the [Tencent Cloud Console](https://console.cloud.tencent.com/ssl/info). If no administrator information is found, pass 0 for this parameter. If administrator information exists that meets the current order, the manager ID can be selected based on [DescribeManagers](https://www.tencentcloud.com/document/product/400/52672?from_cn_redirect=1). If the manager ID is passed, parameters beginning with Org, Admin, or Tech can be omitted. The manager ID includes company information.
	ManagerId *string `json:"ManagerId,omitnil,omitempty" name:"ManagerId"`

	// Contact phone. If not passing ManagerId, this field is required.
	TechPhone *string `json:"TechPhone,omitnil,omitempty" name:"TechPhone"`

	// contact email
	TechEmail *string `json:"TechEmail,omitnil,omitempty" name:"TechEmail"`

	// Contact person position. If not passing ManagerId, this field is required.
	TechTitle *string `json:"TechTitle,omitnil,omitempty" name:"TechTitle"`

	// Certificate type
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Valid only for Dnspod series certs. ca organization kind can be sectigo and digicert.
	CaType *string `json:"CaType,omitnil,omitempty" name:"CaType"`

	// signature algorithm
	SignAlgo *string `json:"SignAlgo,omitnil,omitempty" name:"SignAlgo"`

	// Whether to use intersect root certificate
	UseCrossSignRoot *bool `json:"UseCrossSignRoot,omitnil,omitempty" name:"UseCrossSignRoot"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CertificateInfoSubmitRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "CertId")
	delete(f, "GenCsrType")
	delete(f, "CertCommonName")
	delete(f, "CompanyType")
	delete(f, "CompanyId")
	delete(f, "OrgIdType")
	delete(f, "OrgIdNumber")
	delete(f, "AdminIdType")
	delete(f, "AdminIdNumber")
	delete(f, "TechIdType")
	delete(f, "TechIdNumber")
	delete(f, "Csr")
	delete(f, "DnsNames")
	delete(f, "KeyPass")
	delete(f, "OrgOrganization")
	delete(f, "OrgDivision")
	delete(f, "OrgAddress")
	delete(f, "OrgCountry")
	delete(f, "OrgCity")
	delete(f, "OrgRegion")
	delete(f, "OrgPhoneArea")
	delete(f, "OrgPhoneNumber")
	delete(f, "VerifyType")
	delete(f, "AdminFirstName")
	delete(f, "AdminLastName")
	delete(f, "AdminPhone")
	delete(f, "AdminEmail")
	delete(f, "AdminTitle")
	delete(f, "TechFirstName")
	delete(f, "TechLastName")
	delete(f, "ContactEmail")
	delete(f, "AutoRenewFlag")
	delete(f, "CsrKeyParameter")
	delete(f, "CsrEncryptAlgo")
	delete(f, "ManagerId")
	delete(f, "TechPhone")
	delete(f, "TechEmail")
	delete(f, "TechTitle")
	delete(f, "Type")
	delete(f, "CaType")
	delete(f, "SignAlgo")
	delete(f, "UseCrossSignRoot")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CertificateInfoSubmitRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

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

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

// Predefined struct for user
type CertificateOrderSubmitRequestParams struct {
	// Paid SSL certificate ID of materials to be submitted.	
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// Whether to delete automatic DNS validation: 0, do not delete; 1, delete; default is do not delete.
	DeleteDnsAutoRecord *uint64 `json:"DeleteDnsAutoRecord,omitnil,omitempty" name:"DeleteDnsAutoRecord"`

	// Domain validation method of the certificate
	// DNS: Manually add domain DNS validation. The user needs to manually add the verification value at the DNS service provider.
	// FILE: Manual domain addition via FILE verification. Users are advised to manually add the specified path FILE to the root directory of the domain site for FILE verification. Either http or https access is sufficient. The domain site must be accessible by overseas certificate authorities. For the specific access allowlist, refer to the console page.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`
}

type CertificateOrderSubmitRequest struct {
	*tchttp.BaseRequest
	
	// Paid SSL certificate ID of materials to be submitted.	
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// Whether to delete automatic DNS validation: 0, do not delete; 1, delete; default is do not delete.
	DeleteDnsAutoRecord *uint64 `json:"DeleteDnsAutoRecord,omitnil,omitempty" name:"DeleteDnsAutoRecord"`

	// Domain validation method of the certificate
	// DNS: Manually add domain DNS validation. The user needs to manually add the verification value at the DNS service provider.
	// FILE: Manual domain addition via FILE verification. Users are advised to manually add the specified path FILE to the root directory of the domain site for FILE verification. Either http or https access is sufficient. The domain site must be accessible by overseas certificate authorities. For the specific access allowlist, refer to the console page.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`
}

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

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

// Predefined struct for user
type CertificateOrderSubmitResponseParams struct {
	// Order number from the certificate authority.
	OrderId *string `json:"OrderId,omitnil,omitempty" name:"OrderId"`

	// Certificate status. 0=Under review, 1=Approved, 2=Review failed, 3=Expired, 4=DNS record added, 5=Enterprise certificate, pending submission, 6=Order cancellation in progress, 7=Canceled, 8=Documents submitted, pending upload of confirmation letter, 9=Certificate revocation in progress, 10=Revoked, 11=Reissue in progress, 12=Pending upload of revocation confirmation letter, 13=Free certificate pending document submission.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Whether prereview is required or not
	IsAudited *bool `json:"IsAudited,omitnil,omitempty" name:"IsAudited"`

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

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

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

type Certificates struct {
	// User uin.
	OwnerUin *string `json:"OwnerUin,omitnil,omitempty" name:"OwnerUin"`

	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Certificate source:.
	// trustasia.
	// upload.
	// wosign.
	// sheca.
	From *string `json:"From,omitnil,omitempty" name:"From"`

	// Certificate package type:.
	// Null: user uploads a certificate (without package type),.
	// 2: trustasia tls rsa ca,. 
	// 3: securesite enhanced enterprise edition (ev pro),. 
	// 4: securesite enhanced (ev). 
	// 5: securesite enterprise professional edition (ov pro).
	// 6: securesite enterprise (ov). 
	// 7: securesite enterprise (ov) wildcard. 
	// 8: geotrust enhanced (ev). 
	// 9: geotrust enterprise (ov) cert. 
	// 10: geotrust enterprise (ov) wildcard cert. 
	// 11: trustasia domain name-based multiple domain names ssl certificate. 
	// 12: trustasia domain name-based (dv) wildcard cert. 
	// 13: trustasia enterprise wildcard (ov) ssl certificate (d3). 
	// 14: trustasia enterprise (ov) ssl certificate (d3). 
	// 15: trustasia enterprise multiple domain names (ov) ssl certificate (d3). 
	// 16: trustasia enhanced (ev) ssl certificate (d3). 
	// 17: trustasia enhanced multiple domain names (ev) ssl certificate (d3). 
	// 18: globalsign enterprise (ov) ssl certificate. 
	// 19: globalsign enterprise wildcard (ov) ssl certificate. 
	// 20: globalsign enhanced (ev) ssl certificate. 
	// 21: trustasia enterprise wildcard multiple domain names (ov) ssl certificate (d3). 
	// 22: globalsign enterprise multiple domain names (ov) ssl certificate. 
	// 23: globalsign enterprise wildcard multiple domain names (ov) ssl certificate.
	// 24: globalsign enhanced multiple domain name (ev) ssl certificate.
	// 25: wotrus domain name cert.
	// 26: wotrus domain name multiple domain name cert.
	// 27: wotrus domain name wildcard cert.
	// 28: wotrus enterprise cert.
	// 29: wotrus enterprise multi - domain name certificate.
	// 30: wotrus enterprise wildcard certificate.
	// 31: wotrus enhanced certificate.
	// 32: wotrus enhanced multi - domain name certificate.
	// 33: wotrus - national cryptography domain - type certificate.
	// 34: wotrus-national cryptography domain certificate (multiple domain names).
	// 35: wotrus-national cryptography domain certificate (wildcard).
	// 37: wotrus-national cryptography enterprise certificate.
	// 38: wotrus-national cryptography enterprise certificate (multiple domain names).
	// 39: wotrus-national cryptography enterprise certificate (wildcard).
	// 40: wotrus - enhanced national cryptography certificate.
	// 41: wotrus - enhanced national cryptography certificate (multiple domain names).
	// 42: trustasia - domain name type certificate (wildcard multiple domain names).
	// 43: DNSPod - enterprise (ov) ssl certificate.
	// 44: DNSPod - enterprise (ov) wildcard ssl certificate.
	// 45: DNSPod - enterprise (ov) multiple domain names ssl certificate.
	// 46: DNSPod - enhanced (ev) ssl certificate.
	// 47: DNSPod - enhanced (ev) multiple domain names ssl certificate.
	// 48: DNSPod - domain name-based (dv) ssl certificate.
	// 49: DNSPod - domain name-based (dv) wildcard ssl certificate.
	// 50: DNSPod - domain name-based (dv) multiple domain names ssl certificate.
	// 51: DNSPod (national cryptography) - enterprise (ov) ssl certificate.
	// 52: DNSPod (national cryptography) - enterprise (ov) wildcard ssl certificate.
	// 53: DNSPod (national cryptography) - enterprise (ov) multiple domain names ssl certificate.
	// 54: DNSPod (national cryptography) - domain name-based (dv) ssl certificate.
	// 55: DNSPod (national cryptography) - domain name-based (dv) wildcard ssl certificate.
	// 56: DNSPod (national cryptography) - domain name-based (dv) multiple domain names ssl certificate.
	// 57: securesite enterprise professional edition multiple domain names (ov pro).
	// 58: securesite enterprise multiple domain names (ov).
	// 59: securesite enhanced professional edition multiple domain names (ev pro).
	// 60: securesite enhanced multiple domain names (ev).
	// 61: geotrust enhanced multiple domain names (ev).
	// 75: securesite enterprise (ov).
	// 76: securesite enterprise (ov) wildcard.
	// 77: securesite enhanced (ev).
	// 78: geotrust enterprise (ov).
	// 79: geotrust enterprise wildcard (ov).
	// 80: geotrust enhanced (ev).
	// 81: globalsign enterprise (ov) ssl certificate.
	// 82: globalsign enterprise wildcard (ov) ssl certificate.
	// 83: trustasia c1 dv free.
	// 85: globalsign enhanced (ev) ssl certificate.
	// 88: globalsign enterprise wildcard multiple domain names (ov) ssl certificate.
	// 89: globalsign enterprise multiple domain names (ov) ssl certificate.
	// 90: globalsign enhanced multiple domain names (ev) ssl certificate.
	// 91: geotrust enhanced multiple domain names (ev).
	// 92: securesite enterprise pro multiple domain names (ov pro).
	// 93: securesite enterprise multiple domain names (ov).
	// 94: securesite enhanced pro multiple domain names (ev pro).
	// 95: securesite enhanced multiple domain names (ev).
	// 96: securesite ev pro.
	// 97: securesite enterprise professional edition (ov pro).
	// 98: cfca enterprise (ov) ssl certificate.
	// 99: cfca enterprise ov ssl certificate for multiple domain names.
	// 100: cfca ov wildcard ssl certificate.
	// 101: cfca enhanced (ev) ssl certificate.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// Certificate type. ca = client certificate; svr = server certificate.
	CertificateType *string `json:"CertificateType,omitnil,omitempty" name:"CertificateType"`

	// Certificate product name.
	ProductZhName *string `json:"ProductZhName,omitnil,omitempty" name:"ProductZhName"`

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

	// Remark name.
	Alias *string `json:"Alias,omitnil,omitempty" name:"Alias"`

	// Certificate status: 0 = under review, 1 = approved, 2 = review failed, 3 = expired, 4 = dns record added automatically, 5 = enterprise certificate, pending documentation submission, 6 = order cancellation in progress, 7 = canceled, 8 = documents submitted, pending upload of confirmation letter, 9 = certificate revocation in progress, 10 = revoked, 11 = reissue in progress, 12 = pending upload of revocation confirmation letter, 13 = free certificate pending documentation submission, 14 = certificate refunded, 15 = certificate migration in progress.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Certificate extended information.
	CertificateExtra *CertificateExtra `json:"CertificateExtra,omitnil,omitempty" name:"CertificateExtra"`

	// Vulnerability scanning status: INACTIVE = not enabled, ACTIVE = enabled.
	VulnerabilityStatus *string `json:"VulnerabilityStatus,omitnil,omitempty" name:"VulnerabilityStatus"`

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

	// Validation type: DNS_AUTO = automatic dns validation, DNS = manual dns validation, FILE = file verification, DNS_PROXY = dns proxy validation, FILE_PROXY = file proxy verification.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// Certificate validation time.
	CertBeginTime *string `json:"CertBeginTime,omitnil,omitempty" name:"CertBeginTime"`

	// Certificate expiration time.
	CertEndTime *string `json:"CertEndTime,omitnil,omitempty" name:"CertEndTime"`

	// Certificate validity period (month).
	ValidityPeriod *string `json:"ValidityPeriod,omitnil,omitempty" name:"ValidityPeriod"`

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

	// Certificate id.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Multiple domain names contained in the certificate (including the primary domain name).
	SubjectAltName []*string `json:"SubjectAltName,omitnil,omitempty" name:"SubjectAltName"`

	// Certificate type name.
	PackageTypeName *string `json:"PackageTypeName,omitnil,omitempty" name:"PackageTypeName"`

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

	// Specifies whether the customer is a vip customer. true indicates yes and false indicates no.
	IsVip *bool `json:"IsVip,omitnil,omitempty" name:"IsVip"`

	// Specifies whether it is a dv version certificate. true indicates yes and false indicates no.
	IsDv *bool `json:"IsDv,omitnil,omitempty" name:"IsDv"`

	// Specifies whether it is a wildcard domain name certificate. true indicates yes and false indicates no.
	IsWildcard *bool `json:"IsWildcard,omitnil,omitempty" name:"IsWildcard"`

	// Whether the vulnerability scanning feature is enabled.
	IsVulnerability *bool `json:"IsVulnerability,omitnil,omitempty" name:"IsVulnerability"`

	// Whether it is renewable.
	RenewAble *bool `json:"RenewAble,omitnil,omitempty" name:"RenewAble"`

	// Project information.
	ProjectInfo *ProjectInfo `json:"ProjectInfo,omitnil,omitempty" name:"ProjectInfo"`

	// Associated cloud resources are temporarily unavailable.
	BoundResource []*string `json:"BoundResource,omitnil,omitempty" name:"BoundResource"`

	// Whether it can be deployed.
	Deployable *bool `json:"Deployable,omitnil,omitempty" name:"Deployable"`

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

	// Whether expiration notice has been ignored.
	IsIgnore *bool `json:"IsIgnore,omitnil,omitempty" name:"IsIgnore"`

	// Whether it is a China SM certificate.
	IsSM *bool `json:"IsSM,omitnil,omitempty" name:"IsSM"`

	// Certificate algorithm.
	EncryptAlgorithm *string `json:"EncryptAlgorithm,omitnil,omitempty" name:"EncryptAlgorithm"`

	// Encryption algorithm for upload ca certificate.
	CAEncryptAlgorithms []*string `json:"CAEncryptAlgorithms,omitnil,omitempty" name:"CAEncryptAlgorithms"`

	// Expiration time for upload ca certificate.
	CAEndTimes []*string `json:"CAEndTimes,omitnil,omitempty" name:"CAEndTimes"`

	// Common name of the upload ca certificate.
	CACommonNames []*string `json:"CACommonNames,omitnil,omitempty" name:"CACommonNames"`

	// Certificate prereview information.
	PreAuditInfo *PreAuditInfo `json:"PreAuditInfo,omitnil,omitempty" name:"PreAuditInfo"`

	// Whether to auto-renew.
	AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Hosting status: 0, hosting; 5, resource replacement; 10, hosting completed; -1, not hosted. 
	HostingStatus *int64 `json:"HostingStatus,omitnil,omitempty" name:"HostingStatus"`

	// Hosting completion time.
	HostingCompleteTime *string `json:"HostingCompleteTime,omitnil,omitempty" name:"HostingCompleteTime"`

	// Manage the new certificate id.
	HostingRenewCertId *string `json:"HostingRenewCertId,omitnil,omitempty" name:"HostingRenewCertId"`

	// Existing renewal certificate id.
	HasRenewOrder *string `json:"HasRenewOrder,omitnil,omitempty" name:"HasRenewOrder"`

	// Indicates whether the original certificate is deleted during reissue.
	ReplaceOriCertIsDelete *bool `json:"ReplaceOriCertIsDelete,omitnil,omitempty" name:"ReplaceOriCertIsDelete"`

	// Indicates whether it is about to expire. a certificate is about to expire if it will expire within 30 days.
	IsExpiring *bool `json:"IsExpiring,omitnil,omitempty" name:"IsExpiring"`

	// Add validation expiration date for DV certificate
	DVAuthDeadline *string `json:"DVAuthDeadline,omitnil,omitempty" name:"DVAuthDeadline"`

	// Domain verification passed time.
	ValidationPassedTime *string `json:"ValidationPassedTime,omitnil,omitempty" name:"ValidationPassedTime"`

	// Multiple domain names associated with the certificate.
	CertSANs []*string `json:"CertSANs,omitnil,omitempty" name:"CertSANs"`

	// Domain verification rejection information.
	AwaitingValidationMsg *string `json:"AwaitingValidationMsg,omitnil,omitempty" name:"AwaitingValidationMsg"`

	// Whether to allow downloading.
	AllowDownload *bool `json:"AllowDownload,omitnil,omitempty" name:"AllowDownload"`

	// Whether all certificate domain names are managed and resolved by dnspod.
	IsDNSPODResolve *bool `json:"IsDNSPODResolve,omitnil,omitempty" name:"IsDNSPODResolve"`

	// Whether the certificate is purchased with benefit points.
	IsPackage *bool `json:"IsPackage,omitnil,omitempty" name:"IsPackage"`

	// Whether there is a private key password.
	KeyPasswordCustomFlag *bool `json:"KeyPasswordCustomFlag,omitnil,omitempty" name:"KeyPasswordCustomFlag"`

	// Types of web servers supported for download: nginx, apache, iis, tomcat, jks, root, other.
	SupportDownloadType *SupportDownloadType `json:"SupportDownloadType,omitnil,omitempty" name:"SupportDownloadType"`

	// Certificate revocation completion time.
	CertRevokedTime *string `json:"CertRevokedTime,omitnil,omitempty" name:"CertRevokedTime"`

	// Hosted resource type list.
	HostingResourceTypes []*string `json:"HostingResourceTypes,omitnil,omitempty" name:"HostingResourceTypes"`

	// Managed configuration information.
	HostingConfig *HostingConfig `json:"HostingConfig,omitnil,omitempty" name:"HostingConfig"`
}

// Predefined struct for user
type CheckCertificateDomainVerificationRequestParams struct {
	// Certificate ID. 
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

type CheckCertificateDomainVerificationRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID. 
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

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

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

// Predefined struct for user
type CheckCertificateDomainVerificationResponseParams struct {
	// Domain validation result list. If the cert is bound to multiple domain names, the return array contains multiple items.
	// Note: This field may return null, indicating that no valid values can be obtained.
	VerificationResults []*DomainValidationResult `json:"VerificationResults,omitnil,omitempty" name:"VerificationResults"`

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

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

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

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

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

	// CLB listener list.
	Listeners []*ClbListener `json:"Listeners,omitnil,omitempty" name:"Listeners"`

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

type ClbInstanceList struct {
	// The region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// CLB instance details.
	InstanceList []*ClbInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// The total number of CLB instances in this region.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Whether to query exceptions.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

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

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

	// Whether to enable SNI. Valid values: `1` (enable) and `0` (disable).
	SniSwitch *uint64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// The listener protocol type. Valid values: `HTTPS` and `TCP_SSL`.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Data of certificate bound to the listener.
	Certificate *Certificate `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// List of listener rules.
	Rules []*ClbListenerRule `json:"Rules,omitnil,omitempty" name:"Rules"`

	// Domain list not matched.
	NoMatchDomains []*string `json:"NoMatchDomains,omitnil,omitempty" name:"NoMatchDomains"`
}

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

	// The domains bound.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Whether the rule matches the domains to be associated with a certificate.
	IsMatch *bool `json:"IsMatch,omitnil,omitempty" name:"IsMatch"`

	// Certificate data bound to the rule.
	Certificate *Certificate `json:"Certificate,omitnil,omitempty" name:"Certificate"`

	// Domain list not matched.
	NoMatchDomains []*string `json:"NoMatchDomains,omitnil,omitempty" name:"NoMatchDomains"`

	// Rule binding path.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

// Predefined struct for user
type CommitCertificateInformationRequestParams struct {
	// Paid certificate id of materials to be submitted.	
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Certificate domain name verification method:.
	// DNS_AUTO: automatically adds domain dns verification, requiring user domain name resolution to be hosted on [cloud dns](https://console.cloud.tencent.com/cns) and under the same tencent cloud account as the certificate application.
	// DNS: manually add domain dns verification, which requires users to manually add verification values to the domain resolution service provider.
	// FILE: manual addition of domain name file verification. requires the user to manually add a specified path file in the root directory of the domain site for file verification, and either http or https passing is acceptable; the domain site needs to be accessible by overseas ca institutions, with the specific access allowlist being: 64.78.193.238, 216.168.247.9, 216.168.249.9, 54.189.196.217.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`
}

type CommitCertificateInformationRequest struct {
	*tchttp.BaseRequest
	
	// Paid certificate id of materials to be submitted.	
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Certificate domain name verification method:.
	// DNS_AUTO: automatically adds domain dns verification, requiring user domain name resolution to be hosted on [cloud dns](https://console.cloud.tencent.com/cns) and under the same tencent cloud account as the certificate application.
	// DNS: manually add domain dns verification, which requires users to manually add verification values to the domain resolution service provider.
	// FILE: manual addition of domain name file verification. requires the user to manually add a specified path file in the root directory of the domain site for file verification, and either http or https passing is acceptable; the domain site needs to be accessible by overseas ca institutions, with the specific access allowlist being: 64.78.193.238, 216.168.247.9, 216.168.249.9, 54.189.196.217.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`
}

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

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

// Predefined struct for user
type CommitCertificateInformationResponseParams struct {
	// TrustAsia order ID
	OrderId *string `json:"OrderId,omitnil,omitempty" name:"OrderId"`

	// Certificate status. `0`: reviewing; `1`: approved; `2`: unapproved; `3`: expired; `4`: DNS record added; `5`: enterprise-grade certificate, pending submission; `6`: canceling order; `7`: canceled; `8`: information submitted, pending confirmation letter upload; `9`: revoking certificate; `10`: revoked; `11`: reissuing; `12`: pending revocation confirmation letter upload
	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 CommitCertificateInformationResponse struct {
	*tchttp.BaseResponse
	Response *CommitCertificateInformationResponseParams `json:"Response"`
}

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

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

type CompanyInfo struct {
	// Company Name
	CompanyName *string `json:"CompanyName,omitnil,omitempty" name:"CompanyName"`

	// company ID
	CompanyId *int64 `json:"CompanyId,omitnil,omitempty" name:"CompanyId"`

	// Country of residence
	CompanyCountry *string `json:"CompanyCountry,omitnil,omitempty" name:"CompanyCountry"`

	// Company province
	CompanyProvince *string `json:"CompanyProvince,omitnil,omitempty" name:"CompanyProvince"`

	// Company located city
	CompanyCity *string `json:"CompanyCity,omitnil,omitempty" name:"CompanyCity"`

	// Company's detailed address
	CompanyAddress *string `json:"CompanyAddress,omitnil,omitempty" name:"CompanyAddress"`

	// company phone number
	CompanyPhone *string `json:"CompanyPhone,omitnil,omitempty" name:"CompanyPhone"`

	// Company document type. Valid values:
	// TYDMZ (unified social credit code): This field is required only for CFCA certs and not required for other types.
	// OTHERS
	IdType *string `json:"IdType,omitnil,omitempty" name:"IdType"`

	// Company identification number, value ranges from...to...
	// TYDMZ (unified social credit code): 11532xxxxxxxx24820
	IdNumber *string `json:"IdNumber,omitnil,omitempty" name:"IdNumber"`

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

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

	// Bound certificate id.
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// ENABLED: domain name online status.
	// DISABLED: domain name offline status.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// bucket name.
	Bucket *string `json:"Bucket,omitnil,omitempty" name:"Bucket"`

	// bucket region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`
}

// Predefined struct for user
type CreateCSRRequestParams struct {
	// The domain.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// The organization name.
	Organization *string `json:"Organization,omitnil,omitempty" name:"Organization"`

	// The department.
	Department *string `json:"Department,omitnil,omitempty" name:"Department"`

	// The email address.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// The province.
	Province *string `json:"Province,omitnil,omitempty" name:"Province"`

	// The city.
	City *string `json:"City,omitnil,omitempty" name:"City"`

	// The country or region code that complies with ISO 3166, such as CN and US.
	Country *string `json:"Country,omitnil,omitempty" name:"Country"`

	// The encryption algorithm. RSA and ECC are supported.	
	EncryptAlgo *string `json:"EncryptAlgo,omitnil,omitempty" name:"EncryptAlgo"`

	// The key pair parameter. For RSA, only the 2048-bit and 4096-bit key pairs are supported. For ECC, only prime256v1 is supported.
	KeyParameter *string `json:"KeyParameter,omitnil,omitempty" name:"KeyParameter"`

	// Whether to generate the CSR content. Once the CSR content is generated, the CSR record cannot be modified.
	Generate *bool `json:"Generate,omitnil,omitempty" name:"Generate"`

	// The password of the private key.
	KeyPassword *string `json:"KeyPassword,omitnil,omitempty" name:"KeyPassword"`

	// The remarks.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`


	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`
}

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

	// The organization name.
	Organization *string `json:"Organization,omitnil,omitempty" name:"Organization"`

	// The department.
	Department *string `json:"Department,omitnil,omitempty" name:"Department"`

	// The email address.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// The province.
	Province *string `json:"Province,omitnil,omitempty" name:"Province"`

	// The city.
	City *string `json:"City,omitnil,omitempty" name:"City"`

	// The country or region code that complies with ISO 3166, such as CN and US.
	Country *string `json:"Country,omitnil,omitempty" name:"Country"`

	// The encryption algorithm. RSA and ECC are supported.	
	EncryptAlgo *string `json:"EncryptAlgo,omitnil,omitempty" name:"EncryptAlgo"`

	// The key pair parameter. For RSA, only the 2048-bit and 4096-bit key pairs are supported. For ECC, only prime256v1 is supported.
	KeyParameter *string `json:"KeyParameter,omitnil,omitempty" name:"KeyParameter"`

	// Whether to generate the CSR content. Once the CSR content is generated, the CSR record cannot be modified.
	Generate *bool `json:"Generate,omitnil,omitempty" name:"Generate"`

	// The password of the private key.
	KeyPassword *string `json:"KeyPassword,omitnil,omitempty" name:"KeyPassword"`

	// The remarks.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateCSRRequest) 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, "Organization")
	delete(f, "Department")
	delete(f, "Email")
	delete(f, "Province")
	delete(f, "City")
	delete(f, "Country")
	delete(f, "EncryptAlgo")
	delete(f, "KeyParameter")
	delete(f, "Generate")
	delete(f, "KeyPassword")
	delete(f, "Remark")
	delete(f, "Tags")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateCSRRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateCSRResponseParams struct {
	// The CSR ID.
	Id *int64 `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 CreateCSRResponse struct {
	*tchttp.BaseResponse
	Response *CreateCSRResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type CreateCertificateBindResourceSyncTaskRequestParams struct {
	// The list of certificate IDs, 100 IDs at most.
	CertificateIds []*string `json:"CertificateIds,omitnil,omitempty" name:"CertificateIds"`

	// Whether to use the cached results. Valid values: `1` (default) for yes and `0` for no. If any task completed within last 30 minutes exists under the current certificate ID, and the cache is used, the query result of the last task completed within 30 minutes will be read.
	IsCache *uint64 `json:"IsCache,omitnil,omitempty" name:"IsCache"`
}

type CreateCertificateBindResourceSyncTaskRequest struct {
	*tchttp.BaseRequest
	
	// The list of certificate IDs, 100 IDs at most.
	CertificateIds []*string `json:"CertificateIds,omitnil,omitempty" name:"CertificateIds"`

	// Whether to use the cached results. Valid values: `1` (default) for yes and `0` for no. If any task completed within last 30 minutes exists under the current certificate ID, and the cache is used, the query result of the last task completed within 30 minutes will be read.
	IsCache *uint64 `json:"IsCache,omitnil,omitempty" name:"IsCache"`
}

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

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

// Predefined struct for user
type CreateCertificateBindResourceSyncTaskResponseParams struct {
	// The IDs of async tasks for querying cloud resources associated with a certificate.
	CertTaskIds []*CertTaskId `json:"CertTaskIds,omitnil,omitempty" name:"CertTaskIds"`

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

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

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

// Predefined struct for user
type CreateCertificateRequestParams struct {
	// Certificate product id. `3`: securesite ev pro; `4`: securesite ev; `5`: securesite ov pro; `6`: securesite ov; `7`: securesite ov wildcard; `8`: geotrust ev; `9`: geotrust ov; `10`: geotrust ov wildcard; `11`: trustasia dv multi-domain; `12`: trustasia dv wildcard; `13`: trustasia ov wildcard d3; `14`: trustasia ov d3; `15`: trustasia ov multi-domain d3; `16`: trustasia ev d3; `17`: trustasia ev multi-domain d3; `18`: globalsign ov; `19`: globalsign ov wildcard; `20`: globalsign ev; `21`: trustasia ov wildcard multi-domain d3; `22`: globalsign ov multi-domain; `23`: globalsign ov wildcard multi-domain; `24`: globalsign ev multi-domain; `25`: wotrus dv; `26`: wotrus dv multi-domain; `27`: wotrus dv wildcard; `28`: wotrus ov; `29`: wotrus ov multi-domain; `30`: wotrus ov wildcard; `31`: wotrus ev; `32`: wotrus ev multi-domain; `33`: DNSPod sm2 dv; `34`: DNSPod sm2 dv multi-domain; `35`: DNSPod sm2 dv wildcard; `37`: DNSPod sm2 ov; `38`: DNSPod sm2 ov multi-domain; `39`: DNSPod sm2 ov wildcard; `40`: DNSPod sm2 ev; `41`: DNSPod sm2 ev multi-domain; `42`: trustasia dv wildcard multi-domain; `43`: dnspod-ov ssl certificate; `44`: dnspod-ov wildcard ssl certificate; `45`: dnspod-ov multi-domain ssl certificate; `46`: dnspod-ev ssl certificate; `47`: dnspod-ev multi-domain ssl certificate; `48`: dnspod-dv ssl certificate; `49`: dnspod-dv wildcard ssl certificate; `50`: dnspod-dv multi-domain ssl certificate; `51`: DNSPod (sm2)-ov ssl certificate; `52`: DNSPod (sm2)-ov wildcard ssl certificate; `53`: DNSPod (sm2)-ov multi-domain ssl certificate; `54`: DNSPod (sm2)-dv ssl certificate; `55`: DNSPod (sm2)-dv wildcard ssl certificate; `56`: DNSPod (sm2)-dv multi-domain ssl certificate; `57`: securesite ov pro multi-domain; `58`: securesite ov multi-domain; `59`: securesite ev pro multi-domain; `60`: securesite ev multi-domain; `61`: geotrust ev multi-domain.
	ProductId *int64 `json:"ProductId,omitnil,omitempty" name:"ProductId"`

	// Number of domains associated with the certificate
	DomainNum *int64 `json:"DomainNum,omitnil,omitempty" name:"DomainNum"`

	// Certificate validity period.
	TimeSpan *int64 `json:"TimeSpan,omitnil,omitempty" name:"TimeSpan"`

	// Whether to automatically use vouchers: 1 for yes, 0 for no; the default is 1.
	AutoVoucher *int64 `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Tag, generate tags for certificates.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type CreateCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Certificate product id. `3`: securesite ev pro; `4`: securesite ev; `5`: securesite ov pro; `6`: securesite ov; `7`: securesite ov wildcard; `8`: geotrust ev; `9`: geotrust ov; `10`: geotrust ov wildcard; `11`: trustasia dv multi-domain; `12`: trustasia dv wildcard; `13`: trustasia ov wildcard d3; `14`: trustasia ov d3; `15`: trustasia ov multi-domain d3; `16`: trustasia ev d3; `17`: trustasia ev multi-domain d3; `18`: globalsign ov; `19`: globalsign ov wildcard; `20`: globalsign ev; `21`: trustasia ov wildcard multi-domain d3; `22`: globalsign ov multi-domain; `23`: globalsign ov wildcard multi-domain; `24`: globalsign ev multi-domain; `25`: wotrus dv; `26`: wotrus dv multi-domain; `27`: wotrus dv wildcard; `28`: wotrus ov; `29`: wotrus ov multi-domain; `30`: wotrus ov wildcard; `31`: wotrus ev; `32`: wotrus ev multi-domain; `33`: DNSPod sm2 dv; `34`: DNSPod sm2 dv multi-domain; `35`: DNSPod sm2 dv wildcard; `37`: DNSPod sm2 ov; `38`: DNSPod sm2 ov multi-domain; `39`: DNSPod sm2 ov wildcard; `40`: DNSPod sm2 ev; `41`: DNSPod sm2 ev multi-domain; `42`: trustasia dv wildcard multi-domain; `43`: dnspod-ov ssl certificate; `44`: dnspod-ov wildcard ssl certificate; `45`: dnspod-ov multi-domain ssl certificate; `46`: dnspod-ev ssl certificate; `47`: dnspod-ev multi-domain ssl certificate; `48`: dnspod-dv ssl certificate; `49`: dnspod-dv wildcard ssl certificate; `50`: dnspod-dv multi-domain ssl certificate; `51`: DNSPod (sm2)-ov ssl certificate; `52`: DNSPod (sm2)-ov wildcard ssl certificate; `53`: DNSPod (sm2)-ov multi-domain ssl certificate; `54`: DNSPod (sm2)-dv ssl certificate; `55`: DNSPod (sm2)-dv wildcard ssl certificate; `56`: DNSPod (sm2)-dv multi-domain ssl certificate; `57`: securesite ov pro multi-domain; `58`: securesite ov multi-domain; `59`: securesite ev pro multi-domain; `60`: securesite ev multi-domain; `61`: geotrust ev multi-domain.
	ProductId *int64 `json:"ProductId,omitnil,omitempty" name:"ProductId"`

	// Number of domains associated with the certificate
	DomainNum *int64 `json:"DomainNum,omitnil,omitempty" name:"DomainNum"`

	// Certificate validity period.
	TimeSpan *int64 `json:"TimeSpan,omitnil,omitempty" name:"TimeSpan"`

	// Whether to automatically use vouchers: 1 for yes, 0 for no; the default is 1.
	AutoVoucher *int64 `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Tag, generate tags for certificates.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`
}

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

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

// Predefined struct for user
type CreateCertificateResponseParams struct {
	// List of certificate IDs
	CertificateIds []*string `json:"CertificateIds,omitnil,omitempty" name:"CertificateIds"`

	// List of order IDs
	DealIds []*string `json:"DealIds,omitnil,omitempty" name:"DealIds"`

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

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

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

type DdosInstanceDetail struct {
	// The domain.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

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

	// Certificate id.
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// The forwarding port.
	VirtualPort *string `json:"VirtualPort,omitnil,omitempty" name:"VirtualPort"`
}

type DdosInstanceList struct {
	// The total number of DDOS instances in this region.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// DDOS instance details.	
	InstanceList []*DdosInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Whether to query exceptions.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

// Predefined struct for user
type DeleteCertificateRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// When deleting, check whether the certificate is associated with cloud resources. By default, no check is performed. if you choose to check (the authorization service role SSL_QCSLinkedRoleInReplaceLoadCertificate is required), the deletion will become asynchronous, and the API will return an asynchronous task id. you need to use the DescribeDeleteCertificatesTaskResult API to check whether the deletion is successful.
	IsCheckResource *bool `json:"IsCheckResource,omitnil,omitempty" name:"IsCheckResource"`
}

type DeleteCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// When deleting, check whether the certificate is associated with cloud resources. By default, no check is performed. if you choose to check (the authorization service role SSL_QCSLinkedRoleInReplaceLoadCertificate is required), the deletion will become asynchronous, and the API will return an asynchronous task id. you need to use the DescribeDeleteCertificatesTaskResult API to check whether the deletion is successful.
	IsCheckResource *bool `json:"IsCheckResource,omitnil,omitempty" name:"IsCheckResource"`
}

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

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

// Predefined struct for user
type DeleteCertificateResponseParams struct {
	// Deletion result
	DeleteResult *bool `json:"DeleteResult,omitnil,omitempty" name:"DeleteResult"`

	// Asynchronous deletion task id.
	// Note: this field may return null, indicating that no valid values can be obtained.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

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

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

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

type DeployRecord struct {
	// Total number.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Total successes
	SuccessTotalCount *int64 `json:"SuccessTotalCount,omitnil,omitempty" name:"SuccessTotalCount"`

	// Total failed deployments.
	FailedTotalCount *int64 `json:"FailedTotalCount,omitnil,omitempty" name:"FailedTotalCount"`

	// Deployment in progress total number.
	RunningTotalCount *int64 `json:"RunningTotalCount,omitnil,omitempty" name:"RunningTotalCount"`

	// Deployment record type 0 specifies deployment, 1 indicates rollback.
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Deployment record detail list.
	RecordDetailList []*DeployRecordList `json:"RecordDetailList,omitnil,omitempty" name:"RecordDetailList"`

	// Hosted resource deployment state: `0` (awaiting deployment), `1` (deployment successful), `2` (deployment failed), `3` (deploying), `4` (rollback successful), `5` (rollback failure).
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Managed resource creation time.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`
}

type DeployRecordItem struct {
	// Deployment record detail ID.
	Id *uint64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Bound certificate ID.
	OldCertId *string `json:"OldCertId,omitnil,omitempty" name:"OldCertId"`

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

	// Specifies the deployment instance name.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

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

	// Deployment domain name list.
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`

	// Deploy listener protocol.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

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

	// Deployment error information.
	ErrorMsg *string `json:"ErrorMsg,omitnil,omitempty" name:"ErrorMsg"`

	// Describes the creation time of the deployment record detail.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Specifies the last update time of the deployment record detail.
	UpdateTime *string `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`

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

	// Whether SNI is enabled.
	SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// COS bucket name.
	Bucket *string `json:"Bucket,omitnil,omitempty" name:"Bucket"`

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

	// The secret name.
	SecretName *string `json:"SecretName,omitnil,omitempty" name:"SecretName"`

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

	// Deployed TCB region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// CLB type. valid values: 0 (classic clb); 1 (application clb).
	Forward *int64 `json:"Forward,omitnil,omitempty" name:"Forward"`

	// Certificate authentication mode: UNIDIRECTIONAL for one-way authentication, MUTUAL for MUTUAL authentication.
	SSLMode *string `json:"SSLMode,omitnil,omitempty" name:"SSLMode"`

	// Deployment resource type.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`
}

type DeployRecordList struct {
	// Deployment resource type.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// Deployment resource detail list.
	// Note: This field may return null, indicating that no valid values can be obtained.
	List []*DeployRecordItem `json:"List,omitnil,omitempty" name:"List"`

	// Total count of deployment resources.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`
}

// Predefined struct for user
type DescribeCSRRequestParams struct {
	// The CSR ID.
	CSRId *int64 `json:"CSRId,omitnil,omitempty" name:"CSRId"`
}

type DescribeCSRRequest struct {
	*tchttp.BaseRequest
	
	// The CSR ID.
	CSRId *int64 `json:"CSRId,omitnil,omitempty" name:"CSRId"`
}

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

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

// Predefined struct for user
type DescribeCSRResponseParams struct {
	// The CSR ID.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// The account.
	OwnerUin *string `json:"OwnerUin,omitnil,omitempty" name:"OwnerUin"`

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

	// The organization name.
	Organization *string `json:"Organization,omitnil,omitempty" name:"Organization"`

	// The department.
	Department *string `json:"Department,omitnil,omitempty" name:"Department"`

	// The email address.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// The province.
	Province *string `json:"Province,omitnil,omitempty" name:"Province"`

	// The city.
	City *string `json:"City,omitnil,omitempty" name:"City"`

	// The country or region.
	Country *string `json:"Country,omitnil,omitempty" name:"Country"`

	// The key algorithm.
	EncryptAlgo *string `json:"EncryptAlgo,omitnil,omitempty" name:"EncryptAlgo"`

	// The algorithm parameter.
	KeyParameter *string `json:"KeyParameter,omitnil,omitempty" name:"KeyParameter"`

	// The remarks.
	Remarks *string `json:"Remarks,omitnil,omitempty" name:"Remarks"`

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

	// The password of the private key.
	// Note: This field may return null, indicating that no valid values can be obtained.
	KeyPassword *string `json:"KeyPassword,omitnil,omitempty" name:"KeyPassword"`

	// The creation time.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

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

	// The content of the private key.
	// Note: This field may return null, indicating that no valid values can be obtained.
	PrivateKey *string `json:"PrivateKey,omitnil,omitempty" name:"PrivateKey"`

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

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

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

// Predefined struct for user
type DescribeCSRSetRequestParams struct {
	// The number of CSRs on each page. The default value is 10, and the maximum value is 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// The pagination offset, starting from 0.	
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// The domain for CSR filtering
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// The encryption algorithm for CSR filtering
	EncryptAlgo *string `json:"EncryptAlgo,omitnil,omitempty" name:"EncryptAlgo"`
}

type DescribeCSRSetRequest struct {
	*tchttp.BaseRequest
	
	// The number of CSRs on each page. The default value is 10, and the maximum value is 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// The pagination offset, starting from 0.	
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// The domain for CSR filtering
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// The encryption algorithm for CSR filtering
	EncryptAlgo *string `json:"EncryptAlgo,omitnil,omitempty" name:"EncryptAlgo"`
}

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

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

// Predefined struct for user
type DescribeCSRSetResponseParams struct {
	// The total number of CSRs.	
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

	// The list of CSRs.
	Set []*CSRItem `json:"Set,omitnil,omitempty" name:"Set"`

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

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

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

// Predefined struct for user
type DescribeCertificateBindResourceTaskDetailRequestParams struct {
	// <p>Task ID. Query the result of binding cloud resources based on the task ID obtained from CreateCertificateBindResourceSyncTask.</p>
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// <p>Number of items per page, default 10, maximum value 100; total pages is the total number of instances in the resource region, that is, page 1 will pull the number of instances under each Tencent Cloud resource region up to the Limit</p>
	Limit *string `json:"Limit,omitnil,omitempty" name:"Limit"`

	// <p>Offset, defaults to 0</p>
	Offset *string `json:"Offset,omitnil,omitempty" name:"Offset"`

	// <p>Query result details of the resource type. Query all if not specified. Supported values: - clb- cdn- ddos- live- vod- waf- apigateway- teo- tke- cos- tse- tcb</p>
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

	// <p>Query the data of region list. clb, tke, waf, API Gateway, tcb, cos, and tse support query region. Other resource types are unsupported.</p>
	Regions []*string `json:"Regions,omitnil,omitempty" name:"Regions"`
}

type DescribeCertificateBindResourceTaskDetailRequest struct {
	*tchttp.BaseRequest
	
	// <p>Task ID. Query the result of binding cloud resources based on the task ID obtained from CreateCertificateBindResourceSyncTask.</p>
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// <p>Number of items per page, default 10, maximum value 100; total pages is the total number of instances in the resource region, that is, page 1 will pull the number of instances under each Tencent Cloud resource region up to the Limit</p>
	Limit *string `json:"Limit,omitnil,omitempty" name:"Limit"`

	// <p>Offset, defaults to 0</p>
	Offset *string `json:"Offset,omitnil,omitempty" name:"Offset"`

	// <p>Query result details of the resource type. Query all if not specified. Supported values: - clb- cdn- ddos- live- vod- waf- apigateway- teo- tke- cos- tse- tcb</p>
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

	// <p>Query the data of region list. clb, tke, waf, API Gateway, tcb, cos, and tse support query region. Other resource types are unsupported.</p>
	Regions []*string `json:"Regions,omitnil,omitempty" name:"Regions"`
}

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

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

// Predefined struct for user
type DescribeCertificateBindResourceTaskDetailResponseParams struct {
	// <p>clb resource detail</p>
	CLB []*ClbInstanceList `json:"CLB,omitnil,omitempty" name:"CLB"`

	// <p>cdn resource detail</p>
	CDN []*CdnInstanceList `json:"CDN,omitnil,omitempty" name:"CDN"`

	// <p>waf resource detail</p>
	WAF []*WafInstanceList `json:"WAF,omitnil,omitempty" name:"WAF"`

	// <p>Associate ddos resource detail</p>
	DDOS []*DdosInstanceList `json:"DDOS,omitnil,omitempty" name:"DDOS"`

	// <p>Associate live resource detail</p>
	LIVE []*LiveInstanceList `json:"LIVE,omitnil,omitempty" name:"LIVE"`

	// <p>vod resource detail</p>
	VOD []*VODInstanceList `json:"VOD,omitnil,omitempty" name:"VOD"`

	// <p>tke resource detail</p>
	TKE []*TkeInstanceList `json:"TKE,omitnil,omitempty" name:"TKE"`

	// <p>apigateway resource detail</p>
	APIGATEWAY []*ApiGatewayInstanceList `json:"APIGATEWAY,omitnil,omitempty" name:"APIGATEWAY"`

	// <p>tcb resource detail</p>
	TCB []*TCBInstanceList `json:"TCB,omitnil,omitempty" name:"TCB"`

	// <p>Associate teo resource detail</p>
	TEO []*TeoInstanceList `json:"TEO,omitnil,omitempty" name:"TEO"`

	// <p>Associate cloud resources async query result: 0 indicates querying, 1 indicates success. 2 indicates an exception. If the status is 1, view the BindResourceResult. If the status is 2, view the Error reason.</p>
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// <p>Current result cache time</p>
	CacheTime *string `json:"CacheTime,omitnil,omitempty" name:"CacheTime"`

	// <p>Associate tse resource detail</p>
	TSE []*TSEInstanceList `json:"TSE,omitnil,omitempty" name:"TSE"`

	// <p>Associated COS resource detail</p>
	COS []*COSInstanceList `json:"COS,omitnil,omitempty" name:"COS"`

	// <p>Associated TDMQ - Rabbit resource detail</p>
	TDMQ []*TDMQInstanceList `json:"TDMQ,omitnil,omitempty" name:"TDMQ"`

	// <p>Associated MQTT resource detail</p>
	MQTT []*MQTTInstanceList `json:"MQTT,omitnil,omitempty" name:"MQTT"`

	// <p>Associated GAAP resource detail</p>
	GAAP []*GAAPInstanceList `json:"GAAP,omitnil,omitempty" name:"GAAP"`

	// <p>Associated SCF resource detail</p>
	SCF []*SCFInstanceList `json:"SCF,omitnil,omitempty" name:"SCF"`

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

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

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

// Predefined struct for user
type DescribeCertificateBindResourceTaskResultRequestParams struct {
	// The task IDs, which are used to query the results of associated cloud resources, 100 IDs at most.
	TaskIds []*string `json:"TaskIds,omitnil,omitempty" name:"TaskIds"`
}

type DescribeCertificateBindResourceTaskResultRequest struct {
	*tchttp.BaseRequest
	
	// The task IDs, which are used to query the results of associated cloud resources, 100 IDs at most.
	TaskIds []*string `json:"TaskIds,omitnil,omitempty" name:"TaskIds"`
}

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

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

// Predefined struct for user
type DescribeCertificateBindResourceTaskResultResponseParams struct {
	// The results of the async tasks for querying associated cloud resources.
	// Note: This field may return null, indicating that no valid values can be obtained.
	SyncTaskBindResourceResult []*SyncTaskBindResourceResult `json:"SyncTaskBindResourceResult,omitnil,omitempty" name:"SyncTaskBindResourceResult"`

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

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

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

// Predefined struct for user
type DescribeCertificateDetailRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

type DescribeCertificateDetailRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

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

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

// Predefined struct for user
type DescribeCertificateDetailResponseParams struct {
	// Certificate belonging to user main account uin.
	// Note: this field may return null, indicating that no valid values can be obtained.
	OwnerUin *string `json:"OwnerUin,omitnil,omitempty" name:"OwnerUin"`

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

	// Certificate source:.
	// trustAsia.
	// upload.
	// wosign.
	// sheca.
	// Note: this field may return null, indicating that no valid values can be obtained.
	From *string `json:"From,omitnil,omitempty" name:"From"`

	// Certificate type. `CA`: client certificate; `SVR`: server certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertificateType *string `json:"CertificateType,omitnil,omitempty" name:"CertificateType"`

	// Certificate package type:.
	// null: user uploads a certificate (no package type),.
	// 2: trustasia tls rsa ca,. 
	// 3: securesite enhanced enterprise version (ev pro),. 
	// 4: securesite enhanced (ev),. 
	// 5: securesite enterprise pro (ov pro).
	// 6: securesite enterprise (ov). 
	// 7: securesite enterprise (ov) wildcard. 
	// 8: geotrust enhanced (ev). 
	// 9: geotrust enterprise (ov). 
	// 10: geotrust enterprise (ov) wildcard cert. 
	// 11: trustasia domain name-based multiple domain names ssl certificate. 
	// 12: trustasia domain name-based (dv) wildcard cert. 
	// 13: trustasia enterprise wildcard (ov) ssl certificate (d3). 
	// 14: trustasia enterprise (ov) ssl certificate (d3). 
	// 15: trustasia enterprise multiple domain names (ov) ssl certificate (d3). 
	// 16: trustasia enhanced (ev) ssl certificate (d3). 
	// 17: trustasia enhanced multiple domain names (ev) ssl certificate (d3). 
	// 18: globalsign enterprise (ov) ssl certificate. 
	// 19: globalsign enterprise wildcard (ov) ssl certificate. 
	// 20: globalsign enhanced (ev) ssl certificate. 
	// 21: trustasia enterprise wildcard multiple domain names (ov) ssl certificate (d3). 
	// 22: globalsign enterprise multiple domain names (ov) ssl certificate. 
	// 23: globalsign enterprise wildcard multiple domain names (ov) ssl certificate.
	// 24: globalsign enhanced multiple domain names (ev) ssl certificate.
	// 25: wotrus domain cert.
	// 26: wotrus multi-domain cert.
	// 27: wotrus wildcard cert.
	// 28: wotrus enterprise cert.
	// 29: wotrus enterprise multi-domain cert.
	// 30: wotrus enterprise wildcard certificate.
	// 31: wotrus enhanced certificate.
	// 32: wotrus enhanced multi-domain name certificate.
	// 33: wotrus-national cryptography domain name certificate.
	// 34: wotrus-national cryptography domain name certificate (multiple domain names).
	// 35: wotrus-national cryptography wildcard certificate.
	// 37: wotrus-national cryptography enterprise certificate.
	// 38: wotrus-national cryptography enterprise certificate (multiple domain names).
	// 39: wotrus-national cryptography enterprise certificate (wildcard).
	// 40: wotrus-national cryptography enhanced certificate.
	// 41: wotrus - national cryptography enhanced certificate (multiple domain names).
	// 42: trustasia - domain name certificate (wildcard multiple domain names).
	// 43: DNSPod - enterprise (ov) ssl certificate.
	// 44: DNSPod - enterprise (ov) wildcard ssl certificate.
	// 45: DNSPod - enterprise (ov) multiple domain names ssl certificate.
	// 46: dnspod-enhanced (ev) ssl certificate.
	// 47: dnspod-enhanced (ev) multiple domain names ssl certificate.
	// 48: dnspod-domain name-based (dv) ssl certificate.
	// 49: dnspod-domain name-based (dv) wildcard ssl certificate.
	// 50: dnspod-domain name-based (dv) multiple domain names ssl certificate.
	// 51: DNSPod (national cryptography) - enterprise (ov) ssl certificate.
	// 52: DNSPod (national cryptography) - enterprise (ov) wildcard ssl certificate.
	// 53: DNSPod (national cryptography) - enterprise (ov) multiple domain names ssl certificate.
	// 54: DNSPod (national cryptography) - domain name-based (dv) ssl certificate.
	// 55: DNSPod (national cryptography) - domain name-based (dv) wildcard ssl certificate.
	// 56: DNSPod (national cryptography) - domain name-based (dv) multiple domain names ssl certificate.
	// 57: securesite enterprise professional version multiple domain names (ov pro).
	// 58: securesite enterprise multiple domain names (ov).
	// 59: securesite enhanced professional version multiple domain names (ev pro).
	// 60: securesite enhanced multiple domain names (ev).
	// 61: geotrust enhanced multiple domain names (ev).
	// 75: securesite enterprise (ov).
	// 76: securesite enterprise (ov) wildcard.
	// 77: securesite enhanced (ev).
	// 78: geotrust enterprise (ov).
	// 79: geotrust enterprise (ov) wildcard.
	// 80: geotrust enhanced (ev).
	// 81: globalsign enterprise (ov) ssl certificate.
	// 82: globalsign enterprise wildcard (ov) ssl certificate.
	// 83: trustasia c1 dv free.
	// 85: globalsign enhanced (ev) ssl certificate.
	// 88: globalsign enterprise wildcard multiple domain names (ov) ssl certificate.
	// 89: globalsign enterprise multiple domain names (ov) ssl certificate.
	// 90: globalsign enhanced multiple domain names (ev) ssl certificate.
	// 91: geotrust enhanced multiple domain names (ev).
	// 92: securesite enterprise ov pro for multiple domain names.
	// 93: securesite enterprise for multiple domain names (ov).
	// 94: securesite ev pro for multiple domain names.
	// 95: securesite ev for multiple domain names.
	// 96: securesite ev pro.
	// 97: securesite enterprise professional edition (ov pro).
	// 98: cfca enterprise (ov) ssl certificate.
	// 99: cfca enterprise multiple domain names (ov) ssl certificate.
	// 100: cfca enterprise wildcard (ov) ssl certificate.
	// 101: cfca enhanced (ev) ssl certificate.
	// Note: this field may return null, indicating that no valid values can be obtained.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

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

	// Certificate binds to a common name domain.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Certificate status: 0 = under review, 1 = approved, 2 = review failed, 3 = expired, 4 = automatically added dns records, 5 = enterprise certificate, pending document submission, 6 = order cancellation in progress, 7 = canceled, 8 = documents submitted, pending upload of confirmation letter, 9 = certificate revocation in progress, 10 = revoked, 11 = reissue in progress, 12 = pending upload of revocation confirmation letter, 13 = free certificate pending document submission, 14 = certificate has been refunded, 15 = certificate migration in progress.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Status information. valid values:.
	// //Common status information.
	// PRE-REVIEWING: in prereview.
	// LEGAL-REVIEWING: in legal review.
	// CA-REVIEWING: in ca review.
	// PENDING-DCV: in domain verification.
	// WAIT-ISSUE: waiting for issue (domain verification passed).
	// Certificate review failure status information.
	// 1. order review failed.
	// 2. ca review failed, and the domain name did not pass the security review.
	// 3. domain name verification timed out, and the order was automatically closed. please reapply for the certificate.
	// 4. the certificate information did not pass the review of the certificate ca agency. the reviewer will call the contact information reserved for the certificate. please pay attention to the incoming call. subsequently, you can resubmit the information through "modify information".
	// To be continuously improved.
	// Note: this field may return null, indicating that no valid values can be obtained.
	StatusMsg *string `json:"StatusMsg,omitnil,omitempty" name:"StatusMsg"`

	// Validation type. `DNS_AUTO`: automatic DNS validation; `DNS`: manual DNS validation; `FILE`: file validation; `EMAIL`: email validation
	// Note: this field may return null, indicating that no valid values can be obtained.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// Vulnerability scanning status
	// Note: this field may return null, indicating that no valid values can be obtained.
	VulnerabilityStatus *string `json:"VulnerabilityStatus,omitnil,omitempty" name:"VulnerabilityStatus"`

	// Time when the certificate takes effect
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertBeginTime *string `json:"CertBeginTime,omitnil,omitempty" name:"CertBeginTime"`

	// Time when the certificate expires
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertEndTime *string `json:"CertEndTime,omitnil,omitempty" name:"CertEndTime"`

	// Validity period of the certificate, in months
	// Note: this field may return null, indicating that no valid values can be obtained.
	ValidityPeriod *string `json:"ValidityPeriod,omitnil,omitempty" name:"ValidityPeriod"`

	// Certificate application time.
	// Note: this field may return null, indicating that no valid values can be obtained.
	InsertTime *string `json:"InsertTime,omitnil,omitempty" name:"InsertTime"`

	// CA order id.
	// Note: this field may return null, indicating that no valid values can be obtained.
	OrderId *string `json:"OrderId,omitnil,omitempty" name:"OrderId"`

	// Extended information of the certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertificateExtra *CertificateExtra `json:"CertificateExtra,omitnil,omitempty" name:"CertificateExtra"`

	// Private key certificate; for Chinese SM certificates, it refers to the private key certificate in the signature certificate.
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertificatePrivateKey *string `json:"CertificatePrivateKey,omitnil,omitempty" name:"CertificatePrivateKey"`

	// Public key certificate; for Chinese SM certificate, it refers to the public key certificate in the signature certificate.
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertificatePublicKey *string `json:"CertificatePublicKey,omitnil,omitempty" name:"CertificatePublicKey"`

	// Certificate domain name verification information.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthDetail *DvAuthDetail `json:"DvAuthDetail,omitnil,omitempty" name:"DvAuthDetail"`

	// Vulnerability scanning assessment report
	// Note: this field may return null, indicating that no valid values can be obtained.
	VulnerabilityReport *string `json:"VulnerabilityReport,omitnil,omitempty" name:"VulnerabilityReport"`

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

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

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

	// Multiple domain names included in the certificate (excluding the primary domain name, which uses the `Domain` field)
	// Note: This field may return null, indicating that no valid values can be obtained.
	SubjectAltName []*string `json:"SubjectAltName,omitnil,omitempty" name:"SubjectAltName"`

	// Whether the certificate is a paid one.
	// Note: This field may return null, indicating that no valid values can be obtained.
	IsVip *bool `json:"IsVip,omitnil,omitempty" name:"IsVip"`

	// Whether the certificate is a wildcard certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	IsWildcard *bool `json:"IsWildcard,omitnil,omitempty" name:"IsWildcard"`

	// Whether the certificate is a DV certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	IsDv *bool `json:"IsDv,omitnil,omitempty" name:"IsDv"`

	// Whether the vulnerability scanning feature is enabled
	// Note: this field may return null, indicating that no valid values can be obtained.
	IsVulnerability *bool `json:"IsVulnerability,omitnil,omitempty" name:"IsVulnerability"`

	// Profile information submitted for paid certificates.
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubmittedData *SubmittedData `json:"SubmittedData,omitnil,omitempty" name:"SubmittedData"`

	// Whether the certificate can be renewed.
	// Note: This field may return null, indicating that no valid values can be obtained.
	RenewAble *bool `json:"RenewAble,omitnil,omitempty" name:"RenewAble"`

	// Whether the certificate can be deployed
	// Note: this field may return null, indicating that no valid values can be obtained.
	Deployable *bool `json:"Deployable,omitnil,omitempty" name:"Deployable"`

	// List of associated tags
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

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

	// Chinese SM certificate public key, only has value for national cryptography certificates.
	// Note: this field may return null, indicating that no valid values can be obtained.
	EncryptCert *string `json:"EncryptCert,omitnil,omitempty" name:"EncryptCert"`

	// Chinese SM certificate private key certificate, only has value for national cryptography certificates.
	// Note: this field may return null, indicating that no valid values can be obtained.
	EncryptPrivateKey *string `json:"EncryptPrivateKey,omitnil,omitempty" name:"EncryptPrivateKey"`

	// SHA1 fingerprint of the signature certificate
	// Note: This field may return null, indicating that no valid values can be obtained.
	CertFingerprint *string `json:"CertFingerprint,omitnil,omitempty" name:"CertFingerprint"`

	// SHA1 fingerprint of the encryption certificate (for Chinese SM certificates only)
	// Note: This field may return null, indicating that no valid values can be obtained.
	EncryptCertFingerprint *string `json:"EncryptCertFingerprint,omitnil,omitempty" name:"EncryptCertFingerprint"`

	// Certificate encryption algorithm (or Chinese SM certificates only).
	// Note: this field may return null, indicating that no valid values can be obtained.
	EncryptAlgorithm *string `json:"EncryptAlgorithm,omitnil,omitempty" name:"EncryptAlgorithm"`

	// The authentication value for DV certificate revocation.
	// Note: This field may return null, indicating that no valid values can be obtained.
	DvRevokeAuthDetail []*DvAuths `json:"DvRevokeAuthDetail,omitnil,omitempty" name:"DvRevokeAuthDetail"`

	// Certificate chain information.
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertChainInfo []*CertBasicInfo `json:"CertChainInfo,omitnil,omitempty" name:"CertChainInfo"`

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

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

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

// Predefined struct for user
type DescribeCertificateOperateLogsRequestParams struct {
	// Offset. The default value is 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of requested logs, 20 by default, with a maximum value of 1000. if it exceeds 1000, it will be treated as 1000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Start time. The default value is 15 days ago.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time. The default value is the current time.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DescribeCertificateOperateLogsRequest struct {
	*tchttp.BaseRequest
	
	// Offset. The default value is 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of requested logs, 20 by default, with a maximum value of 1000. if it exceeds 1000, it will be treated as 1000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Start time. The default value is 15 days ago.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time. The default value is the current time.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeCertificateOperateLogsRequest) 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, "StartTime")
	delete(f, "EndTime")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCertificateOperateLogsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCertificateOperateLogsResponseParams struct {
	// Total number of logs that meet query conditions
	AllTotal *uint64 `json:"AllTotal,omitnil,omitempty" name:"AllTotal"`

	// Number of logs returned for this request
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Certificate operation log list
	// Note: this field may return null, indicating that no valid values can be obtained.
	OperateLogs []*OperationLog `json:"OperateLogs,omitnil,omitempty" name:"OperateLogs"`

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

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

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

// Predefined struct for user
type DescribeCertificateRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

type DescribeCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

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

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

// Predefined struct for user
type DescribeCertificateResponseParams struct {
	// User UIN
	// Note: this field may return null, indicating that no valid values can be obtained.
	OwnerUin *string `json:"OwnerUin,omitnil,omitempty" name:"OwnerUin"`

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

	// Certificate source:
	// trustAsia.
	// upload.
	// wosign.
	// sheca.
	// Note: this field may return null, indicating that no valid values can be obtained.
	From *string `json:"From,omitnil,omitempty" name:"From"`

	// Certificate type. `CA`: client certificate; `SVR`: server certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertificateType *string `json:"CertificateType,omitnil,omitempty" name:"CertificateType"`

	// Certificate package type:.
	// Null: user uploads a certificate (without package type),.
	// 2: trustasia tls rsa ca,. 
	// 3: securesite enhanced enterprise edition (ev pro),. 
	// 4: securesite enhanced (ev),. 
	// 5: securesite enterprise professional edition (ov pro).
	// 6: securesite enterprise edition (ov). 
	// 7: securesite enterprise edition (ov) wildcard. 
	// 8: geotrust enhanced (ev). 
	// 9: geotrust enterprise edition (ov). 
	// 10: geotrust enterprise (ov) wildcard cert. 
	// 11: trustasia domain name-based multiple domain names ssl certificate. 
	// 12: trustasia domain name-based (dv) wildcard cert. 
	// 13: trustasia enterprise wildcard (ov) ssl certificate (d3). 
	// 14: trustasia enterprise (ov) ssl certificate (d3). 
	// 15: trustasia enterprise multiple domain names (ov) ssl certificate (d3). 
	// 16: trustasia enhanced (ev) ssl certificate (d3). 
	// 17: trustasia enhanced multiple domain names (ev) ssl certificate (d3). 
	// 18: globalsign enterprise (ov) ssl certificate. 
	// 19: globalsign enterprise wildcard (ov) ssl certificate. 
	// 20: globalsign enhanced (ev) ssl certificate. 
	// 21: trustasia enterprise wildcard multiple domain names (ov) ssl certificate (d3). 
	// 22: globalsign enterprise multiple domain names (ov) ssl certificate. 
	// 23: globalsign enterprise wildcard multiple domain names (ov) ssl certificate.
	// 24: globalsign enhanced multiple domain names (ev) ssl certificate.
	// 25: wotrus domain cert.
	// 26: wotrus multi - domain name cert.
	// 27: wotrus wildcard cert.
	// 28: wotrus enterprise cert.
	// 29: wotrus enterprise multi - domain name cert.
	// 30: wotrus enterprise wildcard certificate.
	// 31: wotrus enhanced certificate.
	// 32: wotrus enhanced multi - domain name certificate.
	// 33: wotrus - national cryptography domain - name certificate.
	// 34: wotrus - national cryptography domain - name certificate (multiple domain names).
	// 35: wotrus-national cryptography wildcard domain certificate.
	// 37: wotrus-national cryptography enterprise certificate.
	// 38: wotrus-national cryptography enterprise certificate (multiple domain names).
	// 39: wotrus-national cryptography enterprise certificate (wildcard).
	// 40: wotrus-national cryptography enhanced certificate.
	// 41: wotrus - national cryptography enhanced certificate (multiple domain names).
	// 42: trustasia - domain name certificate (wildcard multiple domain names).
	// 43: DNSPod - enterprise (ov) ssl certificate.
	// 44: DNSPod - enterprise (ov) wildcard ssl certificate.
	// 45: DNSPod - enterprise (ov) multiple domain names ssl certificate.
	// 46: dnspod-enhanced (ev) ssl certificate.
	// 47: dnspod-enhanced (ev) multiple domain names ssl certificate.
	// 48: dnspod-domain name-based (dv) ssl certificate.
	// 49: dnspod-domain name-based (dv) wildcard ssl certificate.
	// 50: dnspod-domain name-based (dv) multiple domain names ssl certificate.
	// 51: DNSPod (national cryptography) - enterprise (ov) ssl certificate.
	// 52: DNSPod (national cryptography) - enterprise (ov) wildcard ssl certificate.
	// 53: DNSPod (national cryptography) - enterprise (ov) multiple domain names ssl certificate.
	// 54: DNSPod (national cryptography) - domain name-based (dv) ssl certificate.
	// 55: DNSPod (national cryptography) - domain name-based (dv) wildcard ssl certificate.
	// 56: DNSPod (national cryptography) - domain name-based (dv) multiple domain names ssl certificate.
	// 57: securesite enterprise professional version multiple domain names (ov pro).
	// 58: securesite enterprise multiple domain names (ov).
	// 59: securesite enhanced professional version multiple domain names (ev pro).
	// 60: securesite enhanced multiple domain names (ev).
	// 61: geotrust enhanced multiple domain names (ev).
	// 75: securesite enterprise (ov).
	// 76: securesite enterprise (ov) wildcard.
	// 77: securesite enhanced (ev).
	// 78: geotrust enterprise (ov).
	// 79: geotrust enterprise (ov) wildcard.
	// 80: geotrust enhanced (ev).
	// 81: globalsign enterprise (ov) ssl certificate.
	// 82: globalsign enterprise wildcard (ov) ssl certificate.
	// 83: trustasia c1 dv free.
	// 85: globalsign enhanced (ev) ssl certificate.
	// 88: globalsign enterprise wildcard multiple domain names (ov) ssl certificate.
	// 89: globalsign enterprise multiple domain names (ov) ssl certificate.
	// 90: globalsign enhanced multiple domain names (ev) ssl certificate.
	// 91: geotrust enhanced multiple domain names (ev).
	// 92: securesite enterprise ov pro for multiple domain names.
	// 93: securesite enterprise for multiple domain names (ov).
	// 94: securesite ev pro for multiple domain names.
	// 95: securesite ev for multiple domain names.
	// 96: securesite ev pro.
	// 97: securesite enterprise professional version (ov pro).
	// 98: cfca enterprise (ov) ssl certificate.
	// 99: cfca enterprise multiple domain names (ov) ssl certificate.
	// 100: cfca enterprise wildcard (ov) ssl certificate.
	// 101: cfca enhanced (ev) ssl certificate.
	// Note: this field may return null, indicating that no valid values can be obtained.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

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

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

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

	// Certificate status: 0 = under review, 1 = approved, 2 = review failed, 3 = expired, 4 = dns records added automatically, 5 = enterprise certificate, pending documentation submission, 6 = order cancellation in progress, 7 = canceled, 8 = documents submitted, pending upload of confirmation letter, 9 = certificate revocation in progress, 10 = revoked, 11 = reissue in progress, 12 = pending upload of revocation confirmation letter, 13 = free certificate pending document submission, 14 = certificate has been refunded, 15 = certificate migration in progress.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Status information. valid values:.
	// //Common status information.
	// 1. pre-reviewing: prereviewing.
	// 2. legal-reviewing: under legal review.
	// 3. ca-reviewing: under ca review.
	// 4. pending-dcv: under domain verification.
	// 5. wait-issue: waiting for issuance (domain verification passed).
	// //Certificate review failure status information.
	// Order review failed.
	// CA review failed; the domain name did not pass the security review.
	// Domain verification timed out, and the order was automatically closed. please reapply for the certificate.
	// The certificate information did not pass the review by the certificate authority. the reviewer will call the contact information reserved for the certificate. please pay attention to the incoming call. subsequently, you can resubmit the information through "modify information".
	// To be continuously improved.
	// Note: this field may return null, indicating that no valid values can be obtained.
	StatusMsg *string `json:"StatusMsg,omitnil,omitempty" name:"StatusMsg"`

	// Validation type: DNS_AUTO = automatic dns validation, DNS = manual dns validation, FILE = file verification, DNS_PROXY = dns proxy validation, FILE_PROXY = file proxy validation.
	// Note: this field may return null, indicating that no valid values can be obtained.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// Vulnerability scanning status
	// Note: this field may return null, indicating that no valid values can be obtained.
	VulnerabilityStatus *string `json:"VulnerabilityStatus,omitnil,omitempty" name:"VulnerabilityStatus"`

	// Time when the certificate takes effect
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertBeginTime *string `json:"CertBeginTime,omitnil,omitempty" name:"CertBeginTime"`

	// Time when the certificate expires
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertEndTime *string `json:"CertEndTime,omitnil,omitempty" name:"CertEndTime"`

	// Validity period of the certificate, in months
	// Note: this field may return null, indicating that no valid values can be obtained.
	ValidityPeriod *string `json:"ValidityPeriod,omitnil,omitempty" name:"ValidityPeriod"`

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

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

	// Extended information of the certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	CertificateExtra *CertificateExtra `json:"CertificateExtra,omitnil,omitempty" name:"CertificateExtra"`

	// DV authentication information
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthDetail *DvAuthDetail `json:"DvAuthDetail,omitnil,omitempty" name:"DvAuthDetail"`

	// Vulnerability scanning assessment report
	// Note: this field may return null, indicating that no valid values can be obtained.
	VulnerabilityReport *string `json:"VulnerabilityReport,omitnil,omitempty" name:"VulnerabilityReport"`

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

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

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

	// Domain names associated with the certificate (including the primary domain name)
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubjectAltName []*string `json:"SubjectAltName,omitnil,omitempty" name:"SubjectAltName"`

	// Whether the customer is a VIP customer
	// Note: this field may return null, indicating that no valid values can be obtained.
	IsVip *bool `json:"IsVip,omitnil,omitempty" name:"IsVip"`

	// Whether the certificate is a wildcard certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	IsWildcard *bool `json:"IsWildcard,omitnil,omitempty" name:"IsWildcard"`

	// Whether the certificate is a DV certificate
	// Note: this field may return null, indicating that no valid values can be obtained.
	IsDv *bool `json:"IsDv,omitnil,omitempty" name:"IsDv"`

	// Whether the vulnerability scanning feature is enabled
	// Note: this field may return null, indicating that no valid values can be obtained.
	IsVulnerability *bool `json:"IsVulnerability,omitnil,omitempty" name:"IsVulnerability"`

	// Whether the certificate can be reissued
	// Note: this field may return null, indicating that no valid values can be obtained.
	RenewAble *bool `json:"RenewAble,omitnil,omitempty" name:"RenewAble"`

	// Submitted data
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubmittedData *SubmittedData `json:"SubmittedData,omitnil,omitempty" name:"SubmittedData"`

	// Whether the certificate can be deployed
	// Note: this field may return null, indicating that no valid values can be obtained.
	Deployable *bool `json:"Deployable,omitnil,omitempty" name:"Deployable"`

	// List of tags
	// Note: this field may return `null`, indicating that no valid values can be obtained.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

	// All encryption methods of the ca certificate. only valid when the certificate type CertificateType is ca.
	// Note: this field may return null, indicating that no valid values can be obtained.
	CAEncryptAlgorithms []*string `json:"CAEncryptAlgorithms,omitnil,omitempty" name:"CAEncryptAlgorithms"`

	// All common names of the ca certificate. only valid when the certificate type CertificateType is ca.
	// Note: this field may return null, indicating that no valid values can be obtained.
	CACommonNames []*string `json:"CACommonNames,omitnil,omitempty" name:"CACommonNames"`

	// All expiration times of the ca certificate. only valid when the certificate type CertificateType is ca.
	// Note: this field may return null, indicating that no valid values can be obtained.
	CAEndTimes []*string `json:"CAEndTimes,omitnil,omitempty" name:"CAEndTimes"`

	// The authentication value for DV certificate revocation.
	// Note: This field may return null, indicating that no valid values can be obtained.
	DvRevokeAuthDetail []*DvAuths `json:"DvRevokeAuthDetail,omitnil,omitempty" name:"DvRevokeAuthDetail"`

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

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

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

// Predefined struct for user
type DescribeCertificatesRequestParams struct {
	// Pagination offset, starting from 0. default is 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of items per page. default is 10. maximum value is 1000; values exceeding 1000 will be treated as 1000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords, supporting fuzzy match by certificate id, remark name, and certificate domain name.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// Certificate type. `CA`: client certificate; `SVR`: server certificate
	CertificateType *string `json:"CertificateType,omitnil,omitempty" name:"CertificateType"`

	// Project ID
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Default sorting is by certificate application time in descending order. Sort by expiration date if the following values are passed: DESC for descending order of certificate expiration time, ASC for ascending order.
	ExpirationSort *string `json:"ExpirationSort,omitnil,omitempty" name:"ExpirationSort"`

	// Certificate status: 0=under review, 1=approved, 2=review failed, 3=expired, 4=dns record added, 5=enterprise certificate, pending submission, 6=order cancellation in progress, 7=canceled, 8=documents submitted, pending upload of confirmation letter, 9=certificate revocation in progress, 10=revoked, 11=reissue in progress, 12=pending upload of revocation confirmation letter, 13=free certificate pending document submission, 14=refunded, 15=certificate migration in progress.
	CertificateStatus []*uint64 `json:"CertificateStatus,omitnil,omitempty" name:"CertificateStatus"`

	// Whether the certificate can be deployed. `1`: yes; `0`: no
	Deployable *uint64 `json:"Deployable,omitnil,omitempty" name:"Deployable"`

	// Whether to filter uploaded hosted certificates. `1`: Yes; `0`: No.
	Upload *int64 `json:"Upload,omitnil,omitempty" name:"Upload"`

	// Whether to filter renewable certificates. `1`: Yes; `0`: No.
	Renew *int64 `json:"Renew,omitnil,omitempty" name:"Renew"`

	// Filter by source. `upload`: Uploaded certificate; `buy`: Tencent Cloud certificate. If this parameter is left empty, all certificates will be queried.
	FilterSource *string `json:"FilterSource,omitnil,omitempty" name:"FilterSource"`

	// Whether to filter Chinese SM certificates. `1`: Yes; `0`: No.
	IsSM *int64 `json:"IsSM,omitnil,omitempty" name:"IsSM"`

	// Whether to filter expiring certificates. `1`: Yes; `0`: No.
	FilterExpiring *uint64 `json:"FilterExpiring,omitnil,omitempty" name:"FilterExpiring"`

	// Whether the certificate can be hosted. Valid values: `1` for yes and `0` for no.
	Hostable *uint64 `json:"Hostable,omitnil,omitempty" name:"Hostable"`

	// Filter certificates with specified tags.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to filter certificates pending issue: 1 for filtering, 0 and null for no filtering.
	IsPendingIssue *int64 `json:"IsPendingIssue,omitnil,omitempty" name:"IsPendingIssue"`

	// Filter certificates by the specified certificate id, only supports certificate ids with permission.
	CertIds []*string `json:"CertIds,omitnil,omitempty" name:"CertIds"`
}

type DescribeCertificatesRequest struct {
	*tchttp.BaseRequest
	
	// Pagination offset, starting from 0. default is 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of items per page. default is 10. maximum value is 1000; values exceeding 1000 will be treated as 1000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords, supporting fuzzy match by certificate id, remark name, and certificate domain name.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// Certificate type. `CA`: client certificate; `SVR`: server certificate
	CertificateType *string `json:"CertificateType,omitnil,omitempty" name:"CertificateType"`

	// Project ID
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Default sorting is by certificate application time in descending order. Sort by expiration date if the following values are passed: DESC for descending order of certificate expiration time, ASC for ascending order.
	ExpirationSort *string `json:"ExpirationSort,omitnil,omitempty" name:"ExpirationSort"`

	// Certificate status: 0=under review, 1=approved, 2=review failed, 3=expired, 4=dns record added, 5=enterprise certificate, pending submission, 6=order cancellation in progress, 7=canceled, 8=documents submitted, pending upload of confirmation letter, 9=certificate revocation in progress, 10=revoked, 11=reissue in progress, 12=pending upload of revocation confirmation letter, 13=free certificate pending document submission, 14=refunded, 15=certificate migration in progress.
	CertificateStatus []*uint64 `json:"CertificateStatus,omitnil,omitempty" name:"CertificateStatus"`

	// Whether the certificate can be deployed. `1`: yes; `0`: no
	Deployable *uint64 `json:"Deployable,omitnil,omitempty" name:"Deployable"`

	// Whether to filter uploaded hosted certificates. `1`: Yes; `0`: No.
	Upload *int64 `json:"Upload,omitnil,omitempty" name:"Upload"`

	// Whether to filter renewable certificates. `1`: Yes; `0`: No.
	Renew *int64 `json:"Renew,omitnil,omitempty" name:"Renew"`

	// Filter by source. `upload`: Uploaded certificate; `buy`: Tencent Cloud certificate. If this parameter is left empty, all certificates will be queried.
	FilterSource *string `json:"FilterSource,omitnil,omitempty" name:"FilterSource"`

	// Whether to filter Chinese SM certificates. `1`: Yes; `0`: No.
	IsSM *int64 `json:"IsSM,omitnil,omitempty" name:"IsSM"`

	// Whether to filter expiring certificates. `1`: Yes; `0`: No.
	FilterExpiring *uint64 `json:"FilterExpiring,omitnil,omitempty" name:"FilterExpiring"`

	// Whether the certificate can be hosted. Valid values: `1` for yes and `0` for no.
	Hostable *uint64 `json:"Hostable,omitnil,omitempty" name:"Hostable"`

	// Filter certificates with specified tags.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to filter certificates pending issue: 1 for filtering, 0 and null for no filtering.
	IsPendingIssue *int64 `json:"IsPendingIssue,omitnil,omitempty" name:"IsPendingIssue"`

	// Filter certificates by the specified certificate id, only supports certificate ids with permission.
	CertIds []*string `json:"CertIds,omitnil,omitempty" name:"CertIds"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeCertificatesRequest) 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, "SearchKey")
	delete(f, "CertificateType")
	delete(f, "ProjectId")
	delete(f, "ExpirationSort")
	delete(f, "CertificateStatus")
	delete(f, "Deployable")
	delete(f, "Upload")
	delete(f, "Renew")
	delete(f, "FilterSource")
	delete(f, "IsSM")
	delete(f, "FilterExpiring")
	delete(f, "Hostable")
	delete(f, "Tags")
	delete(f, "IsPendingIssue")
	delete(f, "CertIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCertificatesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCertificatesResponseParams struct {
	// Total number
	// Note: this field may return null, indicating that no valid values can be obtained.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// List
	// Note: this field may return null, indicating that no valid values can be obtained.
	Certificates []*Certificates `json:"Certificates,omitnil,omitempty" name:"Certificates"`

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

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

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

// Predefined struct for user
type DescribeCompaniesRequestParams struct {
	// Paging offset. Default value: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Page limit per page. Default value: 0. Maximum value: 1000.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// company ID
	CompanyId *int64 `json:"CompanyId,omitnil,omitempty" name:"CompanyId"`
}

type DescribeCompaniesRequest struct {
	*tchttp.BaseRequest
	
	// Paging offset. Default value: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Page limit per page. Default value: 0. Maximum value: 1000.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// company ID
	CompanyId *int64 `json:"CompanyId,omitnil,omitempty" name:"CompanyId"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeCompaniesRequest) 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, "CompanyId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCompaniesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeCompaniesResponseParams struct {
	// Company List
	Companies []*CompanyInfo `json:"Companies,omitnil,omitempty" name:"Companies"`

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

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeCompaniesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCompaniesResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeHostTeoInstanceListRequestParams struct {
	// The ID of the certificate to be deployed.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// The type of resource for certificate deployment.
	//
	// Deprecated: ResourceType is deprecated.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// Whether to query the cached results. Valid values: `1` (yes) and `0` (no). By default, the cached results within 30 minutes are queried.
	IsCache *uint64 `json:"IsCache,omitnil,omitempty" name:"IsCache"`

	// The list of filter parameters. FilterKey: domainMatch (query the list of instances with matching or non-matching domains). FilterValue: `1` (default; query the list of instances with matching domains) or `0` (query the list of instances with non-matching domains).
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// The ID of the deployed certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

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

	// Number of items per page. default: 10. maximum value: 200.	
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Asynchronous or not. 1 means yes, 0 means no. default: 0.
	AsyncCache *int64 `json:"AsyncCache,omitnil,omitempty" name:"AsyncCache"`
}

type DescribeHostTeoInstanceListRequest struct {
	*tchttp.BaseRequest
	
	// The ID of the certificate to be deployed.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// The type of resource for certificate deployment.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// Whether to query the cached results. Valid values: `1` (yes) and `0` (no). By default, the cached results within 30 minutes are queried.
	IsCache *uint64 `json:"IsCache,omitnil,omitempty" name:"IsCache"`

	// The list of filter parameters. FilterKey: domainMatch (query the list of instances with matching or non-matching domains). FilterValue: `1` (default; query the list of instances with matching domains) or `0` (query the list of instances with non-matching domains).
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// The ID of the deployed certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

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

	// Number of items per page. default: 10. maximum value: 200.	
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Asynchronous or not. 1 means yes, 0 means no. default: 0.
	AsyncCache *int64 `json:"AsyncCache,omitnil,omitempty" name:"AsyncCache"`
}

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

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

// Predefined struct for user
type DescribeHostTeoInstanceListResponseParams struct {
	// Teo instance list. if no value is obtained, an empty array is returned.
	// Note: this field may return null, indicating that no valid values can be obtained.
	InstanceList []*TeoInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// The total count.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeHostTeoInstanceListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeHostTeoInstanceListResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeHostUpdateRecordDetailRequestParams struct {
	// Deployment record id, which is the record id returned by calling the UpdateCertificateInstance api, or the record id returned by calling the UpdateCertificateRecordRollback rollback api.
	DeployRecordId *string `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Number of items per page. the default is 10. the maximum value is 200.
	Limit *string `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset, starting from 0. default is 0.
	Offset *string `json:"Offset,omitnil,omitempty" name:"Offset"`
}

type DescribeHostUpdateRecordDetailRequest struct {
	*tchttp.BaseRequest
	
	// Deployment record id, which is the record id returned by calling the UpdateCertificateInstance api, or the record id returned by calling the UpdateCertificateRecordRollback rollback api.
	DeployRecordId *string `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Number of items per page. the default is 10. the maximum value is 200.
	Limit *string `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset, starting from 0. default is 0.
	Offset *string `json:"Offset,omitnil,omitempty" name:"Offset"`
}

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

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

// Predefined struct for user
type DescribeHostUpdateRecordDetailResponseParams struct {
	// If the total number cannot be obtained, return 0.
	// Note: this field may return null, indicating that no valid values can be obtained.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Certificate deployment record list; returns an empty array if no value is obtained.
	// Note: this field may return null, indicating that no valid values can be obtained.
	RecordDetailList []*UpdateRecordDetails `json:"RecordDetailList,omitnil,omitempty" name:"RecordDetailList"`

	// Total number of successes; returns 0 if unavailable.
	// Note: this field may return null, indicating that no valid values can be obtained.
	SuccessTotalCount *int64 `json:"SuccessTotalCount,omitnil,omitempty" name:"SuccessTotalCount"`

	// Total number of failures. if it cannot be obtained, return 0.
	// Note: this field may return null, indicating that no valid values can be obtained.
	FailedTotalCount *int64 `json:"FailedTotalCount,omitnil,omitempty" name:"FailedTotalCount"`

	// Total number of deployments in progress; returns 0 if unavailable.
	// Note: this field may return null, indicating that no valid values can be obtained.
	RunningTotalCount *int64 `json:"RunningTotalCount,omitnil,omitempty" name:"RunningTotalCount"`

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

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

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

// Predefined struct for user
type DescribeHostUpdateRecordRequestParams struct {
	// Paging offset, starting from 0
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number per page, 10 by default.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// New certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Old certificate ID
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`
}

type DescribeHostUpdateRecordRequest struct {
	*tchttp.BaseRequest
	
	// Paging offset, starting from 0
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number per page, 10 by default.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// New certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Old certificate ID
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHostUpdateRecordRequest) 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, "CertificateId")
	delete(f, "OldCertificateId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeHostUpdateRecordRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeHostUpdateRecordResponseParams struct {
	// Total count
	// Note: This field may return null, indicating that no valid value can be obtained.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Certificate deployment record list
	// Note: This field may return null, indicating that no valid value can be obtained.
	DeployRecordList []*UpdateRecordInfo `json:"DeployRecordList,omitnil,omitempty" name:"DeployRecordList"`

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

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

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

// Predefined struct for user
type DescribeHostUploadUpdateRecordDetailRequestParams struct {
	// Hosting record ID.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Number of items per page. default is 10, maximum is 200. exceeds 200 will be set to 200.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

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

type DescribeHostUploadUpdateRecordDetailRequest struct {
	*tchttp.BaseRequest
	
	// Hosting record ID.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Number of items per page. default is 10, maximum is 200. exceeds 200 will be set to 200.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

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

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

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

// Predefined struct for user
type DescribeHostUploadUpdateRecordDetailResponseParams struct {
	// Hosting record detail list.
	DeployRecordDetail []*DeployRecord `json:"DeployRecordDetail,omitnil,omitempty" name:"DeployRecordDetail"`

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

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

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

// Predefined struct for user
type DescribeHostUploadUpdateRecordRequestParams struct {
	// Pagination offset, starting from 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of items per page. default is 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Original certificate ID
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`
}

type DescribeHostUploadUpdateRecordRequest struct {
	*tchttp.BaseRequest
	
	// Pagination offset, starting from 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of items per page. default is 10.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Original certificate ID
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHostUploadUpdateRecordRequest) 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, "OldCertificateId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeHostUploadUpdateRecordRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

	// Certificate deployment record list.
	DeployRecordList []*UploadUpdateRecordInfo `json:"DeployRecordList,omitnil,omitempty" name:"DeployRecordList"`

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

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

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

// Predefined struct for user
type DescribeManagersRequestParams struct {
	// Company ID, obtain through the API DescribeCompanies
	CompanyId *int64 `json:"CompanyId,omitnil,omitempty" name:"CompanyId"`

	// Pagination offset. If not provided, default value is 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination quantity per page. If not provided, the default value is 10. Maximum value is 1000.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Manager name (deprecated). Please use SearchKey.
	ManagerName *string `json:"ManagerName,omitnil,omitempty" name:"ManagerName"`

	// Fuzzy query manager mailbox (deprecated), please use SearchKey
	ManagerMail *string `json:"ManagerMail,omitnil,omitempty" name:"ManagerMail"`

	// Filter based on manager status. Valid values:
	// 'none' pending review
	// 'audit', reviewing by AsiaInfo
	// 'CAaudit' CA under review
	// 'ok' reviewed
	// 'review failed' for 'invalid'
	// expiring soon
	// expired
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Based on the format: manager surname|manager name|mailbox|department, perform accurate matching
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`
}

type DescribeManagersRequest struct {
	*tchttp.BaseRequest
	
	// Company ID, obtain through the API DescribeCompanies
	CompanyId *int64 `json:"CompanyId,omitnil,omitempty" name:"CompanyId"`

	// Pagination offset. If not provided, default value is 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination quantity per page. If not provided, the default value is 10. Maximum value is 1000.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Manager name (deprecated). Please use SearchKey.
	ManagerName *string `json:"ManagerName,omitnil,omitempty" name:"ManagerName"`

	// Fuzzy query manager mailbox (deprecated), please use SearchKey
	ManagerMail *string `json:"ManagerMail,omitnil,omitempty" name:"ManagerMail"`

	// Filter based on manager status. Valid values:
	// 'none' pending review
	// 'audit', reviewing by AsiaInfo
	// 'CAaudit' CA under review
	// 'ok' reviewed
	// 'review failed' for 'invalid'
	// expiring soon
	// expired
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Based on the format: manager surname|manager name|mailbox|department, perform accurate matching
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`
}

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

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

// Predefined struct for user
type DescribeManagersResponseParams struct {
	// List of company managers
	Managers []*ManagerInfo `json:"Managers,omitnil,omitempty" name:"Managers"`

	// Total number of company managers
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeManagersResponse struct {
	*tchttp.BaseResponse
	Response *DescribeManagersResponseParams `json:"Response"`
}

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

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

type DomainValidationResult struct {
	// Domain names bound to the certificate.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Domain name validation type. Value is DNS, FILE, DNS_AUTO, DNS_PROXY, or FILE_PROXY.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// Tencent Cloud detection result, Value: 1 (verified); -1 (rate limited or txt record not found); -2 (txt record not match); -3 (ns record not found); -4 (file not found); -5 (file not match); -6 (cname record not found); -7 (cname record not match); -8 (ns record not found); -9 (file not found); -10 (file not match).
	LocalCheck *int64 `json:"LocalCheck,omitnil,omitempty" name:"LocalCheck"`

	// CA check result. Value: -1 (detection failed); 2 (detection passed).
	CaCheck *int64 `json:"CaCheck,omitnil,omitempty" name:"CaCheck"`

	// Check failure reasons. Description of the LocalCheck status.
	LocalCheckFailReason *string `json:"LocalCheckFailReason,omitnil,omitempty" name:"LocalCheckFailReason"`

	// Detected value.
	CheckValue []*string `json:"CheckValue,omitnil,omitempty" name:"CheckValue"`

	// Whether the request is rate-limited. Valid values: false (not rate-limited); true (rate-limited).
	Frequently *bool `json:"Frequently,omitnil,omitempty" name:"Frequently"`

	// Whether the certificate has been issued. Value: false (not issued); true (issued).
	Issued *bool `json:"Issued,omitnil,omitempty" name:"Issued"`
}

// Predefined struct for user
type DownloadCertificateRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

type DownloadCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

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

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

// Predefined struct for user
type DownloadCertificateResponseParams struct {
	// ZIP content encoded by using Base64. After the content is decoded by using Base64, it can be saved as a ZIP file.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Content *string `json:"Content,omitnil,omitempty" name:"Content"`

	// MIME type. `application/zip`: ZIP file
	// Note: this field may return null, indicating that no valid values can be obtained.
	ContentType *string `json:"ContentType,omitnil,omitempty" name:"ContentType"`

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

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

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

type DvAuthDetail struct {
	// Certificate domain name verification record key.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthKey *string `json:"DvAuthKey,omitnil,omitempty" name:"DvAuthKey"`

	// Certificate domain name verification record value.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthValue *string `json:"DvAuthValue,omitnil,omitempty" name:"DvAuthValue"`

	// Certificate domain name verification domain value.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthDomain *string `json:"DvAuthDomain,omitnil,omitempty" name:"DvAuthDomain"`

	// Certificate domain name verification file path, used only for file and file_proxy.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthPath *string `json:"DvAuthPath,omitnil,omitempty" name:"DvAuthPath"`

	// Certificate domain name verification subdomain.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthKeySubDomain *string `json:"DvAuthKeySubDomain,omitnil,omitempty" name:"DvAuthKeySubDomain"`

	// Certificate domain verification information; multiple domain verifications use this field.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuths []*DvAuths `json:"DvAuths,omitnil,omitempty" name:"DvAuths"`
}

type DvAuths struct {
	// Certificate domain name verification record key.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthKey *string `json:"DvAuthKey,omitnil,omitempty" name:"DvAuthKey"`

	// Certificate domain name verification record value.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthValue *string `json:"DvAuthValue,omitnil,omitempty" name:"DvAuthValue"`

	// Certificate domain name verification domain value.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthDomain *string `json:"DvAuthDomain,omitnil,omitempty" name:"DvAuthDomain"`

	// Certificate domain name verification file path, used only for file and file_proxy.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthPath *string `json:"DvAuthPath,omitnil,omitempty" name:"DvAuthPath"`

	// Certificate domain name verification subdomain.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthSubDomain *string `json:"DvAuthSubDomain,omitnil,omitempty" name:"DvAuthSubDomain"`

	// Certificate domain verification type, valid values:.
	// TXT: add txt record for dns domain verification.
	// FILE: domain file verification.
	// CNAME: add cname record for dns domain verification.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DvAuthVerifyType *string `json:"DvAuthVerifyType,omitnil,omitempty" name:"DvAuthVerifyType"`
}

type Error struct {
	// The error code.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Code *string `json:"Code,omitnil,omitempty" name:"Code"`

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

type Filter struct {
	// The key of the filter parameter.
	FilterKey *string `json:"FilterKey,omitnil,omitempty" name:"FilterKey"`

	// The value of the filter parameter.
	FilterValue *string `json:"FilterValue,omitnil,omitempty" name:"FilterValue"`
}

type GAAPInstanceDetail struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Listener list
	ListenerList []*GAAPListenerDetail `json:"ListenerList,omitnil,omitempty" name:"ListenerList"`

	// Speed up the instance name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`
}

type GAAPInstanceList struct {
	// Instance details
	InstanceList []*GAAPInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Total number.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type GAAPListenerDetail struct {
	// Listener status
	ListenerStatus *string `json:"ListenerStatus,omitnil,omitempty" name:"ListenerStatus"`

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

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

	// Mismatched domain name list
	NoMatchDomains []*string `json:"NoMatchDomains,omitnil,omitempty" name:"NoMatchDomains"`

	// Certificate list associated with CVM instances	
	CertIdList []*string `json:"CertIdList,omitnil,omitempty" name:"CertIdList"`

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

type GatewayCertificate struct {
	// Gateway certificate ID
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

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

	// Bind Domain Name
	BindDomains []*string `json:"BindDomains,omitnil,omitempty" name:"BindDomains"`

	// Certificate source
	CertSource *string `json:"CertSource,omitnil,omitempty" name:"CertSource"`

	// Currently bound SSL certificate ID
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`
}

type HostingConfig struct {
	// Hosted resource replacement time, defaults to 30 days before the certificate expiration if there is a renewal certificate, then replace.
	// Note: this field may return null, indicating that no valid values can be obtained.
	ReplaceTime *int64 `json:"ReplaceTime,omitnil,omitempty" name:"ReplaceTime"`

	// Hosted send message type: 0, reminder message before hosted starts (you will receive this reminder message even if there is no renewal certificate); 1, reminder message when hosted starts (you will receive the message reminder only if there is a renewal certificate); 2, reminder message when hosted resource replacement fails; 3 reminder message when hosted resource replacement succeeds.
	// Note: this field may return null, indicating that no valid values can be obtained.
	MessageTypes []*int64 `json:"MessageTypes,omitnil,omitempty" name:"MessageTypes"`

	// Resource replacement start time.
	ReplaceStartTime *string `json:"ReplaceStartTime,omitnil,omitempty" name:"ReplaceStartTime"`

	// Resource replacement end time.
	ReplaceEndTime *string `json:"ReplaceEndTime,omitnil,omitempty" name:"ReplaceEndTime"`
}

type LiveInstanceDetail struct {
	// The domain.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// The status. Valid values: `-1`: No certificate is associated with the domain.
	// `1`: HTTPS is enabled for the domain.
	// `0`: HTTPS is disabled for the domain.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type LiveInstanceList struct {
	// The total number of LIVE instances in this region.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The list of LIVE instances.	
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceList []*LiveInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Whether to query exceptions.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

type MQTTInstanceDetail struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

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

	// Mismatched domain name list
	NoMatchDomains []*string `json:"NoMatchDomains,omitnil,omitempty" name:"NoMatchDomains"`

	// Server certificate list
	ServerCertIdList []*string `json:"ServerCertIdList,omitnil,omitempty" name:"ServerCertIdList"`

	// Certificate list
	CaCertIdList []*string `json:"CaCertIdList,omitnil,omitempty" name:"CaCertIdList"`
}

type MQTTInstanceList struct {
	// Region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Instance details
	InstanceList []*MQTTInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Total count in the region
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type ManagerInfo struct {
	// Status: audit: under review ok: pass invalid: invalid expiring: expiring soon expired: expired
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Manager name
	ManagerFirstName *string `json:"ManagerFirstName,omitnil,omitempty" name:"ManagerFirstName"`

	// Manager name
	ManagerLastName *string `json:"ManagerLastName,omitnil,omitempty" name:"ManagerLastName"`

	// manager position
	ManagerPosition *string `json:"ManagerPosition,omitnil,omitempty" name:"ManagerPosition"`

	// Manager phone
	ManagerPhone *string `json:"ManagerPhone,omitnil,omitempty" name:"ManagerPhone"`

	// Manager mailbox
	ManagerMail *string `json:"ManagerMail,omitnil,omitempty" name:"ManagerMail"`

	// department of the manager
	ManagerDepartment *string `json:"ManagerDepartment,omitnil,omitempty" name:"ManagerDepartment"`

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

	// Number of domains for manager
	DomainCount *int64 `json:"DomainCount,omitnil,omitempty" name:"DomainCount"`

	// Number of manager certificates
	CertCount *int64 `json:"CertCount,omitnil,omitempty" name:"CertCount"`

	// Manager ID
	ManagerId *int64 `json:"ManagerId,omitnil,omitempty" name:"ManagerId"`

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

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

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

	// Review status info
	// Note: This field may return null, indicating that no valid values can be obtained.
	StatusInfo []*ManagerStatusInfo `json:"StatusInfo,omitnil,omitempty" name:"StatusInfo"`

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

type ManagerPreAuditDomain struct {
	// Domain information for prereview
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

	// Prereview domain creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Prereview domain expiry time
	ExpireTime *string `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`
}

type ManagerStatusInfo struct {
	// Review type, enumeration value: ov, ev
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Review status, enumeration value: pending, completed, invalid, submitted, expiring, expired.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

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

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

	// Domain name list for manager prereview
	ManagerPreAuditDomains []*ManagerPreAuditDomain `json:"ManagerPreAuditDomains,omitnil,omitempty" name:"ManagerPreAuditDomains"`
}

// Predefined struct for user
type ModifyCSRRequestParams struct {
	// The CSR ID.	
	CSRId *int64 `json:"CSRId,omitnil,omitempty" name:"CSRId"`

	// Whether to generate the CSR content. Once the CSR content is generated, the CSR record cannot be modified.
	Generate *bool `json:"Generate,omitnil,omitempty" name:"Generate"`

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

	// The organization name.
	Organization *string `json:"Organization,omitnil,omitempty" name:"Organization"`

	// The department.
	Department *string `json:"Department,omitnil,omitempty" name:"Department"`

	// The email address.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// The province.
	Province *string `json:"Province,omitnil,omitempty" name:"Province"`

	// The city.
	City *string `json:"City,omitnil,omitempty" name:"City"`

	// The country or region.
	Country *string `json:"Country,omitnil,omitempty" name:"Country"`

	// The encryption algorithm. RSA and ECC are supported.	
	EncryptAlgo *string `json:"EncryptAlgo,omitnil,omitempty" name:"EncryptAlgo"`

	// The key pair parameter. For RSA, only the 2048-bit and 4096-bit key pairs are supported. For ECC, only prime256v1 is supported.
	KeyParameter *string `json:"KeyParameter,omitnil,omitempty" name:"KeyParameter"`

	// The remarks.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// The password of the private key.
	KeyPassword *string `json:"KeyPassword,omitnil,omitempty" name:"KeyPassword"`
}

type ModifyCSRRequest struct {
	*tchttp.BaseRequest
	
	// The CSR ID.	
	CSRId *int64 `json:"CSRId,omitnil,omitempty" name:"CSRId"`

	// Whether to generate the CSR content. Once the CSR content is generated, the CSR record cannot be modified.
	Generate *bool `json:"Generate,omitnil,omitempty" name:"Generate"`

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

	// The organization name.
	Organization *string `json:"Organization,omitnil,omitempty" name:"Organization"`

	// The department.
	Department *string `json:"Department,omitnil,omitempty" name:"Department"`

	// The email address.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// The province.
	Province *string `json:"Province,omitnil,omitempty" name:"Province"`

	// The city.
	City *string `json:"City,omitnil,omitempty" name:"City"`

	// The country or region.
	Country *string `json:"Country,omitnil,omitempty" name:"Country"`

	// The encryption algorithm. RSA and ECC are supported.	
	EncryptAlgo *string `json:"EncryptAlgo,omitnil,omitempty" name:"EncryptAlgo"`

	// The key pair parameter. For RSA, only the 2048-bit and 4096-bit key pairs are supported. For ECC, only prime256v1 is supported.
	KeyParameter *string `json:"KeyParameter,omitnil,omitempty" name:"KeyParameter"`

	// The remarks.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// The password of the private key.
	KeyPassword *string `json:"KeyPassword,omitnil,omitempty" name:"KeyPassword"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyCSRRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "CSRId")
	delete(f, "Generate")
	delete(f, "Domain")
	delete(f, "Organization")
	delete(f, "Department")
	delete(f, "Email")
	delete(f, "Province")
	delete(f, "City")
	delete(f, "Country")
	delete(f, "EncryptAlgo")
	delete(f, "KeyParameter")
	delete(f, "Remark")
	delete(f, "KeyPassword")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyCSRRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyCSRResponseParams struct {
	// The CSR ID.
	Id *int64 `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 ModifyCSRResponse struct {
	*tchttp.BaseResponse
	Response *ModifyCSRResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type ModifyCertificateAliasRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

type ModifyCertificateAliasRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

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

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

// Predefined struct for user
type ModifyCertificateAliasResponseParams struct {
	// ID of the successfully modified certificate
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

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

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

// Predefined struct for user
type ModifyCertificateProjectRequestParams struct {
	// ID list of certificates whose projects need to be modified. A maximum of 100 certificate IDs are supported.
	CertificateIdList []*string `json:"CertificateIdList,omitnil,omitempty" name:"CertificateIdList"`

	// Project ID
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

type ModifyCertificateProjectRequest struct {
	*tchttp.BaseRequest
	
	// ID list of certificates whose projects need to be modified. A maximum of 100 certificate IDs are supported.
	CertificateIdList []*string `json:"CertificateIdList,omitnil,omitempty" name:"CertificateIdList"`

	// Project ID
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

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

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

// Predefined struct for user
type ModifyCertificateProjectResponseParams struct {
	// List of certificates whose projects were modified successfully
	// Note: this field may return null, indicating that no valid values can be obtained.
	SuccessCertificates []*string `json:"SuccessCertificates,omitnil,omitempty" name:"SuccessCertificates"`

	// List of certificates whose projects failed to be modified
	// Note: this field may return null, indicating that no valid values can be obtained.
	FailCertificates []*string `json:"FailCertificates,omitnil,omitempty" name:"FailCertificates"`

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

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

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

// Predefined struct for user
type ModifyCertificateResubmitRequestParams struct {
	// The certificate ID.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

type ModifyCertificateResubmitRequest struct {
	*tchttp.BaseRequest
	
	// The certificate ID.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`
}

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

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

// Predefined struct for user
type ModifyCertificateResubmitResponseParams struct {
	// The certificate ID.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

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

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

// Predefined struct for user
type ModifyCertificatesExpiringNotificationSwitchRequestParams struct {
	// Certificate ID list. maximum of 50.
	CertificateIds []*string `json:"CertificateIds,omitnil,omitempty" name:"CertificateIds"`

	// 0: do not ignore notifications. 1: ignore notifications.
	SwitchStatus *uint64 `json:"SwitchStatus,omitnil,omitempty" name:"SwitchStatus"`
}

type ModifyCertificatesExpiringNotificationSwitchRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID list. maximum of 50.
	CertificateIds []*string `json:"CertificateIds,omitnil,omitempty" name:"CertificateIds"`

	// 0: do not ignore notifications. 1: ignore notifications.
	SwitchStatus *uint64 `json:"SwitchStatus,omitnil,omitempty" name:"SwitchStatus"`
}

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

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

// Predefined struct for user
type ModifyCertificatesExpiringNotificationSwitchResponseParams struct {
	// Certificate ID list.
	CertificateIds []*string `json:"CertificateIds,omitnil,omitempty" name:"CertificateIds"`

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

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

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

type OperationLog struct {
	// Action performed on logs
	Action *string `json:"Action,omitnil,omitempty" name:"Action"`

	// Time when the action is performed
	CreatedOn *string `json:"CreatedOn,omitnil,omitempty" name:"CreatedOn"`

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

	// Sub-Account.
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubAccountUin *string `json:"SubAccountUin,omitnil,omitempty" name:"SubAccountUin"`

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

	// Each operation type corresponds to a specific operation description. the following is a textual explanation of each operation type and its description:.
	// 1. apply: indicates applying for a free cert.
	// 2. delete: indicates a deletion.
	// 3. download - represents the download operation.
	// 4. upload: indicates an upload operation.
	// 5. revoke: indicates revoking a cert.
	// 6. cancelRevoke - indicates canceling the revocation operation.
	// 7. updateAlias - indicates updating the remark information.
	// 8. changeProject - indicates assigning the certificate to a certain project.
	// 9. uploadConfirmLetter - indicates uploading the confirmation letter.
	// 10. cancel - indicates canceling the order operation.
	// 11. replace - specifies reissuing a certificate.
	// 12. downloadConfirmLetter - specifies downloading a certificate revocation confirmation letter.
	// 13. editRevokeLetter - specifies uploading a certificate revocation confirmation letter.
	// 14. renewVIP - specifies renewing a paid certificate.
	// 15. applyVIP - specifies applying for a paid certificate.
	// 16. submitInfo - specifies submitting documentation.
	// 17. downloadConfirmLetter - specifies downloading the confirmation letter template.
	// 18. uploadFromYunAPI - indicates uploading via the cloud api.
	// 19. transferIn - indicates the certificate transfer to operation.
	// 20. transferOut - indicates the certificate transfer operation.
	// 21. refund - indicates applying for a refund.
	// 22. multiYearsRenew - indicates multi-year auto-renewal.
	// 23. modifyDownloadLimit - indicates modifying the download limit switch.
	// 24. issued - indicates certificate issuance.
	// 25. domainValidationPassed - indicates domain verification completed.
	// 26. Resubmit - indicates reapplying for a certificate.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`
}

type PreAuditInfo struct {
	// Total number of years of the certificate
	// Note: This field may return null, indicating that no valid values can be obtained.
	TotalPeriod *int64 `json:"TotalPeriod,omitnil,omitempty" name:"TotalPeriod"`

	// Current year of the certificate
	// Note: This field may return null, indicating that no valid values can be obtained.
	NowPeriod *int64 `json:"NowPeriod,omitnil,omitempty" name:"NowPeriod"`

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

type ProjectInfo struct {
	// Project name
	// Note: this field may return null, indicating that no valid values can be obtained.
	ProjectName *string `json:"ProjectName,omitnil,omitempty" name:"ProjectName"`

	// UIN of the project creator
	// Note: this field may return null, indicating that no valid values can be obtained.
	ProjectCreatorUin *uint64 `json:"ProjectCreatorUin,omitnil,omitempty" name:"ProjectCreatorUin"`

	// Project creation time
	// Note: this field may return null, indicating that no valid values can be obtained.
	ProjectCreateTime *string `json:"ProjectCreateTime,omitnil,omitempty" name:"ProjectCreateTime"`

	// Brief project information
	// Note: this field may return null, indicating that no valid values can be obtained.
	ProjectResume *string `json:"ProjectResume,omitnil,omitempty" name:"ProjectResume"`

	// User UIN
	// Note: this field may return null, indicating that no valid values can be obtained.
	OwnerUin *uint64 `json:"OwnerUin,omitnil,omitempty" name:"OwnerUin"`

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

// Predefined struct for user
type ReplaceCertificateRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Validation type. `DNS_AUTO`: automatic DNS validation; `DNS`: manual DNS validation; `FILE`: file validation
	ValidType *string `json:"ValidType,omitnil,omitempty" name:"ValidType"`

	// Type. `Original`: original certificate CSR; `Upload`: uploaded manually; `Online`: generated online. The default value is original.
	CsrType *string `json:"CsrType,omitnil,omitempty" name:"CsrType"`

	// CSR content, required when uploading manually.
	CsrContent *string `json:"CsrContent,omitnil,omitempty" name:"CsrContent"`

	// Password of the key
	CsrkeyPassword *string `json:"CsrkeyPassword,omitnil,omitempty" name:"CsrkeyPassword"`

	// Reissue reason
	Reason *string `json:"Reason,omitnil,omitempty" name:"Reason"`

	// The CSR encryption algorithm. Valid values: `RSA` (default), `ECC1`, and `SM2`.
	// This parameter is available for selection only when the value of `CsrType` is `Online`.
	CertCSREncryptAlgo *string `json:"CertCSREncryptAlgo,omitnil,omitempty" name:"CertCSREncryptAlgo"`

	// The CSR encryption parameters. When `CsrEncryptAlgo` is set to `RSA`, `2048` (default) and `4096` are available for selection; and when`CsrEncryptAlgo` is set to `ECC`, `prime256v1` (default) and `secp384r1` are available for selection. 
	CertCSRKeyParameter *string `json:"CertCSRKeyParameter,omitnil,omitempty" name:"CertCSRKeyParameter"`
}

type ReplaceCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Validation type. `DNS_AUTO`: automatic DNS validation; `DNS`: manual DNS validation; `FILE`: file validation
	ValidType *string `json:"ValidType,omitnil,omitempty" name:"ValidType"`

	// Type. `Original`: original certificate CSR; `Upload`: uploaded manually; `Online`: generated online. The default value is original.
	CsrType *string `json:"CsrType,omitnil,omitempty" name:"CsrType"`

	// CSR content, required when uploading manually.
	CsrContent *string `json:"CsrContent,omitnil,omitempty" name:"CsrContent"`

	// Password of the key
	CsrkeyPassword *string `json:"CsrkeyPassword,omitnil,omitempty" name:"CsrkeyPassword"`

	// Reissue reason
	Reason *string `json:"Reason,omitnil,omitempty" name:"Reason"`

	// The CSR encryption algorithm. Valid values: `RSA` (default), `ECC1`, and `SM2`.
	// This parameter is available for selection only when the value of `CsrType` is `Online`.
	CertCSREncryptAlgo *string `json:"CertCSREncryptAlgo,omitnil,omitempty" name:"CertCSREncryptAlgo"`

	// The CSR encryption parameters. When `CsrEncryptAlgo` is set to `RSA`, `2048` (default) and `4096` are available for selection; and when`CsrEncryptAlgo` is set to `ECC`, `prime256v1` (default) and `secp384r1` are available for selection. 
	CertCSRKeyParameter *string `json:"CertCSRKeyParameter,omitnil,omitempty" name:"CertCSRKeyParameter"`
}

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

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

// Predefined struct for user
type ReplaceCertificateResponseParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

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

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

type ResourceTypeRegions struct {
	// Cloud resource types, which support clb, waf, api gateway, cos, tke, tse, and tcb.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// Region list
	Regions []*string `json:"Regions,omitnil,omitempty" name:"Regions"`
}

// Predefined struct for user
type RevokeCertificateRequestParams struct {
	// Certificate ID.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Reason to revoke certificate.
	Reason *string `json:"Reason,omitnil,omitempty" name:"Reason"`
}

type RevokeCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Reason to revoke certificate.
	Reason *string `json:"Reason,omitnil,omitempty" name:"Reason"`
}

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

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

// Predefined struct for user
type RevokeCertificateResponseParams struct {
	// Revoke certificate domain name verification info.
	RevokeDomainValidateAuths []*RevokeDomainValidateAuths `json:"RevokeDomainValidateAuths,omitnil,omitempty" name:"RevokeDomainValidateAuths"`

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

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

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

type RevokeDomainValidateAuths struct {
	// DV authentication value path.
	DomainValidateAuthPath *string `json:"DomainValidateAuthPath,omitnil,omitempty" name:"DomainValidateAuthPath"`

	// DV authentication KEY.
	DomainValidateAuthKey *string `json:"DomainValidateAuthKey,omitnil,omitempty" name:"DomainValidateAuthKey"`

	// DV authentication value.
	DomainValidateAuthValue *string `json:"DomainValidateAuthValue,omitnil,omitempty" name:"DomainValidateAuthValue"`

	// DV authentication domain name.
	DomainValidateAuthDomain *string `json:"DomainValidateAuthDomain,omitnil,omitempty" name:"DomainValidateAuthDomain"`
}

type RootCertificates struct {
	// Chinese SM signature certificate
	// Note: This field may return null, indicating that no valid values can be obtained.
	Sign *string `json:"Sign,omitnil,omitempty" name:"Sign"`

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

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

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

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

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

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

type SCFInstanceList struct {
	// <p>Region.</p>
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// <p>SCF instance details</p>
	InstanceList []*SCFInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// <p>Error message</p>
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`

	// <p>Total count in the region</p>
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`
}

// Predefined struct for user
type SubmitCertificateInformationRequestParams struct {
	// Paid certificate id of materials to be submitted.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// This field is required. Generation method of CSR, valid values are:
	// online: tencent cloud generates the CSR and private key based on the submitted parameter information and stores them encryptedly.
	// parse: generate the CSR and private key by itself, and apply for a certificate by uploading the CSR.
	CsrType *string `json:"CsrType,omitnil,omitempty" name:"CsrType"`

	// The content of the uploaded csr.
	// If CsrType is parse, this field is required.
	CsrContent *string `json:"CsrContent,omitnil,omitempty" name:"CsrContent"`

	// The common name bound to the certificate. if a CSR is uploaded, the domain name must be consistent with the common name resolved from the CSR.
	CertificateDomain *string `json:"CertificateDomain,omitnil,omitempty" name:"CertificateDomain"`

	// Other domain names bound to the certificate. not required for single domain and wildcard domain certificates. required for multiple domain names and multiple wildcard domain names.
	DomainList []*string `json:"DomainList,omitnil,omitempty" name:"DomainList"`

	// Private key password, which is currently only used for the password when generating jks and pfx format certificates; other formats of private key certificates are not encrypted.	
	KeyPassword *string `json:"KeyPassword,omitnil,omitempty" name:"KeyPassword"`

	// This field is required. Company name.
	OrganizationName *string `json:"OrganizationName,omitnil,omitempty" name:"OrganizationName"`

	// This field is required.  Department name.
	OrganizationDivision *string `json:"OrganizationDivision,omitnil,omitempty" name:"OrganizationDivision"`

	// This field is required. Company's detailed address.
	OrganizationAddress *string `json:"OrganizationAddress,omitnil,omitempty" name:"OrganizationAddress"`

	// This field is required.Country name such as CN.
	OrganizationCountry *string `json:"OrganizationCountry,omitnil,omitempty" name:"OrganizationCountry"`

	// This field is required, which specifies the city where the company is located.
	OrganizationCity *string `json:"OrganizationCity,omitnil,omitempty" name:"OrganizationCity"`

	// This field is required, specifying the province where the company is located.
	OrganizationRegion *string `json:"OrganizationRegion,omitnil,omitempty" name:"OrganizationRegion"`

	// Postal code of the organization
	PostalCode *string `json:"PostalCode,omitnil,omitempty" name:"PostalCode"`

	// This field is required, the company's fixed-line phone area code.
	PhoneAreaCode *string `json:"PhoneAreaCode,omitnil,omitempty" name:"PhoneAreaCode"`

	// This field is required, the company's landline number.
	PhoneNumber *string `json:"PhoneNumber,omitnil,omitempty" name:"PhoneNumber"`

	// Certificate validation method. Validation types: DNS_AUTO = Automatic DNS validation (only supported for domains resolved by Tencent Cloud DNS with a normal resolution status), DNS = Manual DNS validation, FILE = File validation.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// This field is required, manager name.
	AdminFirstName *string `json:"AdminFirstName,omitnil,omitempty" name:"AdminFirstName"`

	// This field is required, the manager's surname.
	AdminLastName *string `json:"AdminLastName,omitnil,omitempty" name:"AdminLastName"`

	// This field is required, the manager's mobile phone number.
	AdminPhoneNum *string `json:"AdminPhoneNum,omitnil,omitempty" name:"AdminPhoneNum"`

	// This field is required, the manager's email address.
	AdminEmail *string `json:"AdminEmail,omitnil,omitempty" name:"AdminEmail"`

	// This field is required, the manager position.
	AdminPosition *string `json:"AdminPosition,omitnil,omitempty" name:"AdminPosition"`

	// This field is required, the contact person name.
	ContactFirstName *string `json:"ContactFirstName,omitnil,omitempty" name:"ContactFirstName"`

	// This field is required, the contact person's surname.
	ContactLastName *string `json:"ContactLastName,omitnil,omitempty" name:"ContactLastName"`

	// This field is required, the contact person's email address.
	ContactEmail *string `json:"ContactEmail,omitnil,omitempty" name:"ContactEmail"`

	// This field is required, the contact person's mobile phone number.
	ContactNumber *string `json:"ContactNumber,omitnil,omitempty" name:"ContactNumber"`

	// This field is required, the contact person position.
	ContactPosition *string `json:"ContactPosition,omitnil,omitempty" name:"ContactPosition"`

	// Indicates whether it is a dv certificate. default value is false.
	IsDV *bool `json:"IsDV,omitnil,omitempty" name:"IsDV"`
}

type SubmitCertificateInformationRequest struct {
	*tchttp.BaseRequest
	
	// Paid certificate id of materials to be submitted.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// This field is required. Generation method of CSR, valid values are:
	// online: tencent cloud generates the CSR and private key based on the submitted parameter information and stores them encryptedly.
	// parse: generate the CSR and private key by itself, and apply for a certificate by uploading the CSR.
	CsrType *string `json:"CsrType,omitnil,omitempty" name:"CsrType"`

	// The content of the uploaded csr.
	// If CsrType is parse, this field is required.
	CsrContent *string `json:"CsrContent,omitnil,omitempty" name:"CsrContent"`

	// The common name bound to the certificate. if a CSR is uploaded, the domain name must be consistent with the common name resolved from the CSR.
	CertificateDomain *string `json:"CertificateDomain,omitnil,omitempty" name:"CertificateDomain"`

	// Other domain names bound to the certificate. not required for single domain and wildcard domain certificates. required for multiple domain names and multiple wildcard domain names.
	DomainList []*string `json:"DomainList,omitnil,omitempty" name:"DomainList"`

	// Private key password, which is currently only used for the password when generating jks and pfx format certificates; other formats of private key certificates are not encrypted.	
	KeyPassword *string `json:"KeyPassword,omitnil,omitempty" name:"KeyPassword"`

	// This field is required. Company name.
	OrganizationName *string `json:"OrganizationName,omitnil,omitempty" name:"OrganizationName"`

	// This field is required.  Department name.
	OrganizationDivision *string `json:"OrganizationDivision,omitnil,omitempty" name:"OrganizationDivision"`

	// This field is required. Company's detailed address.
	OrganizationAddress *string `json:"OrganizationAddress,omitnil,omitempty" name:"OrganizationAddress"`

	// This field is required.Country name such as CN.
	OrganizationCountry *string `json:"OrganizationCountry,omitnil,omitempty" name:"OrganizationCountry"`

	// This field is required, which specifies the city where the company is located.
	OrganizationCity *string `json:"OrganizationCity,omitnil,omitempty" name:"OrganizationCity"`

	// This field is required, specifying the province where the company is located.
	OrganizationRegion *string `json:"OrganizationRegion,omitnil,omitempty" name:"OrganizationRegion"`

	// Postal code of the organization
	PostalCode *string `json:"PostalCode,omitnil,omitempty" name:"PostalCode"`

	// This field is required, the company's fixed-line phone area code.
	PhoneAreaCode *string `json:"PhoneAreaCode,omitnil,omitempty" name:"PhoneAreaCode"`

	// This field is required, the company's landline number.
	PhoneNumber *string `json:"PhoneNumber,omitnil,omitempty" name:"PhoneNumber"`

	// Certificate validation method. Validation types: DNS_AUTO = Automatic DNS validation (only supported for domains resolved by Tencent Cloud DNS with a normal resolution status), DNS = Manual DNS validation, FILE = File validation.
	VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"`

	// This field is required, manager name.
	AdminFirstName *string `json:"AdminFirstName,omitnil,omitempty" name:"AdminFirstName"`

	// This field is required, the manager's surname.
	AdminLastName *string `json:"AdminLastName,omitnil,omitempty" name:"AdminLastName"`

	// This field is required, the manager's mobile phone number.
	AdminPhoneNum *string `json:"AdminPhoneNum,omitnil,omitempty" name:"AdminPhoneNum"`

	// This field is required, the manager's email address.
	AdminEmail *string `json:"AdminEmail,omitnil,omitempty" name:"AdminEmail"`

	// This field is required, the manager position.
	AdminPosition *string `json:"AdminPosition,omitnil,omitempty" name:"AdminPosition"`

	// This field is required, the contact person name.
	ContactFirstName *string `json:"ContactFirstName,omitnil,omitempty" name:"ContactFirstName"`

	// This field is required, the contact person's surname.
	ContactLastName *string `json:"ContactLastName,omitnil,omitempty" name:"ContactLastName"`

	// This field is required, the contact person's email address.
	ContactEmail *string `json:"ContactEmail,omitnil,omitempty" name:"ContactEmail"`

	// This field is required, the contact person's mobile phone number.
	ContactNumber *string `json:"ContactNumber,omitnil,omitempty" name:"ContactNumber"`

	// This field is required, the contact person position.
	ContactPosition *string `json:"ContactPosition,omitnil,omitempty" name:"ContactPosition"`

	// Indicates whether it is a dv certificate. default value is false.
	IsDV *bool `json:"IsDV,omitnil,omitempty" name:"IsDV"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *SubmitCertificateInformationRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "CertificateId")
	delete(f, "CsrType")
	delete(f, "CsrContent")
	delete(f, "CertificateDomain")
	delete(f, "DomainList")
	delete(f, "KeyPassword")
	delete(f, "OrganizationName")
	delete(f, "OrganizationDivision")
	delete(f, "OrganizationAddress")
	delete(f, "OrganizationCountry")
	delete(f, "OrganizationCity")
	delete(f, "OrganizationRegion")
	delete(f, "PostalCode")
	delete(f, "PhoneAreaCode")
	delete(f, "PhoneNumber")
	delete(f, "VerifyType")
	delete(f, "AdminFirstName")
	delete(f, "AdminLastName")
	delete(f, "AdminPhoneNum")
	delete(f, "AdminEmail")
	delete(f, "AdminPosition")
	delete(f, "ContactFirstName")
	delete(f, "ContactLastName")
	delete(f, "ContactEmail")
	delete(f, "ContactNumber")
	delete(f, "ContactPosition")
	delete(f, "IsDV")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SubmitCertificateInformationRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SubmitCertificateInformationResponseParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

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

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

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

type SubmittedData struct {
	// CSR type. `online`: CSR generated online; `parse`: CSR pasted
	// Note: this field may return null, indicating that no valid values can be obtained.
	CsrType *string `json:"CsrType,omitnil,omitempty" name:"CsrType"`

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

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

	// DNS information
	// Note: this field may return null, indicating that no valid values can be obtained.
	DomainList []*string `json:"DomainList,omitnil,omitempty" name:"DomainList"`

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

	// Enterprise or unit name
	// Note: this field may return null, indicating that no valid values can be obtained.
	OrganizationName *string `json:"OrganizationName,omitnil,omitempty" name:"OrganizationName"`

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

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

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

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

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

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

	// Area code of the fixed-line phone number
	// Note: this field may return null, indicating that no valid values can be obtained.
	PhoneAreaCode *string `json:"PhoneAreaCode,omitnil,omitempty" name:"PhoneAreaCode"`

	// Fixed-line phone number
	// Note: this field may return null, indicating that no valid values can be obtained.
	PhoneNumber *string `json:"PhoneNumber,omitnil,omitempty" name:"PhoneNumber"`

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

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

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

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

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

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

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

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

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

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

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

type SupportDownloadType struct {
	// Whether the available format of nginx can be downloaded.
	NGINX *bool `json:"NGINX,omitnil,omitempty" name:"NGINX"`

	// Whether the available format of apache can be downloaded.
	APACHE *bool `json:"APACHE,omitnil,omitempty" name:"APACHE"`

	// Whether the available format of tomcat can be downloaded.
	TOMCAT *bool `json:"TOMCAT,omitnil,omitempty" name:"TOMCAT"`

	// Whether the available format of iis can be downloaded.
	IIS *bool `json:"IIS,omitnil,omitempty" name:"IIS"`

	// Indicates whether the jks format can be downloaded.
	JKS *bool `json:"JKS,omitnil,omitempty" name:"JKS"`

	// Indicates whether other formats can be downloaded.
	OTHER *bool `json:"OTHER,omitnil,omitempty" name:"OTHER"`

	// Indicates whether the root certificate can be downloaded.
	ROOT *bool `json:"ROOT,omitnil,omitempty" name:"ROOT"`
}

type SyncTaskBindResourceResult struct {
	// The task ID.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// The associated cloud resources.
	// Note: This field may return null, indicating that no valid values can be obtained.
	BindResourceResult []*BindResourceResult `json:"BindResourceResult,omitnil,omitempty" name:"BindResourceResult"`

	// The status of the async task. Valid values: `0` for querying, `1` for successful, and `2` for abnormal. If the status is `1`, the result of `BindResourceResult` will be displayed; if the status is `2`, the error causes will be displayed.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// The error occurred when querying the associated cloud resources.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Error *Error `json:"Error,omitnil,omitempty" name:"Error"`

	// The cache time of the current result.
	CacheTime *string `json:"CacheTime,omitnil,omitempty" name:"CacheTime"`
}

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

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

	// Unified domain status
	UnionStatus *int64 `json:"UnionStatus,omitnil,omitempty" name:"UnionStatus"`

	// Whether it is preempted. Preemption means the domain name is bound to another environment and must be unbound or rebound.
	IsPreempted *bool `json:"IsPreempted,omitnil,omitempty" name:"IsPreempted"`

	// icp blocklist ban status. 0 - Not blocked. 1 - Blocked.
	ICPStatus *int64 `json:"ICPStatus,omitnil,omitempty" name:"ICPStatus"`

	// Bound Certificate ID
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`
}

type TCBAccessService struct {
	// Instance list
	InstanceList []*TCBAccessInstance `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Quantity.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`
}

type TCBEnvironment struct {
	// Unique ID
	ID *string `json:"ID,omitnil,omitempty" name:"ID"`

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

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

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

type TCBEnvironments struct {
	// The TCB environment.	
	// Note: This field may return null, indicating that no valid values can be obtained.
	Environment *TCBEnvironment `json:"Environment,omitnil,omitempty" name:"Environment"`

	// The access service.	
	// Note: This field may return null, indicating that no valid values can be obtained.
	AccessService *TCBAccessService `json:"AccessService,omitnil,omitempty" name:"AccessService"`

	// Whether static hosting is used.	
	// Note: This field may return null, indicating that no valid values can be obtained.
	HostService *TCBHostService `json:"HostService,omitnil,omitempty" name:"HostService"`
}

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

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

	// Parsing status
	DNSStatus *string `json:"DNSStatus,omitnil,omitempty" name:"DNSStatus"`

	// Bound Certificate ID
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`
}

type TCBHostService struct {
	// Instance list
	InstanceList []*TCBHostInstance `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Quantity.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`
}

type TCBInstanceList struct {
	// The region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// The list of TCB environments.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Environments []*TCBEnvironments `json:"Environments,omitnil,omitempty" name:"Environments"`

	// Whether to query exceptions.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

type TDMQInstanceDetail struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

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

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

	// CA certificate ID
	CaCertId *string `json:"CaCertId,omitnil,omitempty" name:"CaCertId"`

	// Mismatched domain name list
	NoMatchDomains []*string `json:"NoMatchDomains,omitnil,omitempty" name:"NoMatchDomains"`
}

type TDMQInstanceList struct {
	// Region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Instance details
	InstanceList []*TDMQInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Total count in the region
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type TSEInstanceDetail struct {
	// Gateway ID
	GatewayId *string `json:"GatewayId,omitnil,omitempty" name:"GatewayId"`

	// gateway name
	GatewayName *string `json:"GatewayName,omitnil,omitempty" name:"GatewayName"`

	// Gateway certificate list
	CertificateList []*GatewayCertificate `json:"CertificateList,omitnil,omitempty" name:"CertificateList"`
}

type TSEInstanceList struct {
	// TSE instance details
	// Note: This field may return null, indicating that no valid value can be obtained.
	InstanceList []*TSEInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// Total TSE instances in this region	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

	// Whether to query exceptions.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

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

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

type TeoInstanceDetail struct {
	// The domain.
	Host *string `json:"Host,omitnil,omitempty" name:"Host"`

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

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

	// Domain status.
	// `Deployed`: deployed;.
	// `Processing`: deploying;.
	// `Applying`: applying;.
	// `Failed`: application failed;.
	// `Issued`: binding failed.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Certificate encryption algorithm
	Algorithm *string `json:"Algorithm,omitnil,omitempty" name:"Algorithm"`
}

type TeoInstanceList struct {
	// The list of EDGEONE instances.	
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceList []*TeoInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// The total number of EDGEONE instances.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Whether to query exceptions.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

type TkeIngressDetail struct {
	// The Ingress name.
	IngressName *string `json:"IngressName,omitnil,omitempty" name:"IngressName"`

	// The list of TLS domains.
	TlsDomains []*string `json:"TlsDomains,omitnil,omitempty" name:"TlsDomains"`

	// The list of Ingress domains.
	Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"`
}

type TkeInstanceDetail struct {
	// The cluster ID.
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

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

	// The list of cluster namespaces.
	NamespaceList []*TkeNameSpaceDetail `json:"NamespaceList,omitnil,omitempty" name:"NamespaceList"`

	// The cluster type.
	ClusterType *string `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	// The cluster version.
	ClusterVersion *string `json:"ClusterVersion,omitnil,omitempty" name:"ClusterVersion"`
}

type TkeInstanceList struct {
	// The region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// The list of TKE instances.
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceList []*TkeInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// The total number of TKE instances in this region.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Whether to query exceptions.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

type TkeNameSpaceDetail struct {
	// The namespace name.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// The secret list.
	SecretList []*TkeSecretDetail `json:"SecretList,omitnil,omitempty" name:"SecretList"`
}

type TkeSecretDetail struct {
	// The secret name.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// The Ingress list.
	IngressList []*TkeIngressDetail `json:"IngressList,omitnil,omitempty" name:"IngressList"`

	// The list of domains that do not match the new certificate.
	// Note: This field may return null, indicating that no valid values can be obtained.
	NoMatchDomains []*string `json:"NoMatchDomains,omitnil,omitempty" name:"NoMatchDomains"`
}

// Predefined struct for user
type UpdateCertificateInstanceRequestParams struct {
	// The old certificate id for one-click update. by querying the cloud resources bound to this certificate id, and then updating these cloud resources with the new certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Resource types that need to be deployed, with optional parameter values (lowercase): clb, cdn, waf, live, ddos, teo, apigateway, vod, tke, tcb, tse, cos.
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

	// New certificate id for one-click update. if this parameter is not provided, the public key certificate and private key certificate must be provided.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// List of regions that need to be deployed (deprecated)
	//
	// Deprecated: Regions is deprecated.
	Regions []*string `json:"Regions,omitnil,omitempty" name:"Regions"`

	// List of regions where cloud resources need to be deployed. the cloud resource type of the supported region must be passed. valid values: clb, tke, apigateway, waf, tcb, tse, cos.
	ResourceTypesRegions []*ResourceTypeRegions `json:"ResourceTypesRegions,omitnil,omitempty" name:"ResourceTypesRegions"`

	// If a public key certificate is uploaded, the private key certificate must also be uploaded, and the CertificateId does not need to be transmitted.
	CertificatePublicKey *string `json:"CertificatePublicKey,omitnil,omitempty" name:"CertificatePublicKey"`

	// If a private key certificate is uploaded, then a public key certificate must be uploaded; CertificateId is not required.
	CertificatePrivateKey *string `json:"CertificatePrivateKey,omitnil,omitempty" name:"CertificatePrivateKey"`

	// Whether to ignore expiration reminder for old certificate  0: do not ignore the notification. 1: ignore the notification, ignore the expiration reminder of OldCertificateId.
	ExpiringNotificationSwitch *uint64 `json:"ExpiringNotificationSwitch,omitnil,omitempty" name:"ExpiringNotificationSwitch"`

	// It specifies whether the same certificate is allowed to be uploaded repeatedly. If the public key and private key certificates are selected for upload, this parameter can be configured. If there are duplicate certificates, the update task will fail.
	Repeatable *bool `json:"Repeatable,omitnil,omitempty" name:"Repeatable"`

	// Whether to allow downloading. If you choose to upload a public/private key certificate, this parameter can be configured.
	AllowDownload *bool `json:"AllowDownload,omitnil,omitempty" name:"AllowDownload"`

	// Tag list. If you choose to upload a public/private key certificate, you can configure this parameter.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Project id. If you choose to upload a public/private key certificate, you can configure this parameter.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

type UpdateCertificateInstanceRequest struct {
	*tchttp.BaseRequest
	
	// The old certificate id for one-click update. by querying the cloud resources bound to this certificate id, and then updating these cloud resources with the new certificate.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Resource types that need to be deployed, with optional parameter values (lowercase): clb, cdn, waf, live, ddos, teo, apigateway, vod, tke, tcb, tse, cos.
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

	// New certificate id for one-click update. if this parameter is not provided, the public key certificate and private key certificate must be provided.
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// List of regions that need to be deployed (deprecated)
	Regions []*string `json:"Regions,omitnil,omitempty" name:"Regions"`

	// List of regions where cloud resources need to be deployed. the cloud resource type of the supported region must be passed. valid values: clb, tke, apigateway, waf, tcb, tse, cos.
	ResourceTypesRegions []*ResourceTypeRegions `json:"ResourceTypesRegions,omitnil,omitempty" name:"ResourceTypesRegions"`

	// If a public key certificate is uploaded, the private key certificate must also be uploaded, and the CertificateId does not need to be transmitted.
	CertificatePublicKey *string `json:"CertificatePublicKey,omitnil,omitempty" name:"CertificatePublicKey"`

	// If a private key certificate is uploaded, then a public key certificate must be uploaded; CertificateId is not required.
	CertificatePrivateKey *string `json:"CertificatePrivateKey,omitnil,omitempty" name:"CertificatePrivateKey"`

	// Whether to ignore expiration reminder for old certificate  0: do not ignore the notification. 1: ignore the notification, ignore the expiration reminder of OldCertificateId.
	ExpiringNotificationSwitch *uint64 `json:"ExpiringNotificationSwitch,omitnil,omitempty" name:"ExpiringNotificationSwitch"`

	// It specifies whether the same certificate is allowed to be uploaded repeatedly. If the public key and private key certificates are selected for upload, this parameter can be configured. If there are duplicate certificates, the update task will fail.
	Repeatable *bool `json:"Repeatable,omitnil,omitempty" name:"Repeatable"`

	// Whether to allow downloading. If you choose to upload a public/private key certificate, this parameter can be configured.
	AllowDownload *bool `json:"AllowDownload,omitnil,omitempty" name:"AllowDownload"`

	// Tag list. If you choose to upload a public/private key certificate, you can configure this parameter.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Project id. If you choose to upload a public/private key certificate, you can configure this parameter.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

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

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

// Predefined struct for user
type UpdateCertificateInstanceResponseParams struct {
	// Task id, DeployRecordId of 0 indicates that the task is in progress. repeatedly requesting this api, when DeployRecordId returned is greater than 0, it indicates that the task is created successfully. if not created successfully, an exception will be thrown.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DeployRecordId *uint64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Status of the task; 1 indicates successful creation; 0 indicates that there is a task being updated currently, and no new update task has been created; the returned value DeployRecordId is the task id being updated.
	DeployStatus *int64 `json:"DeployStatus,omitnil,omitempty" name:"DeployStatus"`

	// Task Progress Details.
	// Note: this field may return null, indicating that no valid values can be obtained.
	UpdateSyncProgress []*UpdateSyncProgress `json:"UpdateSyncProgress,omitnil,omitempty" name:"UpdateSyncProgress"`

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

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

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

// Predefined struct for user
type UpdateCertificateRecordRetryRequestParams struct {
	// Record ID for pending retry deployment, which can be obtained through UpdateCertificateInstance. if this parameter is not provided, DeployRecordDetailId must be provided.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Detail ID for pending retry deployment record, which can be obtained through the DescribeHostUpdateRecordDetail api. if this parameter is not provided, DeployRecordId must be provided.
	DeployRecordDetailId *int64 `json:"DeployRecordDetailId,omitnil,omitempty" name:"DeployRecordDetailId"`
}

type UpdateCertificateRecordRetryRequest struct {
	*tchttp.BaseRequest
	
	// Record ID for pending retry deployment, which can be obtained through UpdateCertificateInstance. if this parameter is not provided, DeployRecordDetailId must be provided.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Detail ID for pending retry deployment record, which can be obtained through the DescribeHostUpdateRecordDetail api. if this parameter is not provided, DeployRecordId must be provided.
	DeployRecordDetailId *int64 `json:"DeployRecordDetailId,omitnil,omitempty" name:"DeployRecordDetailId"`
}

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

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

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

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

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

// Predefined struct for user
type UpdateCertificateRecordRollbackRequestParams struct {
	// To-be-redeployed record ID
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`
}

type UpdateCertificateRecordRollbackRequest struct {
	*tchttp.BaseRequest
	
	// To-be-redeployed record ID
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`
}

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

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

// Predefined struct for user
type UpdateCertificateRecordRollbackResponseParams struct {
	// Rollback deployment record ID
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

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

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

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

type UpdateRecordDetail struct {
	// Update detail record id.
	Id *uint64 `json:"Id,omitnil,omitempty" name:"Id"`

	// New and old certificate update - new certificate id.
	CertId *string `json:"CertId,omitnil,omitempty" name:"CertId"`

	// Old and new certificate update - old certificate id.
	OldCertId *string `json:"OldCertId,omitnil,omitempty" name:"OldCertId"`

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

	// Type of cloud resource for updating old and new certs.
	// - clb.
	// - cdn.
	// - ddos.
	// - live.
	// - vod.
	// - waf.
	// - apigateway.
	// - teo.
	// - tke.
	// - cos.
	// - tse.
	// - tcb.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

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

	// Deployment status. valid values:.
	// 0: To be deployed.
	// 1: Deployment successful.
	// 2: Deployment failed.
	// 3: Deploying.
	// 4: Rollback succeeded.
	// 5: Rollback failure.
	// 6: No resource, no need for deployment.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Deployment error message
	// Note: This field may return null, indicating that no valid value can be obtained.
	ErrorMsg *string `json:"ErrorMsg,omitnil,omitempty" name:"ErrorMsg"`

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

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

	// Deployment instance ID
	// Note: This field may return null, indicating that no valid value can be obtained.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

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

	// Deployment listener name (only for CLB)
	// Note: This field may return null, indicating that no valid value can be obtained.
	ListenerName *string `json:"ListenerName,omitnil,omitempty" name:"ListenerName"`

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

	// Whether SNI is enabled (only for CLB)
	// Note: This field may return null, indicating that no valid value can be obtained.
	SniSwitch *uint64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"`

	// Bucket name (only for COS)
	// Note: This field may return null, indicating that no valid value can be obtained.
	Bucket *string `json:"Bucket,omitnil,omitempty" name:"Bucket"`

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

	// Namespace (only for TKE)
	// Note: This field may return null, indicating that no valid value can be obtained.
	Namespace *string `json:"Namespace,omitnil,omitempty" name:"Namespace"`

	// Secret name (only for TKE)
	// Note: This field may return null, indicating that no valid value can be obtained.
	SecretName *string `json:"SecretName,omitnil,omitempty" name:"SecretName"`

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

	// TCB deployment type
	// Note: This field may return null, indicating that no valid value can be obtained.
	TCBType *string `json:"TCBType,omitnil,omitempty" name:"TCBType"`

	// Listener url (only for CLB).
	// Note: this field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

type UpdateRecordDetails struct {
	// Type of cloud resource for updating old and new certs.
	// - clb.
	// - cdn.
	// - ddos.
	// - live.
	// - vod.
	// - waf.
	// - apigateway.
	// - teo.
	// - tke.
	// - cos.
	// - tse.
	// - tcb.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// The update details of the cloud resource.
	List []*UpdateRecordDetail `json:"List,omitnil,omitempty" name:"List"`

	// The update of the total number of cloud resources.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`
}

type UpdateRecordInfo struct {
	// Record ID
	Id *uint64 `json:"Id,omitnil,omitempty" name:"Id"`

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

	// Old certificate ID
	OldCertId *string `json:"OldCertId,omitnil,omitempty" name:"OldCertId"`

	// Deployment resource type list
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

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

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

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

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

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

	// Region result list.
	// Note: this field may return null, indicating that no valid values can be obtained.
	UpdateSyncProgressRegions []*UpdateSyncProgressRegion `json:"UpdateSyncProgressRegions,omitnil,omitempty" name:"UpdateSyncProgressRegions"`

	// Asynchronous update progress status: 0, pending, 1 processed, 3 processing.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

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

	// Quantity of executions completed.
	// Note: this field may return null, indicating that no valid values can be obtained.
	OffsetCount *int64 `json:"OffsetCount,omitnil,omitempty" name:"OffsetCount"`

	// Asynchronous update progress status: 0, pending, 1 processed, 3 processing.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

// Predefined struct for user
type UploadCertificateRequestParams struct {
	// Public key of the certificate
	CertificatePublicKey *string `json:"CertificatePublicKey,omitnil,omitempty" name:"CertificatePublicKey"`

	// Private key content. This parameter is required when the certificate type is SVR, and not required when the certificate type is CA.
	CertificatePrivateKey *string `json:"CertificatePrivateKey,omitnil,omitempty" name:"CertificatePrivateKey"`

	// Certificate type. Valid values: `CA` (CA certificate) and `SVR` (server certificate). Default value: `SVR`
	CertificateType *string `json:"CertificateType,omitnil,omitempty" name:"CertificateType"`

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

	// Project ID
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Certificate Usage/Source, such as CLB, CDN, WAF, LIVE, DDOS.
	CertificateUse *string `json:"CertificateUse,omitnil,omitempty" name:"CertificateUse"`

	// The list of tags.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to allow duplicate upload of the same certificate, true: allow uploading certificates with the same fingerprint; false: do not allow uploading certificates with the same fingerprint. default value: true.
	Repeatable *bool `json:"Repeatable,omitnil,omitempty" name:"Repeatable"`
}

type UploadCertificateRequest struct {
	*tchttp.BaseRequest
	
	// Public key of the certificate
	CertificatePublicKey *string `json:"CertificatePublicKey,omitnil,omitempty" name:"CertificatePublicKey"`

	// Private key content. This parameter is required when the certificate type is SVR, and not required when the certificate type is CA.
	CertificatePrivateKey *string `json:"CertificatePrivateKey,omitnil,omitempty" name:"CertificatePrivateKey"`

	// Certificate type. Valid values: `CA` (CA certificate) and `SVR` (server certificate). Default value: `SVR`
	CertificateType *string `json:"CertificateType,omitnil,omitempty" name:"CertificateType"`

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

	// Project ID
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Certificate Usage/Source, such as CLB, CDN, WAF, LIVE, DDOS.
	CertificateUse *string `json:"CertificateUse,omitnil,omitempty" name:"CertificateUse"`

	// The list of tags.
	Tags []*Tags `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to allow duplicate upload of the same certificate, true: allow uploading certificates with the same fingerprint; false: do not allow uploading certificates with the same fingerprint. default value: true.
	Repeatable *bool `json:"Repeatable,omitnil,omitempty" name:"Repeatable"`
}

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

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

// Predefined struct for user
type UploadCertificateResponseParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// The ID of the repeatedly uploaded certificate.
	// Note: This field may return null, indicating that no valid values can be obtained.
	RepeatCertId *string `json:"RepeatCertId,omitnil,omitempty" name:"RepeatCertId"`

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

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

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

// Predefined struct for user
type UploadConfirmLetterRequestParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Base64-encoded confirmation letter file, which must be a JPG, JPEG, PNG, or PDF file of 1 KB to 1.4 MB
	ConfirmLetter *string `json:"ConfirmLetter,omitnil,omitempty" name:"ConfirmLetter"`
}

type UploadConfirmLetterRequest struct {
	*tchttp.BaseRequest
	
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Base64-encoded confirmation letter file, which must be a JPG, JPEG, PNG, or PDF file of 1 KB to 1.4 MB
	ConfirmLetter *string `json:"ConfirmLetter,omitnil,omitempty" name:"ConfirmLetter"`
}

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

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

// Predefined struct for user
type UploadConfirmLetterResponseParams struct {
	// Certificate ID
	CertificateId *string `json:"CertificateId,omitnil,omitempty" name:"CertificateId"`

	// Whether the operation is successful
	IsSuccess *bool `json:"IsSuccess,omitnil,omitempty" name:"IsSuccess"`

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

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

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

// Predefined struct for user
type UploadUpdateCertificateInstanceRequestParams struct {
	// Old Certificate ID for One-Click Update. Query the tencent cloud resources bound to this certificate ID and use the new certificate to update these resources.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Resource type that needs to be deployed, parameter value (lowercase): clb.
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

	// Public key certificate.
	CertificatePublicKey *string `json:"CertificatePublicKey,omitnil,omitempty" name:"CertificatePublicKey"`

	// Private key certificate.
	CertificatePrivateKey *string `json:"CertificatePrivateKey,omitnil,omitempty" name:"CertificatePrivateKey"`

	// The list of regions where cloud resources need to be deployed. The cloud resource type supported in the region is required. Value: clb.
	ResourceTypesRegions []*ResourceTypeRegions `json:"ResourceTypesRegions,omitnil,omitempty" name:"ResourceTypesRegions"`
}

type UploadUpdateCertificateInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Old Certificate ID for One-Click Update. Query the tencent cloud resources bound to this certificate ID and use the new certificate to update these resources.
	OldCertificateId *string `json:"OldCertificateId,omitnil,omitempty" name:"OldCertificateId"`

	// Resource type that needs to be deployed, parameter value (lowercase): clb.
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

	// Public key certificate.
	CertificatePublicKey *string `json:"CertificatePublicKey,omitnil,omitempty" name:"CertificatePublicKey"`

	// Private key certificate.
	CertificatePrivateKey *string `json:"CertificatePrivateKey,omitnil,omitempty" name:"CertificatePrivateKey"`

	// The list of regions where cloud resources need to be deployed. The cloud resource type supported in the region is required. Value: clb.
	ResourceTypesRegions []*ResourceTypeRegions `json:"ResourceTypesRegions,omitnil,omitempty" name:"ResourceTypesRegions"`
}

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

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

// Predefined struct for user
type UploadUpdateCertificateInstanceResponseParams struct {
	// The tencent cloud resource update task ID. DeployRecordId equals 0 indicates the task is in progress. Repeatedly request this API, and when DeployRecordId is greater than 0, it means the task has been successfully created. If not successfully created, an exception will be thrown.
	DeployRecordId *uint64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Update task creation status: 1 indicates successful creation; 0 indicates an existing ongoing update task, and no new update task was created. The return value DeployRecordId represents the ID of the ongoing update task.
	DeployStatus *int64 `json:"DeployStatus,omitnil,omitempty" name:"DeployStatus"`

	// Create progress details for asynchronous update tasks.
	// Note: This field may return null, indicating that no valid values can be obtained.
	UpdateSyncProgress []*UpdateSyncProgress `json:"UpdateSyncProgress,omitnil,omitempty" name:"UpdateSyncProgress"`

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

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

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

// Predefined struct for user
type UploadUpdateCertificateRecordRetryRequestParams struct {
	// Retry deployment record ID, obtained through UpdateCertificateInstance to get the deployment record ID. If this parameter is not provided, DeployRecordDetailId must be provided.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Retry deployment record detail ID, obtained through the DescribeHostUpdateRecordDetail API. If this parameter is not provided, DeployRecordId must be provided.
	DeployRecordDetailId *int64 `json:"DeployRecordDetailId,omitnil,omitempty" name:"DeployRecordDetailId"`
}

type UploadUpdateCertificateRecordRetryRequest struct {
	*tchttp.BaseRequest
	
	// Retry deployment record ID, obtained through UpdateCertificateInstance to get the deployment record ID. If this parameter is not provided, DeployRecordDetailId must be provided.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`

	// Retry deployment record detail ID, obtained through the DescribeHostUpdateRecordDetail API. If this parameter is not provided, DeployRecordId must be provided.
	DeployRecordDetailId *int64 `json:"DeployRecordDetailId,omitnil,omitempty" name:"DeployRecordDetailId"`
}

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

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

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

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

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

// Predefined struct for user
type UploadUpdateCertificateRecordRollbackRequestParams struct {
	// Record ID of the certificate pending rollback, obtained through the UpdateCertificateInstance API.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`
}

type UploadUpdateCertificateRecordRollbackRequest struct {
	*tchttp.BaseRequest
	
	// Record ID of the certificate pending rollback, obtained through the UpdateCertificateInstance API.
	DeployRecordId *int64 `json:"DeployRecordId,omitnil,omitempty" name:"DeployRecordId"`
}

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

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

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

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

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

type UploadUpdateRecordInfo struct {
	// Record ID
	Id *uint64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Original certificate ID
	OldCertId *string `json:"OldCertId,omitnil,omitempty" name:"OldCertId"`

	// Deployment resource type list.
	ResourceTypes []*string `json:"ResourceTypes,omitnil,omitempty" name:"ResourceTypes"`

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

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

	// Last update time.
	UpdateTime *string `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`
}

type VODInstanceList struct {
	// The list of VOD instances.	
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceList []*VodInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// The total number of VOD instances in this region.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Whether to query exceptions.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}

type VodInstanceDetail struct {
	// The domain.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

type WafInstanceDetail struct {
	// The domain.
	Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"`

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

	// Whether to keep the persistent connection.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Keepalive *uint64 `json:"Keepalive,omitnil,omitempty" name:"Keepalive"`
}

type WafInstanceList struct {
	// The region.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// The list of WAF instances.	
	// Note: This field may return null, indicating that no valid values can be obtained.
	InstanceList []*WafInstanceDetail `json:"InstanceList,omitnil,omitempty" name:"InstanceList"`

	// The total number of WAF instances in this region.	
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Whether to query exceptions.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Error *string `json:"Error,omitnil,omitempty" name:"Error"`
}