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

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 Address struct {
	// Nationality.
	Country *string `json:"Country,omitnil,omitempty" name:"Country"`

	// Post code.
	PostalCode *string `json:"PostalCode,omitnil,omitempty" name:"PostalCode"`

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

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

	// Complete address.
	FormattedAddress *string `json:"FormattedAddress,omitnil,omitempty" name:"FormattedAddress"`

	// The first line of address.
	LineOne *string `json:"LineOne,omitnil,omitempty" name:"LineOne"`

	// The second line of address.
	LineTwo *string `json:"LineTwo,omitnil,omitempty" name:"LineTwo"`

	// The third line of address.
	LineThree *string `json:"LineThree,omitnil,omitempty" name:"LineThree"`

	// The fourth line of address.
	LineFour *string `json:"LineFour,omitnil,omitempty" name:"LineFour"`

	// The fifth line of address.
	LineFive *string `json:"LineFive,omitnil,omitempty" name:"LineFive"`
}

// Predefined struct for user
type ApplyLivenessTokenRequestParams struct {
	// Enumerated value. Valid values: `1`, `2`, `3`, and `4`.
	// Their meanings are as follows:
	// 1 - silent
	// 2 - blinking
	// 3 - light
	// 4 - blinking + light (default)
	SecureLevel *string `json:"SecureLevel,omitnil,omitempty" name:"SecureLevel"`
}

type ApplyLivenessTokenRequest struct {
	*tchttp.BaseRequest
	
	// Enumerated value. Valid values: `1`, `2`, `3`, and `4`.
	// Their meanings are as follows:
	// 1 - silent
	// 2 - blinking
	// 3 - light
	// 4 - blinking + light (default)
	SecureLevel *string `json:"SecureLevel,omitnil,omitempty" name:"SecureLevel"`
}

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

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

// Predefined struct for user
type ApplyLivenessTokenResponseParams struct {
	// The token used to identify an SDK-based verification process. It is valid for 10 minutes and can be used to get the verification result after the process is completed.
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 ApplyLivenessTokenResponse struct {
	*tchttp.BaseResponse
	Response *ApplyLivenessTokenResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type ApplySdkVerificationTokenRequestParams struct {
	// The verification mode. Valid values:
	// 1: OCR + liveness detection + face comparison
	// 2: Liveness detection + face comparison
	// 3: Liveness detection
	// Default value: 1
	CheckMode *int64 `json:"CheckMode,omitnil,omitempty" name:"CheckMode"`

	// The security level of the verification. Valid values:
	// 1: Video-based liveness detection
	// 2: Motion-based liveness detection
	// 3: Reflection-based liveness detection
	// 4: Motion- and reflection-based liveness detection
	// Default value: 4
	SecurityLevel *int64 `json:"SecurityLevel,omitnil,omitempty" name:"SecurityLevel"`

	// Specifies the identity document type used for authentication. valid values:.  
	// 
	// 1. HK (default): hong kong (china) identity card.
	// 2. ML: malaysian identity card.
	// 3. Indonesian identity card.
	// 4. PhilippinesVoteID: specifies the voter card in the philippines.
	// 5. PhilippinesDrivingLicense: specifies the driving license in philippines.
	// 6. PhilippinesTinID: specifies the philippines tin id.
	// 7. PhilippinesSSSID: specifies the SSSID in the philippines.
	// 8. philippines UMID: specifies the philippines UMID.
	// 9. MLIDPassport: specifies the passport for hong kong (china), macao (china), and taiwan (china) as well as overseas passports.
	// 10. ThailandIDCard: specifies the thai identity card.
	// 11. Mainland id card.
	// 12. SingaporeIDCard: specifies the Singapore id card.
	// 13. HMTPermit: specifies the hong kong, macau and taiwan travel permit.
	IdCardType *string `json:"IdCardType,omitnil,omitempty" name:"IdCardType"`

	// The Base64-encoded value of the photo to compare, which is required only when `CheckMode` is set to `2`.
	CompareImage *string `json:"CompareImage,omitnil,omitempty" name:"CompareImage"`

	// Whether ID card authentication is required. If not, only document OCR will be performed. Currently, authentication is available only when the value of `IdCardType` is `HK`.
	//
	// Deprecated: NeedVerifyIdCard is deprecated.
	NeedVerifyIdCard *bool `json:"NeedVerifyIdCard,omitnil,omitempty" name:"NeedVerifyIdCard"`

	// Whether to forbid the modification of the OCR result by users. Default value: `false` (modification allowed). (Currently, this parameter is not applied.)
	DisableChangeOcrResult *bool `json:"DisableChangeOcrResult,omitnil,omitempty" name:"DisableChangeOcrResult"`

	// Whether to disable the OCR warnings. Default value: `false` (not disable), where OCR warnings are enabled and the OCR result will not be returned if there is a warning.
	// This feature applies only to Hong Kong (China) identity cards, Malaysian identity cards, and passports.
	DisableCheckOcrWarnings *bool `json:"DisableCheckOcrWarnings,omitnil,omitempty" name:"DisableCheckOcrWarnings"`

	// Customize which alarm codes to block. If left blank, all alarm codes will be blocked by default.
	// Optional alarm codes are: -9101 (occlusion or incomplete border), -9102 (photocopying), -9103 (screen capture by camera), -9104 (image editing/PS modification), -9107 (glare/reflection), -9108 (blurriness), -9901 (other alarms).
	SelectedWarningCodes []*int64 `json:"SelectedWarningCodes,omitnil,omitempty" name:"SelectedWarningCodes"`

	// A passthrough field, which is returned together with the verification result and can contain up to 1,024 bits.
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// BASIC: Basic version (Default).
	// ENHANCE: Enhance version, enable additional output of device risk level field.
	// PRO: Pro version, enable additional output of attack type fields.
	// PLUS: Plus version, enable additional output of device risk level and attack type fields.
	// Please contact us to access enhance version & plus version.	
	SdkVersion *string `json:"SdkVersion,omitnil,omitempty" name:"SdkVersion"`

	// This interface is used to control th action sequences.
	// Action types are as follows:
	// "blink"
	// "mouth"
	// "nod"
	// "shake"
	// You can choose 1-2 actions out of the four.
	// Single action example: "blink"
	// Multiple action example: "blink,mouth"
	// The default value is blink. The different action types passed in this parameter take effect only when the SecurityLevel is 2 or 4; otherwise, the interface reports an error.
	ActionList *string `json:"ActionList,omitnil,omitempty" name:"ActionList"`

	// Whether expired identity documents are permitted to proceed to the liveness detection process. This parameter only takes effect when the document type is Hong Kong Identity Card (HKID).
	// true (default value): Expired HKID is allowed to enter the liveness process.
	// false : Expired HKID is rejected and cannot enter the liveness process.
	AllowExpiredDocument *bool `json:"AllowExpiredDocument,omitnil,omitempty" name:"AllowExpiredDocument"`

	// <p>Controls visibility of the final result page</p><p>Enumeration values:</p><ul><li>true: Do not display the result page</li><li>false: Display the result page</li></ul><p>Default value: false</p>
	SkipResultPage *bool `json:"SkipResultPage,omitnil,omitempty" name:"SkipResultPage"`

	// <p>Identified fields displayed during document OCR</p><p>Parameter format: ["ChineseName","FullName"]</p><p>Input constraints: <strong>Supported field names by document type:</strong><br><strong>HK (Hong Kong Identity Card):</strong> "ChineseName","FullName","LicenseNumber","Birthday","Sex", "IssuedDate", "Permanent", "Symbol", "CurrentIssueDate"<br><strong>ML (Malaysia Identity Card):</strong> "FullName","LicenseNumber","Sex", "Birthday", "Type", "FormattedAddress"<br><strong>IndonesiaIDCard (Indonesia Identity Card):</strong> "LicenseNumber","FullName","Sex", "Birthday", "FormattedAddress", "Nationality", "DueDate", "IssuedDate", "Street", "Village","Area","Province","City","MaritalStatus", "BloodType", "Religion", "Occupation"<br><strong>PhilippinesVoteID (Philippines Voter's ID):</strong> "FirstName","LastName","Birthday"<br><strong>PhilippinesDrivingLicense (Philippines Driving License):</strong> "LastName","FirstName","MiddleName","Sex","Birthday"<br><strong>PhilippinesTinID (Philippines TIN ID):</strong> "LicenseNumber", "FullName", "Birthday"<br><strong>PhilippinesSSSID (Philippines SSS ID):</strong> "LicenseNumber", "FullName", "Birthday"<br><strong>PhilippinesUMID (Philippines UMID):</strong> "Surname", "MiddleName", "GivenName", "Sex", "Birthday"<br><strong>MLIDPassport (Passports of Hong Kong, Macao, Taiwan and overseas regions):</strong> "LicenseNumber","FullName", "Surname", "GivenName", "Birthday", "Sex","DateOfExpiration","IssuingCountry"<br><strong>ThailandIDCard (Thailand Identity Card):</strong> "FullName", "LastName", "FirstName", "FormattedAddress", "LicenseNumber", "Birthday", "ExpirationDate", "IssuedDate", "RegistrationNumber", "Religion", "ThaiBirthday", "ThaiExpirationDate", "ThaiIssueDate"<br><strong>MainlandIDCard (Chinese Mainland Identity Card):</strong> "LicenseNumber", "FullName", "Sex", "Nation", "Birthday", "FormattedAddress"<br><strong>SingaporeIDCard (Singapore Identity Card):</strong> "ChineseName","Sex","Birthday","LicenseNumber","Nationality","FullName","Address"<br><strong>HMTPermit (Mainland Travel Permit for Hong Kong and Macao Residents / Mainland Travel Permit for Taiwan Residents):</strong> "Name", "EnglishName", "Sex", "Number", "ValidDate", "Birthday"</p><p>If no fields are specified, all identified fields will be displayed by default.</p>
	CardOcrDisplayFields []*string `json:"CardOcrDisplayFields,omitnil,omitempty" name:"CardOcrDisplayFields"`

	// <p>Liveness retry attempts</p><p>Value range: [1, 5]</p><p>Default value: 5</p>
	RetryLimit *int64 `json:"RetryLimit,omitnil,omitempty" name:"RetryLimit"`

	// <p>Enable multi-image anti-spoofing for single-angle Identity Document Recognition</p><p>Default value: false</p><p>true - Enabled; false - Disabled</p>
	EnableForgeryDetectionImages *bool `json:"EnableForgeryDetectionImages,omitnil,omitempty" name:"EnableForgeryDetectionImages"`

	// Encrypted metadata generated by the SDK
	MetaData *string `json:"MetaData,omitnil,omitempty" name:"MetaData"`

	// <p>Controls visibility of the launch page</p><p>Enumeration values:</p><ul><li>true: Do not display the launch page</li><li>false: Display the launch page</li></ul><p>Default value: false</p>
	SkipLaunchPage *bool `json:"SkipLaunchPage,omitnil,omitempty" name:"SkipLaunchPage"`

	// <p>Controls visibility of the information confirmation page </p><p>Enumeration values:</p><ul><li>true: Do not display the information confirmation page</li><li>false: Display the information confirmation page</li></ul><p>Default value: false</p>
	SkipOcrConfirmPage *bool `json:"SkipOcrConfirmPage,omitnil,omitempty" name:"SkipOcrConfirmPage"`

	// <p>Controls whether to hide the top progress bar across all pages of the entire process </p><p>Enumeration values:</p><ul><li>true: Do not display the progress bar</li><li>false: Display the progress bar</li></ul><p>Default value: false</p>
	HideProgressBar *bool `json:"HideProgressBar,omitnil,omitempty" name:"HideProgressBar"`

	// <p>Whether uploading photos from the album is permitted for verification during the ID validation phase (prohibited when single-angle multi-image forgery detection is enabled)
	//  </p><p>Enumeration values:</p><ul><li>true: Album photo upload for verification enabled</li><li>false: Album photo upload for verification disabled</li></ul><p>Default value: false</p>
	AllowUploadPhoto *bool `json:"AllowUploadPhoto,omitnil,omitempty" name:"AllowUploadPhoto"`
}

type ApplySdkVerificationTokenRequest struct {
	*tchttp.BaseRequest
	
	// The verification mode. Valid values:
	// 1: OCR + liveness detection + face comparison
	// 2: Liveness detection + face comparison
	// 3: Liveness detection
	// Default value: 1
	CheckMode *int64 `json:"CheckMode,omitnil,omitempty" name:"CheckMode"`

	// The security level of the verification. Valid values:
	// 1: Video-based liveness detection
	// 2: Motion-based liveness detection
	// 3: Reflection-based liveness detection
	// 4: Motion- and reflection-based liveness detection
	// Default value: 4
	SecurityLevel *int64 `json:"SecurityLevel,omitnil,omitempty" name:"SecurityLevel"`

	// Specifies the identity document type used for authentication. valid values:.  
	// 
	// 1. HK (default): hong kong (china) identity card.
	// 2. ML: malaysian identity card.
	// 3. Indonesian identity card.
	// 4. PhilippinesVoteID: specifies the voter card in the philippines.
	// 5. PhilippinesDrivingLicense: specifies the driving license in philippines.
	// 6. PhilippinesTinID: specifies the philippines tin id.
	// 7. PhilippinesSSSID: specifies the SSSID in the philippines.
	// 8. philippines UMID: specifies the philippines UMID.
	// 9. MLIDPassport: specifies the passport for hong kong (china), macao (china), and taiwan (china) as well as overseas passports.
	// 10. ThailandIDCard: specifies the thai identity card.
	// 11. Mainland id card.
	// 12. SingaporeIDCard: specifies the Singapore id card.
	// 13. HMTPermit: specifies the hong kong, macau and taiwan travel permit.
	IdCardType *string `json:"IdCardType,omitnil,omitempty" name:"IdCardType"`

	// The Base64-encoded value of the photo to compare, which is required only when `CheckMode` is set to `2`.
	CompareImage *string `json:"CompareImage,omitnil,omitempty" name:"CompareImage"`

	// Whether ID card authentication is required. If not, only document OCR will be performed. Currently, authentication is available only when the value of `IdCardType` is `HK`.
	NeedVerifyIdCard *bool `json:"NeedVerifyIdCard,omitnil,omitempty" name:"NeedVerifyIdCard"`

	// Whether to forbid the modification of the OCR result by users. Default value: `false` (modification allowed). (Currently, this parameter is not applied.)
	DisableChangeOcrResult *bool `json:"DisableChangeOcrResult,omitnil,omitempty" name:"DisableChangeOcrResult"`

	// Whether to disable the OCR warnings. Default value: `false` (not disable), where OCR warnings are enabled and the OCR result will not be returned if there is a warning.
	// This feature applies only to Hong Kong (China) identity cards, Malaysian identity cards, and passports.
	DisableCheckOcrWarnings *bool `json:"DisableCheckOcrWarnings,omitnil,omitempty" name:"DisableCheckOcrWarnings"`

	// Customize which alarm codes to block. If left blank, all alarm codes will be blocked by default.
	// Optional alarm codes are: -9101 (occlusion or incomplete border), -9102 (photocopying), -9103 (screen capture by camera), -9104 (image editing/PS modification), -9107 (glare/reflection), -9108 (blurriness), -9901 (other alarms).
	SelectedWarningCodes []*int64 `json:"SelectedWarningCodes,omitnil,omitempty" name:"SelectedWarningCodes"`

	// A passthrough field, which is returned together with the verification result and can contain up to 1,024 bits.
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// BASIC: Basic version (Default).
	// ENHANCE: Enhance version, enable additional output of device risk level field.
	// PRO: Pro version, enable additional output of attack type fields.
	// PLUS: Plus version, enable additional output of device risk level and attack type fields.
	// Please contact us to access enhance version & plus version.	
	SdkVersion *string `json:"SdkVersion,omitnil,omitempty" name:"SdkVersion"`

	// This interface is used to control th action sequences.
	// Action types are as follows:
	// "blink"
	// "mouth"
	// "nod"
	// "shake"
	// You can choose 1-2 actions out of the four.
	// Single action example: "blink"
	// Multiple action example: "blink,mouth"
	// The default value is blink. The different action types passed in this parameter take effect only when the SecurityLevel is 2 or 4; otherwise, the interface reports an error.
	ActionList *string `json:"ActionList,omitnil,omitempty" name:"ActionList"`

	// Whether expired identity documents are permitted to proceed to the liveness detection process. This parameter only takes effect when the document type is Hong Kong Identity Card (HKID).
	// true (default value): Expired HKID is allowed to enter the liveness process.
	// false : Expired HKID is rejected and cannot enter the liveness process.
	AllowExpiredDocument *bool `json:"AllowExpiredDocument,omitnil,omitempty" name:"AllowExpiredDocument"`

	// <p>Controls visibility of the final result page</p><p>Enumeration values:</p><ul><li>true: Do not display the result page</li><li>false: Display the result page</li></ul><p>Default value: false</p>
	SkipResultPage *bool `json:"SkipResultPage,omitnil,omitempty" name:"SkipResultPage"`

	// <p>Identified fields displayed during document OCR</p><p>Parameter format: ["ChineseName","FullName"]</p><p>Input constraints: <strong>Supported field names by document type:</strong><br><strong>HK (Hong Kong Identity Card):</strong> "ChineseName","FullName","LicenseNumber","Birthday","Sex", "IssuedDate", "Permanent", "Symbol", "CurrentIssueDate"<br><strong>ML (Malaysia Identity Card):</strong> "FullName","LicenseNumber","Sex", "Birthday", "Type", "FormattedAddress"<br><strong>IndonesiaIDCard (Indonesia Identity Card):</strong> "LicenseNumber","FullName","Sex", "Birthday", "FormattedAddress", "Nationality", "DueDate", "IssuedDate", "Street", "Village","Area","Province","City","MaritalStatus", "BloodType", "Religion", "Occupation"<br><strong>PhilippinesVoteID (Philippines Voter's ID):</strong> "FirstName","LastName","Birthday"<br><strong>PhilippinesDrivingLicense (Philippines Driving License):</strong> "LastName","FirstName","MiddleName","Sex","Birthday"<br><strong>PhilippinesTinID (Philippines TIN ID):</strong> "LicenseNumber", "FullName", "Birthday"<br><strong>PhilippinesSSSID (Philippines SSS ID):</strong> "LicenseNumber", "FullName", "Birthday"<br><strong>PhilippinesUMID (Philippines UMID):</strong> "Surname", "MiddleName", "GivenName", "Sex", "Birthday"<br><strong>MLIDPassport (Passports of Hong Kong, Macao, Taiwan and overseas regions):</strong> "LicenseNumber","FullName", "Surname", "GivenName", "Birthday", "Sex","DateOfExpiration","IssuingCountry"<br><strong>ThailandIDCard (Thailand Identity Card):</strong> "FullName", "LastName", "FirstName", "FormattedAddress", "LicenseNumber", "Birthday", "ExpirationDate", "IssuedDate", "RegistrationNumber", "Religion", "ThaiBirthday", "ThaiExpirationDate", "ThaiIssueDate"<br><strong>MainlandIDCard (Chinese Mainland Identity Card):</strong> "LicenseNumber", "FullName", "Sex", "Nation", "Birthday", "FormattedAddress"<br><strong>SingaporeIDCard (Singapore Identity Card):</strong> "ChineseName","Sex","Birthday","LicenseNumber","Nationality","FullName","Address"<br><strong>HMTPermit (Mainland Travel Permit for Hong Kong and Macao Residents / Mainland Travel Permit for Taiwan Residents):</strong> "Name", "EnglishName", "Sex", "Number", "ValidDate", "Birthday"</p><p>If no fields are specified, all identified fields will be displayed by default.</p>
	CardOcrDisplayFields []*string `json:"CardOcrDisplayFields,omitnil,omitempty" name:"CardOcrDisplayFields"`

	// <p>Liveness retry attempts</p><p>Value range: [1, 5]</p><p>Default value: 5</p>
	RetryLimit *int64 `json:"RetryLimit,omitnil,omitempty" name:"RetryLimit"`

	// <p>Enable multi-image anti-spoofing for single-angle Identity Document Recognition</p><p>Default value: false</p><p>true - Enabled; false - Disabled</p>
	EnableForgeryDetectionImages *bool `json:"EnableForgeryDetectionImages,omitnil,omitempty" name:"EnableForgeryDetectionImages"`

	// Encrypted metadata generated by the SDK
	MetaData *string `json:"MetaData,omitnil,omitempty" name:"MetaData"`

	// <p>Controls visibility of the launch page</p><p>Enumeration values:</p><ul><li>true: Do not display the launch page</li><li>false: Display the launch page</li></ul><p>Default value: false</p>
	SkipLaunchPage *bool `json:"SkipLaunchPage,omitnil,omitempty" name:"SkipLaunchPage"`

	// <p>Controls visibility of the information confirmation page </p><p>Enumeration values:</p><ul><li>true: Do not display the information confirmation page</li><li>false: Display the information confirmation page</li></ul><p>Default value: false</p>
	SkipOcrConfirmPage *bool `json:"SkipOcrConfirmPage,omitnil,omitempty" name:"SkipOcrConfirmPage"`

	// <p>Controls whether to hide the top progress bar across all pages of the entire process </p><p>Enumeration values:</p><ul><li>true: Do not display the progress bar</li><li>false: Display the progress bar</li></ul><p>Default value: false</p>
	HideProgressBar *bool `json:"HideProgressBar,omitnil,omitempty" name:"HideProgressBar"`

	// <p>Whether uploading photos from the album is permitted for verification during the ID validation phase (prohibited when single-angle multi-image forgery detection is enabled)
	//  </p><p>Enumeration values:</p><ul><li>true: Album photo upload for verification enabled</li><li>false: Album photo upload for verification disabled</li></ul><p>Default value: false</p>
	AllowUploadPhoto *bool `json:"AllowUploadPhoto,omitnil,omitempty" name:"AllowUploadPhoto"`
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ApplySdkVerificationTokenRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "CheckMode")
	delete(f, "SecurityLevel")
	delete(f, "IdCardType")
	delete(f, "CompareImage")
	delete(f, "NeedVerifyIdCard")
	delete(f, "DisableChangeOcrResult")
	delete(f, "DisableCheckOcrWarnings")
	delete(f, "SelectedWarningCodes")
	delete(f, "Extra")
	delete(f, "SdkVersion")
	delete(f, "ActionList")
	delete(f, "AllowExpiredDocument")
	delete(f, "SkipResultPage")
	delete(f, "CardOcrDisplayFields")
	delete(f, "RetryLimit")
	delete(f, "EnableForgeryDetectionImages")
	delete(f, "MetaData")
	delete(f, "SkipLaunchPage")
	delete(f, "SkipOcrConfirmPage")
	delete(f, "HideProgressBar")
	delete(f, "AllowUploadPhoto")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ApplySdkVerificationTokenRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ApplySdkVerificationTokenResponseParams struct {
	// A token that identifies an SDK verification process. the validity time is 10 minutes. after the process is complete, the token can be used to retrieve the verification result
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`

	// Encrypted string of server-side parameters
	ServerParamInfo *string `json:"ServerParamInfo,omitnil,omitempty" name:"ServerParamInfo"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 ApplySdkVerificationTokenResponse struct {
	*tchttp.BaseResponse
	Response *ApplySdkVerificationTokenResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type ApplyWebVerificationBizTokenIntlRequestParams struct {
	// Web callback URL to redirect to after the verification is completed, including the protocol, hostname, and path. 
	// After the verification process is completed, the BizToken of this process will be spliced to the callback URL in the format of `https://www.tencentcloud.com/products/faceid?token={BizToken}` before redirect.
	// Example: `https://www.tencentcloud.com/products/faceid.`
	RedirectURL *string `json:"RedirectURL,omitnil,omitempty" name:"RedirectURL"`

	// The Base64-encoded string (max 8 MB in size) of the photo to be compared.The Data URI scheme header needs to be removed from the encoded string
	// Example: xhBQAAACBjSFJNAAB6****AAAASUVORK5CYII=
	CompareImageBase64 *string `json:"CompareImageBase64,omitnil,omitempty" name:"CompareImageBase64"`

	// The passthrough parameter of the business, max 1,000 characters, which will be returned in GetWebVerificationResultIntl.
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// The business process ID generated by the console.
	RuleId *string `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// The parameter control the page configuration.
	// Example: {"AutoSkip": true,"CheckMode": 1,"IdCardType": "HKIDCard"}
	Config *WebVerificationConfigIntl `json:"Config,omitnil,omitempty" name:"Config"`
}

type ApplyWebVerificationBizTokenIntlRequest struct {
	*tchttp.BaseRequest
	
	// Web callback URL to redirect to after the verification is completed, including the protocol, hostname, and path. 
	// After the verification process is completed, the BizToken of this process will be spliced to the callback URL in the format of `https://www.tencentcloud.com/products/faceid?token={BizToken}` before redirect.
	// Example: `https://www.tencentcloud.com/products/faceid.`
	RedirectURL *string `json:"RedirectURL,omitnil,omitempty" name:"RedirectURL"`

	// The Base64-encoded string (max 8 MB in size) of the photo to be compared.The Data URI scheme header needs to be removed from the encoded string
	// Example: xhBQAAACBjSFJNAAB6****AAAASUVORK5CYII=
	CompareImageBase64 *string `json:"CompareImageBase64,omitnil,omitempty" name:"CompareImageBase64"`

	// The passthrough parameter of the business, max 1,000 characters, which will be returned in GetWebVerificationResultIntl.
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// The business process ID generated by the console.
	RuleId *string `json:"RuleId,omitnil,omitempty" name:"RuleId"`

	// The parameter control the page configuration.
	// Example: {"AutoSkip": true,"CheckMode": 1,"IdCardType": "HKIDCard"}
	Config *WebVerificationConfigIntl `json:"Config,omitnil,omitempty" name:"Config"`
}

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

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

// Predefined struct for user
type ApplyWebVerificationBizTokenIntlResponseParams struct {
	// The token identifying this web-based verification process, valid for 7,200s after issuance. It is required for getting the result after the verification process is completed.
	// Example: `https://intl.faceid.qq.com/reflect/?token=81EEF678-28EE-4759-A82E-6CBBBE6BC442`
	//
	// Deprecated: VerificationUrl is deprecated.
	VerificationUrl *string `json:"VerificationUrl,omitnil,omitempty" name:"VerificationUrl"`

	// A token that identifies a Web verification process, with a validity time of 10 minutes. after the process is complete, the token can be used to obtain the verification result.
	BizToken *string `json:"BizToken,omitnil,omitempty" name:"BizToken"`

	// The verification URL to be opened with a browser to start the verification process.
	// Example: https://intl.faceid.qq.com/reflect/?token=81EEF678-28EE-4759-A82E-6CBBBE6BC442
	VerificationURL *string `json:"VerificationURL,omitnil,omitempty" name:"VerificationURL"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 ApplyWebVerificationBizTokenIntlResponse struct {
	*tchttp.BaseResponse
	Response *ApplyWebVerificationBizTokenIntlResponseParams `json:"Response"`
}

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

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

type AttackRiskDetail struct {
	// <p>Suspected attack trace type, specific type as follows:<br>SuspectedSpoofingAttack: Rephotography attack<br>SuspectedSynthesisImage: Suspected synthesized image<br>SuspectedSynthesisVideo: Suspected synthesized video<br>SuspectedAnomalyAttack: Facial features suspected of not being real<br>SuspectedAdversarialAttack: Suspected adversarial sample attack<br>SuspectedBlackIndustry: Suspected black industry batch template attack<br>SuspectedWatermark: Suspected watermark</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`
}

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

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

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

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

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

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

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

	// Bank card.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Sensitive data encryption info.
	// - Users with encryption requirements for incoming information (name, bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

	// Bank card.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Sensitive data encryption info.
	// - Users with encryption requirements for incoming information (name, bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type BankCard2EVerificationResponseParams struct {
	// Verification result code.
	// -Billing result code:
	// '0': 'Authentication passed'.
	// '-1': 'Authentication failed'.
	// '-4': 'Cardholder information is incorrect'.
	// '-5': 'Cardless payment not enabled'.
	// '-6': 'Card confiscated'.
	// '-7': 'Invalid card number'.
	// '-8': 'No corresponding issuing bank for this card'.
	// '-9': 'The card is uninitialized or a Sleep Card'.
	// '-10': 'Cheat card, card confiscation'.
	// '-11': 'Reported lost'.
	// '-12': 'The card has expired'.
	// '-13': 'Restricted card'.
	// '-14': 'Number of password errors exceeds the limit'.
	// '-15': 'Issuer does not support this transaction'.
	// '-18': 'Card status exception or card number error'.
	// 
	// -Non-billing Result Code:
	// '-2': 'Name verification failed'.
	// '-3': 'Incorrect bank card number format'.
	// '-16': 'Verification Center Service busy'.
	// '-17': 'Verification attempts exceeded. Please retry the next day.'
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 BankCard2EVerificationResponse struct {
	*tchttp.BaseResponse
	Response *BankCard2EVerificationResponseParams `json:"Response"`
}

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

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

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

	// Bank card.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Mobile number.
	Phone *string `json:"Phone,omitnil,omitempty" name:"Phone"`

	// ID number for account opening.
	// -The document type must match the Type parameter, for example: input the ID card number for an identity card.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// Document type.
	// -Please confirm this document is the document type used when opening an account. Document information not used for account opening is not supported for verification.
	// -Currently defaults to 0: ID card. Other document types are not currently supported.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number, mobile number, bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

	// Bank card.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Mobile number.
	Phone *string `json:"Phone,omitnil,omitempty" name:"Phone"`

	// ID number for account opening.
	// -The document type must match the Type parameter, for example: input the ID card number for an identity card.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// Document type.
	// -Please confirm this document is the document type used when opening an account. Document information not used for account opening is not supported for verification.
	// -Currently defaults to 0: ID card. Other document types are not currently supported.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number, mobile number, bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type BankCard4EVerificationResponseParams struct {
	// Verification result code.
	// -Result code for charges
	// '0': 'Authentication passed'.
	// '-1': 'Authentication failed'.
	// '-6': 'Cardholder information is incorrect'.
	// '-7': 'Cardless payment not enabled'.
	// '-8': 'Card confiscated'.
	// '-9': 'Invalid card number'.
	// '-10': 'No corresponding issuing bank for this card'.
	// '-11': 'The card is uninitialized or a Sleep Card'.
	// '-12': 'Cheat card, card confiscation'.
	// '-13': 'Reported lost'.
	// '-14': 'The card has expired.'
	// '-15': 'Restricted card'.
	// '-16': 'Exceeded the number of password errors'.
	// '-17': 'Issuer does not support this transaction'.
	// '-21': 'Card status exception or card number error'.
	// 
	// -Result code with no charge
	// '-2': 'Name verification failed'.
	// '-3': 'Identity number error'.
	// '-4': 'Incorrect bank card number format'.
	// '-5': 'Invalid phone number'.
	// '-18': 'Verification Center Service busy'.
	// '-19': 'Exceeded maximum verification attempts. Please retry the next day.'
	// '-20': 'The ID number is not currently supported for verification. Currently only support second-generation resident identity card.'
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 BankCard4EVerificationResponse struct {
	*tchttp.BaseResponse
	Response *BankCard4EVerificationResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type BankCardVerificationRequestParams struct {
	// ID number for account opening.
	// -The document type must match the Type parameter, for example: input the ID card number for an identity card.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Bank card.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Document type.
	// -Please confirm this document is the document type used when opening an account. Document information not used for account opening is not supported for verification.
	// -Currently default: 0 ID card. Other document types are not currently supported.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number, bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type BankCardVerificationRequest struct {
	*tchttp.BaseRequest
	
	// ID number for account opening.
	// -The document type must match the Type parameter, for example: input the ID card number for an identity card.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Bank card.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Document type.
	// -Please confirm this document is the document type used when opening an account. Document information not used for account opening is not supported for verification.
	// -Currently default: 0 ID card. Other document types are not currently supported.
	CertType *int64 `json:"CertType,omitnil,omitempty" name:"CertType"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number, bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type BankCardVerificationResponseParams struct {
	// Verification result code.
	// -Result code for charges
	// '0': 'Authentication passed'.
	// '-1': 'Authentication failed'.
	// '-5': 'Cardholder information is incorrect'.
	// '-6': 'Cardless payment not enabled'.
	// '-7': 'Card confiscated'.
	// '-8': 'Invalid card number'.
	// '-9': 'No corresponding issuing bank for this card'.
	// '-10': 'The card is uninitialized or a Sleep Card'.
	// '-11': 'Cheat card, card retention'.
	// '-12': 'Reported lost'.
	// '-13': 'The card has expired.'
	// '-14': 'Restricted card'.
	// '-15': 'Exceeded the number of password errors.'
	// '-16': 'Issuer does not support this transaction'.
	// '-20': 'Card status exception or card number error'.
	// 
	// -Result code with no charge
	// '-2': 'Name verification failed'.
	// '-3': 'Identity number error'.
	// '-4': 'Incorrect bank card number format'.
	// '-17': 'Verification Center Service busy'.
	// '-18': 'Exceeded verification attempts. Please retry the next day.'
	// '-19': 'The ID number is not currently supported for verification. Currently only support second-generation resident identity card.'	
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 BankCardVerificationResponse struct {
	*tchttp.BaseResponse
	Response *BankCardVerificationResponseParams `json:"Response"`
}

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

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

type CardInfo struct {
	// Hong Kong ID (China) Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	HKIDCard *HKIDCard `json:"HKIDCard,omitnil,omitempty" name:"HKIDCard"`

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

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

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

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

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

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

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

	// ID Cards of Hong Kong (China), Macao (China) and Taiwan (China), and International Passport
	// Note: This field may return null, indicating that no valid values can be obtained.
	InternationalIDPassport *InternationalIDPassport `json:"InternationalIDPassport,omitnil,omitempty" name:"InternationalIDPassport"`

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

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

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

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

	// Macao (China) ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	MacaoIDCard *MacaoIDCard `json:"MacaoIDCard,omitnil,omitempty" name:"MacaoIDCard"`

	// TaiWan (China) ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	TaiWanIDCard *TaiWanIDCard `json:"TaiWanIDCard,omitnil,omitempty" name:"TaiWanIDCard"`

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

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

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

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

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

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

type CardVerifyResult struct {
	// Whether the authentication or OCR process is successful.
	IsPass *bool `json:"IsPass,omitnil,omitempty" name:"IsPass"`

	// Whether the user modified the card recognition result
	IsEdit *bool `json:"IsEdit,omitnil,omitempty" name:"IsEdit"`

	// The download URL of the video used for identity document verification, which is valid for 10 minutes. This parameter is returned only if video-based identity document verification is enabled.
	// Note: This field may return null, indicating that no valid value can be obtained.
	CardVideo *FileInfo `json:"CardVideo,omitnil,omitempty" name:"CardVideo"`

	// The download URL of the identity document image, which is valid for 10 minutes.
	// Note: This field may return null, indicating that no valid value can be obtained.
	CardImage *FileInfo `json:"CardImage,omitnil,omitempty" name:"CardImage"`

	// The OCR result (in JSON) of the identity document image. If verification or OCR fails, this parameter is left empty. The URL is valid for 10 minutes.
	// (1) Hong Kong (China) identity card
	// When the value of `IdCardType` is `HK`:
	// - CnName (string): Name in Chinese.
	// - EnName (string): Name in English.
	// - TelexCode (string): The code corresponding to the name in Chinese.
	// - Sex (string): Gender. Valid values: `M` (male) and `F` (female).
	// - Birthday (string): Date of birth.
	// - Permanent (int): Whether it is a permanent residence identity card. Valid values: `0` (non-permanent), `1` (permanent), and `-1` (unknown).
	// - IdNum (string): Identity card number.
	// - Symbol (string): The ID symbol below the date of birth, such as "***AZ".
	// - FirstIssueDate (string): Month and year of first registration.
	// - CurrentIssueDate (string): The date of latest issuance.
	// 
	// (2) Malaysian identity card
	// When the value of `IdCardType` is `ML`:
	// - Sex (string): Gender. Valid values: `LELAKI` (male) and `PEREMPUAN` (female).
	// - Birthday (string): Date of birth.
	// - ID (string): Identity card number.
	// - Name (string): Name.
	// - Address (string): Address.
	// - Type (string): Identity document type.
	// 
	// (3) Philippine identity document
	// When the value of `IdCardType` is `PhilippinesVoteID`:
	// - Birthday (string): Date of birth.
	// - Address (string): Address.
	// - LastName (string): Last name.
	// - FirstName (string): First name.
	// - VIN (string): Voter's identification number (VIN).
	// - CivilStatus (string): Civil status.
	// - Citizenship (string): Citizenship.
	// - PrecinctNo (string): Precinct.
	// 
	// When the value of `IdCardType` is `PhilippinesDrivingLicense`:
	// - Sex (string): Gender.
	// - Birthday (string): Date of birth.
	// - Name (string): Name.
	// - Address (string): Address.
	// - LastName (string): Last name.
	// - FirstName (string): First name.
	// - MiddleName (string): Middle name.
	// - Nationality (string): Nationality.
	// - LicenseNo (string): License number.
	// - ExpiresDate (string): Expiration date.
	// - AgencyCode (string): Agency code.
	// 
	// When the value of `IdCardType` is `PhilippinesTinID`:
	// - LicenseNumber (string): Tax identification number (TIN).
	// - FullName (string): Full name.
	// - Address (string): Address.
	// - Birthday (string): Date of birth.
	// - IssueDate (string): Issue date.
	// 
	// When the value of `IdCardType` is `PhilippinesSSSID`:
	// - LicenseNumber (string): Common reference number (CRN).
	// - FullName (string): Full name.
	// - Birthday (string): Date of birth.
	// 
	// When the value of `IdCardType` is `PhilippinesUMID`:
	// - Surname (string): Surname.
	// - MiddleName (string):Middle name.
	// - GivenName (string): Given name.
	// - Sex (string): Gender.
	// - Birthday (string): Date of birth.
	// - Address (string): Address.
	// - CRN (string): Common reference number (CRN).
	// 
	// (4) Indonesian identity card
	// When the value of `IdCardType` is `IndonesiaIDCard`:
	// - NIK (string): Single Identity Number.
	// - Nama (string): Full name.
	// - TempatTglLahir (string): Place and date of birth.
	// - JenisKelamin (string): Gender.
	// - GolDarah (string): Blood type.
	// - Alamat (string): Address.
	// - RTRW (string): Street.
	// - KelDesa (string): Village.
	// - Kecamatan (string): Region.
	// - Agama (string): Religion.
	// - StatusPerkawinan (string): Marital status.
	// - Perkerjaan (string): Occupation.
	// - KewargaNegaraan (string): Nationality.
	// - BerlakuHingga (string): Expiry date.
	// - IssuedDate (string): Issue date.
	// 
	// (5) A passport issued in Hong Kong (China) /Macao (China) /Taiwan (China) or other countries/regions
	// When the value of `IdCardType` is `MLIDPassport`:
	// - FullName (string): Full name.
	// - Surname (string): Surname.
	// - GivenName (string): Given name.
	// - Birthday (string): Date of birth.
	// - Sex (string): Gender. Valid values: `F` (female) and `M` (male).
	// - DateOfExpiration (string): Expiration date.
	// - IssuingCountry (string): Issuing country.
	// - NationalityCode (string): Country/region code.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CardInfoOcrJson *FileInfo `json:"CardInfoOcrJson,omitnil,omitempty" name:"CardInfoOcrJson"`

	// The request ID of a single process.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`

	// The recognition results of ID card
	//
	// Deprecated: CardInfo is deprecated.
	CardInfo *CardInfo `json:"CardInfo,omitnil,omitempty" name:"CardInfo"`

	// License OCR result
	NormalCardInfo *NormalCardInfo `json:"NormalCardInfo,omitnil,omitempty" name:"NormalCardInfo"`

	// Card warning information
	// -9101 Alarm for covered certificate,
	// -9102 Alarm for photocopied certificate,
	// -9103 Alarm for photographed certificate,
	// -9107 Alarm for reflective certificate,
	// -9108 Alarm for blurry image,
	// -9109 This capability is not enabled.
	WarnCardInfos []*int64 `json:"WarnCardInfos,omitnil,omitempty" name:"WarnCardInfos"`

	// Details of the OCR modifications for this EKYC card, when the user manually modifies the card recognition results (IsEdit=true), EditDetails will return the modified fields. When IsEdit=false, EditDetails is empty.
	EditDetails []*EditDetail `json:"EditDetails,omitnil,omitempty" name:"EditDetails"`
}

// Predefined struct for user
type CheckBankCardInformationRequestParams struct {
	// Bank card number.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type CheckBankCardInformationRequest struct {
	*tchttp.BaseRequest
	
	// Bank card number.
	BankCard *string `json:"BankCard,omitnil,omitempty" name:"BankCard"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (bank card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type CheckBankCardInformationResponseParams struct {
	// Verification result code. Billing is as follows.
	// -Result code for charges
	// Query succeeded
	// -1: Not found
	// -5: Invalid card number
	// 
	// -Result code with no charge
	// -Verification Center Service is busy.
	// -3: Bank card not found.
	// -4: Authentication attempts exceeded the daily limit. Retry the next day.
	// -6: This bank card type is not currently supported
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Account opening bank.
	AccountBank *string `json:"AccountBank,omitnil,omitempty" name:"AccountBank"`

	// Card type.
	// -Value range:
	// 1: Debit card.
	// 2: Credit card.
	// 3: Prepaid card.
	// 4: Credit card
	AccountType *int64 `json:"AccountType,omitnil,omitempty" name:"AccountType"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 CheckBankCardInformationResponse struct {
	*tchttp.BaseResponse
	Response *CheckBankCardInformationResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type CheckIdCardInformationRequestParams struct {
	// <p>Base64 value of the ID card portrait side.</p><ul><li>Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.</li><li>Supported image size: the downloaded image should be no more than 7M after Base64 encoding.</li><li>Please use the standard Base64 encoding method (with = padding). Refer to RFC4648 for coding specification.</li><li>Either ImageBase64 or ImageUrl must be provided. If both are provided, proceed to use parameters according to the priority of ImageUrl > ImageBase64.</li></ul>
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// <p>Url address of the ID card portrait side</p><ul><li>Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.</li><li>Supported image size: The downloaded image after Base64 encoding is no more than 3M. Image download time is no more than 3 seconds.</li><li>Images stored in Tencent Cloud's Url can guarantee higher download speed and stability. It is recommended to store images in Tencent Cloud.</li><li>Speed and stability of non-Tencent Cloud Storage URLs may be impacted to a certain extent.</li></ul>
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// <p>Configuration.</p><ul><li><p>All the following optional fields are bool type, default false.<br>CopyWarn, alarm for photocopy.<br>BorderCheckWarn, border and frame block alarm.<br>ReshootWarn, alarm for rephotographing.<br>DetectPsWarn, PS detection alarm (suspected PS traces).<br>TempIdWarn, temporary ID card alarm.<br>Quality, image Quality alarm (evaluates blurriness).</p></li><li><p>SDK configuration method for reference:<br>Config = Json.stringify({"CopyWarn":true,"ReshootWarn":true}).</p></li><li><p>API 3.0 Explorer setting method for reference:<br>Config = {"CopyWarn":true,"ReshootWarn":true}.</p></li></ul>
	Config *string `json:"Config,omitnil,omitempty" name:"Config"`

	// <p>Whether required to encrypt sensitive information in the response.</p><ul><li>Default false.</li><li>Sensitive information includes Response.IdNum and Response.Name.</li></ul>
	IsEncrypt *bool `json:"IsEncrypt,omitnil,omitempty" name:"IsEncrypt"`

	// <p>Whether required to encrypt the response body.</p>
	IsEncryptResponse *bool `json:"IsEncryptResponse,omitnil,omitempty" name:"IsEncryptResponse"`

	// <p>Whether required to encrypt sensitive information in the response, need to be specified encryption algorithm Algorithm, initial vector for CBC encryption, and encrypted symmetric key.</p>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type CheckIdCardInformationRequest struct {
	*tchttp.BaseRequest
	
	// <p>Base64 value of the ID card portrait side.</p><ul><li>Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.</li><li>Supported image size: the downloaded image should be no more than 7M after Base64 encoding.</li><li>Please use the standard Base64 encoding method (with = padding). Refer to RFC4648 for coding specification.</li><li>Either ImageBase64 or ImageUrl must be provided. If both are provided, proceed to use parameters according to the priority of ImageUrl > ImageBase64.</li></ul>
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// <p>Url address of the ID card portrait side</p><ul><li>Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.</li><li>Supported image size: The downloaded image after Base64 encoding is no more than 3M. Image download time is no more than 3 seconds.</li><li>Images stored in Tencent Cloud's Url can guarantee higher download speed and stability. It is recommended to store images in Tencent Cloud.</li><li>Speed and stability of non-Tencent Cloud Storage URLs may be impacted to a certain extent.</li></ul>
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// <p>Configuration.</p><ul><li><p>All the following optional fields are bool type, default false.<br>CopyWarn, alarm for photocopy.<br>BorderCheckWarn, border and frame block alarm.<br>ReshootWarn, alarm for rephotographing.<br>DetectPsWarn, PS detection alarm (suspected PS traces).<br>TempIdWarn, temporary ID card alarm.<br>Quality, image Quality alarm (evaluates blurriness).</p></li><li><p>SDK configuration method for reference:<br>Config = Json.stringify({"CopyWarn":true,"ReshootWarn":true}).</p></li><li><p>API 3.0 Explorer setting method for reference:<br>Config = {"CopyWarn":true,"ReshootWarn":true}.</p></li></ul>
	Config *string `json:"Config,omitnil,omitempty" name:"Config"`

	// <p>Whether required to encrypt sensitive information in the response.</p><ul><li>Default false.</li><li>Sensitive information includes Response.IdNum and Response.Name.</li></ul>
	IsEncrypt *bool `json:"IsEncrypt,omitnil,omitempty" name:"IsEncrypt"`

	// <p>Whether required to encrypt the response body.</p>
	IsEncryptResponse *bool `json:"IsEncryptResponse,omitnil,omitempty" name:"IsEncryptResponse"`

	// <p>Whether required to encrypt sensitive information in the response, need to be specified encryption algorithm Algorithm, initial vector for CBC encryption, and encrypted symmetric key.</p>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type CheckIdCardInformationResponseParams struct {
	// <p>Similarity. - Value ranges from 0.00 to 100.00. - Recommend threshold at least 70 to judge as same person, self-adjust based on specific scenario (pass rate for threshold 70 is 0.01%).</p>
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// <p>Business error code.</p><ul><li>Success case returns Success.</li><li>For error conditions, refer to the FailedOperation part in the error code list below.</li></ul>
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// <p>Business result description.</p>
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// <p>Name.</p>
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// <p>Gender.</p>
	Sex *string `json:"Sex,omitnil,omitempty" name:"Sex"`

	// <p>Ethnicity.</p>
	Nation *string `json:"Nation,omitnil,omitempty" name:"Nation"`

	// <p>Date of birth.</p>
	Birth *string `json:"Birth,omitnil,omitempty" name:"Birth"`

	// <p>Address.</p>
	Address *string `json:"Address,omitnil,omitempty" name:"Address"`

	// <p>Identity card number.</p>
	IdNum *string `json:"IdNum,omitnil,omitempty" name:"IdNum"`

	// <p>The base64 encoding of the ID card portrait photo. If the image cropping fails, it will compare with the entire ID card and return null.</p>
	Portrait *string `json:"Portrait,omitnil,omitempty" name:"Portrait"`

	// <p>Alarm information.</p><ul><li><p>When alarm information is configured in Config, portrait comparison will be disabled, Result returns an error (FailedOperation.OcrWarningOccurred) with this alarm information.</p></li><li><p>Code list of alarm codes and definition:<br>&#39;-9101&#39;: Incomplete ID card border alarm.<br>&#39;-9102&#39;: ID card copy alarm.<br>&#39;-9103&#39;: ID card photocopy alarm.<br>&#39;-9105&#39;: ID card frame occlusion alarm.<br>&#39;-9104&#39;: Temporary ID card alarm.<br>&#39;-9106&#39;: ID card PS alarm (suspected PS traces).<br>&#39;-8001&#39;: Warn about blurry images.</p></li><li><p>Multiple codes are separated by "|", such as "-9101|-9106|-9104".</p></li></ul>
	Warnings *string `json:"Warnings,omitnil,omitempty" name:"Warnings"`

	// <p>Image quality score.</p><ul><li>This parameter is significant only when warn about blurry images is configured in the request Config.</li><li>Value ranges from 0 to 100. The current default threshold is 50. A score lower than 50 triggers blurry image warnings.</li></ul>
	Quality *float64 `json:"Quality,omitnil,omitempty" name:"Quality"`

	// <p>Sensitive data encryption info.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`

	// <p>Encrypted data.</p>
	EncryptedBody *string `json:"EncryptedBody,omitnil,omitempty" name:"EncryptedBody"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 CheckIdCardInformationResponse struct {
	*tchttp.BaseResponse
	Response *CheckIdCardInformationResponseParams `json:"Response"`
}

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

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

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

	// Identity card number.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// ID card validity start time.
	// -Format: YYYYMMDD, for example: 20210701.
	ValidityBegin *string `json:"ValidityBegin,omitnil,omitempty" name:"ValidityBegin"`

	// ID card expiration time.
	// Format: YYYYMMDD, use "00000000" for long-term, for example: 20210701.
	ValidityEnd *string `json:"ValidityEnd,omitnil,omitempty" name:"ValidityEnd"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

	// Identity card number.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// ID card validity start time.
	// -Format: YYYYMMDD, for example: 20210701.
	ValidityBegin *string `json:"ValidityBegin,omitnil,omitempty" name:"ValidityBegin"`

	// ID card expiration time.
	// Format: YYYYMMDD, use "00000000" for long-term, for example: 20210701.
	ValidityEnd *string `json:"ValidityEnd,omitnil,omitempty" name:"ValidityEnd"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type CheckIdNameDateResponseParams struct {
	// Verification result code. Billing is as follows.
	// 
	// -Result code for charges
	// Same.
	// -1: Inconsistent.
	// 
	// -Result code with no charge
	// -2: Invalid ID number (incorrect length or check digit).
	// -3: Invalid name (incorrect length or format).
	// -4: Invalid validity period (incorrect length, format, etc.).
	// -5: Invalid identity information.
	// -6: Document library service exception.
	// -7: No ID card record found in the document library.
	// -8: Authentication attempts exceeded the daily limit. Retry the next day.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 CheckIdNameDateResponse struct {
	*tchttp.BaseResponse
	Response *CheckIdNameDateResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type CompareFaceLivenessRequestParams struct {
	// Base64 string of the image for face comparison.
	// - The size of the Base64-encoded image data can be up to 3 MB. JPG and PNG formats are supported.
	// - Please use the standard Base64 encoding method (with = padding). Refer to RFC4648 for the encoding specification.
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// Base64 string of the video for liveness detection.
	// - The size of the Base64-encoded video data can be up to 8 MB. MP4, AVI, and FLV formats are supported.
	// -Use standard Base64 encoding (with = padding), following RFC4648.
	VideoBase64 *string `json:"VideoBase64,omitnil,omitempty" name:"VideoBase64"`

	// Liveness detection type.
	// -Values:
	// ACTION is action mode.
	// SILENT is silent mode.
	// -Choose one of the two modes to pass in.
	LivenessType *string `json:"LivenessType,omitnil,omitempty" name:"LivenessType"`

	// Control the action sequence. Action types include: 1 (open mouth), 2 (blink), 3 (nod), 4 (shake head). Supports one or two actions.
	// -Required when the LivenessType parameter is set to ACTION.
	// -Single action example: "1".
	// -Multiple actions parameter passing example: "4,2".
	// -When the LivenessType parameter is set to SILENT, leave it blank.
	ValidateData *string `json:"ValidateData,omitnil,omitempty" name:"ValidateData"`
}

type CompareFaceLivenessRequest struct {
	*tchttp.BaseRequest
	
	// Base64 string of the image for face comparison.
	// - The size of the Base64-encoded image data can be up to 3 MB. JPG and PNG formats are supported.
	// - Please use the standard Base64 encoding method (with = padding). Refer to RFC4648 for the encoding specification.
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// Base64 string of the video for liveness detection.
	// - The size of the Base64-encoded video data can be up to 8 MB. MP4, AVI, and FLV formats are supported.
	// -Use standard Base64 encoding (with = padding), following RFC4648.
	VideoBase64 *string `json:"VideoBase64,omitnil,omitempty" name:"VideoBase64"`

	// Liveness detection type.
	// -Values:
	// ACTION is action mode.
	// SILENT is silent mode.
	// -Choose one of the two modes to pass in.
	LivenessType *string `json:"LivenessType,omitnil,omitempty" name:"LivenessType"`

	// Control the action sequence. Action types include: 1 (open mouth), 2 (blink), 3 (nod), 4 (shake head). Supports one or two actions.
	// -Required when the LivenessType parameter is set to ACTION.
	// -Single action example: "1".
	// -Multiple actions parameter passing example: "4,2".
	// -When the LivenessType parameter is set to SILENT, leave it blank.
	ValidateData *string `json:"ValidateData,omitnil,omitempty" name:"ValidateData"`
}

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

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

// Predefined struct for user
type CompareFaceLivenessResponseParams struct {
	// Business Error Codes.
	// -When the return value is "Success", it indicates that liveness detection and face comparison passed. Determined to be the same person.
	// -When the return value is "FailedOperation.CompareLowSimilarity", it indicates that liveness detection passed, but face comparison similarity is below 70. Determined not to be the same person.
	// -For other error cases, please refer to [Liveness Face Comparison (API only) Error Codes](https://www.tencentcloud.com/zh/document/product/1061/55390?lang=zh&pg=#97df7537-87fe-4266-87e9-02c816d41ee2)
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// The service result description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// This value indicates the similarity of face comparison. Value range: 0.00-100.00.
	// - The false acceptance rate for a threshold of 70 is 0.1%, and for a threshold of 80, it is 0.01%.
	// - This value is valid when the Result parameter is "Success" or "FailedOperation.CompareLowSimilarity".
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// The best screenshot photo from the video after verification, encoded in BASE64, in jpg format.
	// The optimal screenshot of the video after verification is the value encoded by BASE64, jpg format. 
	// Note: This field may return "null", indicating that no valid value can be obtained. 
	// Example values: "/9j/4AAQSk... (total length:142036)s97n//2Q=="
	BestFrameBase64 *string `json:"BestFrameBase64,omitnil,omitempty" name:"BestFrameBase64"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 CompareFaceLivenessResponse struct {
	*tchttp.BaseResponse
	Response *CompareFaceLivenessResponseParams `json:"Response"`
}

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

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

type CompareResult struct {
	// The final verification result code.
	// 0: Succeeded.
	// 1001: Failed to call the liveness engine.
	// 1002: Suspected spoofed recording.
	// 1004: Face detection failed.
	// 1005: Liveness detection failed.
	// 1201: Lighting is too dark or overexposed.
	// 2004: The image passed in is too large or too small.
	// 2012: Multiple faces detected.
	// 2013: No face was detected, or the face detected was incomplete.
	// 2014: The image resolution is too low or the quality does not meet the requirements.
	// 2015: Face comparison failed.
	// 2016: The similarity did not reach the standard passing threshold.
	// 2017: Facial occlusion detected.
	ErrorCode *string `json:"ErrorCode,omitnil,omitempty" name:"ErrorCode"`

	// The description of the final verification result.
	ErrorMsg *string `json:"ErrorMsg,omitnil,omitempty" name:"ErrorMsg"`

	// The liveness algorithm package generated during this SDK-based liveness detection.
	LiveData *FileInfo `json:"LiveData,omitnil,omitempty" name:"LiveData"`

	// The download URL of the video used for verification, which contains specific color reflection effects, is valid for 10 minutes.
	LiveVideo *FileInfo `json:"LiveVideo,omitnil,omitempty" name:"LiveVideo"`

	// Records the specific action performed by the user, used for AI Face Shield analysis.
	ActionVideo *FileInfo `json:"ActionVideo,omitnil,omitempty" name:"ActionVideo"`

	// The liveness detection result code.
	// 0: Success.
	// 1001: Failed to call the liveness detection engine.
	// 1002: Suspected spoofed recording.
	// 1004: Face detection failed.
	// 1005: Liveness detection failed.
	// 1201: Lighting is too dark or overexposed.
	LiveErrorCode *string `json:"LiveErrorCode,omitnil,omitempty" name:"LiveErrorCode"`

	// The description of the liveness detection result.
	LiveErrorMsg *string `json:"LiveErrorMsg,omitnil,omitempty" name:"LiveErrorMsg"`

	// The download URL of the face screenshot during verification, which is valid for 10 minutes.
	// Note: This field may return null, indicating that no valid value can be obtained.
	BestFrame *FileInfo `json:"BestFrame,omitnil,omitempty" name:"BestFrame"`

	// The download URL of the profile photo screenshot from the identity document, which is valid for 10 minutes.
	ProfileImage *FileInfo `json:"ProfileImage,omitnil,omitempty" name:"ProfileImage"`

	// The face comparison result code.
	// 0: Success.
	// 2004: The image passed in is too large or too small.
	// 2012: Multiple faces detected.
	// 2013: No face was detected, or the face detected was incomplete.
	// 2014: The image resolution is too low or the quality does not meet the requirements.
	// 2015: Face comparison failed.
	// 2016: The similarity did not reach the standard passing threshold.
	// 2017: Facial occlusion detected.
	// Note: This field may return null, indicating that no valid value can be obtained.
	CompareErrorCode *string `json:"CompareErrorCode,omitnil,omitempty" name:"CompareErrorCode"`

	// The description of the face comparison result.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CompareErrorMsg *string `json:"CompareErrorMsg,omitnil,omitempty" name:"CompareErrorMsg"`

	// The similarity score of face comparison.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// This parameter is disused.
	IsNeedCharge *bool `json:"IsNeedCharge,omitnil,omitempty" name:"IsNeedCharge"`

	// The identity document photo info edited by the user. Currently, this parameter is not applied.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CardInfoInputJson *FileInfo `json:"CardInfoInputJson,omitnil,omitempty" name:"CardInfoInputJson"`

	// The request ID of this verification process.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`

	// Describes the detailed reason for the current liveness detection failure. Output only when SdkVersion is PLUS. Details are as follows:
	// 01 - User kept eyes closed throughout the process.
	// 02 - User failed to complete the specified action.
	// 03 - Suspected photo replay attack.
	// 04 - Suspected synthetic image.
	// 05 - Suspected synthetic video.
	// 06 - Suspected synthetic action.
	// 07 - Suspected fraud template.
	// 08 - Suspected watermark existence.
	// 09 - Light verification failed.
	// 10 - Face verification failed.
	// 11 - Poor face quality.
	// 12 - Unqualified collection quality.
	// 13 - Suspected adversarial sample attack.
	LivenessInfoTag []*string `json:"LivenessInfoTag,omitnil,omitempty" name:"LivenessInfoTag"`
}

// Predefined struct for user
type CreateUploadUrlRequestParams struct {
	// Target API
	TargetAction *string `json:"TargetAction,omitnil,omitempty" name:"TargetAction"`
}

type CreateUploadUrlRequest struct {
	*tchttp.BaseRequest
	
	// Target API
	TargetAction *string `json:"TargetAction,omitnil,omitempty" name:"TargetAction"`
}

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

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

// Predefined struct for user
type CreateUploadUrlResponseParams struct {
	// The URL for uploading contents with the `HTTP PUT` method.
	UploadUrl *string `json:"UploadUrl,omitnil,omitempty" name:"UploadUrl"`

	// The resource URL obtained after this upload is completed and to be passed in where it is required later.
	ResourceUrl *string `json:"ResourceUrl,omitnil,omitempty" name:"ResourceUrl"`

	// The point in time when the upload/download link expires, which is a 10-bit Unix timestamp.
	ExpiredTimestamp *int64 `json:"ExpiredTimestamp,omitnil,omitempty" name:"ExpiredTimestamp"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 CreateUploadUrlResponse struct {
	*tchttp.BaseResponse
	Response *CreateUploadUrlResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DetectAIFakeFacesRequestParams struct {
	// <p>Import the face image or facial video to be detected (currently only single face detection is supported) in base64 encoding. If your scenario involves both video and image, we recommend using video for detection. For better detection results, please note the following input data limits and suggestions:</p><ul><li><p>base64 value of the image:<br>Recommend an overall image resolution of 480x640, with the face size no less than 100x100, captured by the mobile front camera.<br>The size of the base64-encoded image data should not exceed 3M, with a maximum of 10M. Only jpg and png formats are supported.<br>Please use the standard base64 encoding method (with = padding). Refer to RFC4648 for the coding specification.</p></li><li><p>base64 value of the video:<br>The size after base64 encoding should be within 8M, with a maximum of 10M. Supported formats include mp4, avi, and flv, captured by the mobile front camera.<br>Video duration is recommended to be 2–5s, with a maximum of 20s.<br>Video resolution is recommended at 480x640 (maximum support for 720p), with a frame rate between 25fps and 30fps.<br>Please use the standard base64 encoding method (with = padding). Refer to RFC4648 for the coding specification.</p></li></ul><p>If you do not use Encryption for secure transmission, this field is a required parameter.</p>
	FaceInput *string `json:"FaceInput,omitnil,omitempty" name:"FaceInput"`

	// <p>Passed in type.</p><ul><li>Value ranges from 1 to 2:<br>1: Passed in image type.<br>2: Passed in video type.<br>Other: Return error code InvalidParameter.</li></ul><p>If you do not use Encryption for encrypting transmission, this field is mandatory.</p>
	FaceInputType *int64 `json:"FaceInputType,omitnil,omitempty" name:"FaceInputType"`

	// <p>Whether to encrypt the entire request information.</p><ul><li>Supported encryption algorithms: AES-256-CBC, SM4-GCM.</li><li>The user with encryption requirements can use this parameter. For details, please click the left-side link.</li></ul>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`

	// <p>Encrypted ciphertext.</p><ul><li>The data format before encryption is as follows: {"FaceInput":"AAAAA","FaceInputType":1}.</li></ul>
	EncryptedBody *string `json:"EncryptedBody,omitnil,omitempty" name:"EncryptedBody"`
}

type DetectAIFakeFacesRequest struct {
	*tchttp.BaseRequest
	
	// <p>Import the face image or facial video to be detected (currently only single face detection is supported) in base64 encoding. If your scenario involves both video and image, we recommend using video for detection. For better detection results, please note the following input data limits and suggestions:</p><ul><li><p>base64 value of the image:<br>Recommend an overall image resolution of 480x640, with the face size no less than 100x100, captured by the mobile front camera.<br>The size of the base64-encoded image data should not exceed 3M, with a maximum of 10M. Only jpg and png formats are supported.<br>Please use the standard base64 encoding method (with = padding). Refer to RFC4648 for the coding specification.</p></li><li><p>base64 value of the video:<br>The size after base64 encoding should be within 8M, with a maximum of 10M. Supported formats include mp4, avi, and flv, captured by the mobile front camera.<br>Video duration is recommended to be 2–5s, with a maximum of 20s.<br>Video resolution is recommended at 480x640 (maximum support for 720p), with a frame rate between 25fps and 30fps.<br>Please use the standard base64 encoding method (with = padding). Refer to RFC4648 for the coding specification.</p></li></ul><p>If you do not use Encryption for secure transmission, this field is a required parameter.</p>
	FaceInput *string `json:"FaceInput,omitnil,omitempty" name:"FaceInput"`

	// <p>Passed in type.</p><ul><li>Value ranges from 1 to 2:<br>1: Passed in image type.<br>2: Passed in video type.<br>Other: Return error code InvalidParameter.</li></ul><p>If you do not use Encryption for encrypting transmission, this field is mandatory.</p>
	FaceInputType *int64 `json:"FaceInputType,omitnil,omitempty" name:"FaceInputType"`

	// <p>Whether to encrypt the entire request information.</p><ul><li>Supported encryption algorithms: AES-256-CBC, SM4-GCM.</li><li>The user with encryption requirements can use this parameter. For details, please click the left-side link.</li></ul>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`

	// <p>Encrypted ciphertext.</p><ul><li>The data format before encryption is as follows: {"FaceInput":"AAAAA","FaceInputType":1}.</li></ul>
	EncryptedBody *string `json:"EncryptedBody,omitnil,omitempty" name:"EncryptedBody"`
}

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

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

// Predefined struct for user
type DetectAIFakeFacesResponseParams struct {
	// <p>Detection result for the input image/video to check the existence of face spoofing attack.</p><ul><li>Low: Low attack risk.</li><li>Mid: Moderately suspected attack.</li><li>High: Highly suspected attack.</li></ul><p>It is advisable to judge as interception when the return value is High, and pass for Mid and Low to better balance security and pass rate.</p>
	AttackRiskLevel *string `json:"AttackRiskLevel,omitnil,omitempty" name:"AttackRiskLevel"`

	// <p>List of suspected attack traces detected. It is returned only when AttackRiskLevel is High or Mid.</p><ul><li>Description: Return an empty array if no attack traces are detected.</li><li>This output parameter is for result determination reference. The result of AttackRiskLevel is still recommended for actual use.</li></ul>
	AttackRiskDetailList []*AttackRiskDetail `json:"AttackRiskDetailList,omitnil,omitempty" name:"AttackRiskDetailList"`

	// <p>Return additional information (including detailed information of cache hit templates).</p>
	ExtraInfo *ExtraInfo `json:"ExtraInfo,omitnil,omitempty" name:"ExtraInfo"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 DetectAIFakeFacesResponse struct {
	*tchttp.BaseResponse
	Response *DetectAIFakeFacesResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DetectReflectLivenessAndCompareRequestParams struct {
	// URL of the liveness detection data package generated by the SDK
	LiveDataUrl *string `json:"LiveDataUrl,omitnil,omitempty" name:"LiveDataUrl"`

	// MD5 hash value (32-bit) of the liveness detection data package generated by the SDK, which is used to verify the LiveData consistency.
	LiveDataMd5 *string `json:"LiveDataMd5,omitnil,omitempty" name:"LiveDataMd5"`

	// URL of the target image for comparison
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// MD5 hash value (32-bit) of the target image for comparison, which is used to verify the `Image` consistency.
	ImageMd5 *string `json:"ImageMd5,omitnil,omitempty" name:"ImageMd5"`
}

type DetectReflectLivenessAndCompareRequest struct {
	*tchttp.BaseRequest
	
	// URL of the liveness detection data package generated by the SDK
	LiveDataUrl *string `json:"LiveDataUrl,omitnil,omitempty" name:"LiveDataUrl"`

	// MD5 hash value (32-bit) of the liveness detection data package generated by the SDK, which is used to verify the LiveData consistency.
	LiveDataMd5 *string `json:"LiveDataMd5,omitnil,omitempty" name:"LiveDataMd5"`

	// URL of the target image for comparison
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// MD5 hash value (32-bit) of the target image for comparison, which is used to verify the `Image` consistency.
	ImageMd5 *string `json:"ImageMd5,omitnil,omitempty" name:"ImageMd5"`
}

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

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

// Predefined struct for user
type DetectReflectLivenessAndCompareResponseParams struct {
	// Temporary URL of the best screenshot (.jpg) of the video after successful verification. Both the screenshot and the URL are valid for two hours only, so you need to download the screenshot within this period.
	BestFrameUrl *string `json:"BestFrameUrl,omitnil,omitempty" name:"BestFrameUrl"`

	// MD5 hash value (32-bit) of the best screenshot of the video after successful verification, which is used to verify the `BestFrame` consistency.
	BestFrameMd5 *string `json:"BestFrameMd5,omitnil,omitempty" name:"BestFrameMd5"`

	// Service error code. `Success` will be returned for success. For error information, see the `FailedOperation` section in the error code list below.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Service result description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Similarity. Value range: [0.00, 100.00]. As a recommendation, when the similarity is greater than or equal to 70, it can be determined that the two faces are of the same person. You can adjust the threshold according to your specific scenario (the FAR at the threshold of 70 is 0.1%, and FAR at the threshold of 80 is 0.01%).
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 DetectReflectLivenessAndCompareResponse struct {
	*tchttp.BaseResponse
	Response *DetectReflectLivenessAndCompareResponseParams `json:"Response"`
}

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

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

type EditDetail struct {
	// Modified Field Name
	FieldName *string `json:"FieldName,omitnil,omitempty" name:"FieldName"`

	// Value of the field before modification, the original OCR result
	OriginalFieldValue *string `json:"OriginalFieldValue,omitnil,omitempty" name:"OriginalFieldValue"`

	// Value of the field after modification,the user's manually entered result
	RevisedFieldValue *string `json:"RevisedFieldValue,omitnil,omitempty" name:"RevisedFieldValue"`
}

type Encryption struct {
	// <p>When using the encryption service, fill in the field to be encrypted. One or more encrypted fields can be auto-filled in this API.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	EncryptList []*string `json:"EncryptList,omitnil,omitempty" name:"EncryptList"`

	// <p>Encrypted symmetric key. See the <a href="https://www.tencentcloud.com/document/product/1007/47180?from_cn_redirect=1">data encryption</a> document for key generation and use.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	CiphertextBlob *string `json:"CiphertextBlob,omitnil,omitempty" name:"CiphertextBlob"`

	// <p>Users with encryption requirements import the initial vector for CBC encryption (custom string with a length of 16 characters).</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Iv *string `json:"Iv,omitnil,omitempty" name:"Iv"`

	// <p>Encryption algorithm (supports 'AES-256-CBC', 'SM4-GCM'). Defaults to 'AES-256-CBC' if not specified.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Algorithm *string `json:"Algorithm,omitnil,omitempty" name:"Algorithm"`

	// <p>Message digest generated by the SM4-GCM algorithm (used when verifying message integrity)</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	TagList []*string `json:"TagList,omitnil,omitempty" name:"TagList"`
}

type ExtraInfo struct {
	// Full details of the hit template; return solely the template with the maximum similarity.
	RetrievalLivenessExtraInfo []*RetrievalLivenessExtraInfo `json:"RetrievalLivenessExtraInfo,omitnil,omitempty" name:"RetrievalLivenessExtraInfo"`
}

type FileInfo struct {
	// The URL for downloading the file
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// The 32-bit MD5 checksum of the file
	MD5 *string `json:"MD5,omitnil,omitempty" name:"MD5"`

	// The file size
	Size *int64 `json:"Size,omitnil,omitempty" name:"Size"`
}

type GeneralCard struct {
	// License number
	// Note: This field may return null, indicating that no valid values can be obtained.
	LicenseNumber *string `json:"LicenseNumber,omitnil,omitempty" name:"LicenseNumber"`

	// Personal number, which is returned when it is a passport
	// Note: This field may return null, indicating that no valid values can be obtained.
	PersonalNumber *string `json:"PersonalNumber,omitnil,omitempty" name:"PersonalNumber"`

	// The first line of passport machine reading code
	// Note: This field may return null, indicating that no valid values can be obtained.
	PassportCodeFirst *string `json:"PassportCodeFirst,omitnil,omitempty" name:"PassportCodeFirst"`

	// The first line of passport machine reading code
	// Note: This field may return null, indicating that no valid values can be obtained.
	PassportCodeSecond *string `json:"PassportCodeSecond,omitnil,omitempty" name:"PassportCodeSecond"`

	// Date of expiry in the format of YYYY-MM-DD
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExpirationDate *string `json:"ExpirationDate,omitnil,omitempty" name:"ExpirationDate"`

	// Valid date in the format of YYYY-MM-DD
	// Note: This field may return null, indicating that no valid values can be obtained.
	DueDate *string `json:"DueDate,omitnil,omitempty" name:"DueDate"`

	// Date of issue in the format of YYYY-MM-DD
	// Note: This field may return null, indicating that no valid values can be obtained.
	IssuedDate *string `json:"IssuedDate,omitnil,omitempty" name:"IssuedDate"`

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

	// Issuing country, which is returned following the ISO 3166 country coding specification
	// Note: This field may return null, indicating that no valid values can be obtained.
	// Example: MYS
	IssuedCountry *string `json:"IssuedCountry,omitnil,omitempty" name:"IssuedCountry"`

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

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

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

	// Gender on the license
	// - M: male
	// - F: female
	// - X: other gender
	// Note: This field may return null, indicating that no valid values can be obtained.
	// Example: M
	Sex *string `json:"Sex,omitnil,omitempty" name:"Sex"`

	// Age. 0 indicates that no valid information is obtained.
	// Example: 0
	Age *string `json:"Age,omitnil,omitempty" name:"Age"`

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

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

	// Nationality, which is returned following the ISO 3166 country coding specification
	// Note: This field may return null, indicating that no valid values can be obtained.
	// Example: IND
	Nationality *string `json:"Nationality,omitnil,omitempty" name:"Nationality"`

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

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

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

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

	// Localized surname.
	LastNameLocal *string `json:"LastNameLocal,omitnil,omitempty" name:"LastNameLocal"`
}

// Predefined struct for user
type GenerateReflectSequenceRequestParams struct {
	// The resource URL of the data package generated by the SDK.
	DeviceDataUrl *string `json:"DeviceDataUrl,omitnil,omitempty" name:"DeviceDataUrl"`

	// The MD5 hash value of the data package generated by the SDK.
	DeviceDataMd5 *string `json:"DeviceDataMd5,omitnil,omitempty" name:"DeviceDataMd5"`

	// 1 - silent
	// 2 - blinking
	// 3 - light
	// 4 - blinking + light (default)
	SecurityLevel *string `json:"SecurityLevel,omitnil,omitempty" name:"SecurityLevel"`
}

type GenerateReflectSequenceRequest struct {
	*tchttp.BaseRequest
	
	// The resource URL of the data package generated by the SDK.
	DeviceDataUrl *string `json:"DeviceDataUrl,omitnil,omitempty" name:"DeviceDataUrl"`

	// The MD5 hash value of the data package generated by the SDK.
	DeviceDataMd5 *string `json:"DeviceDataMd5,omitnil,omitempty" name:"DeviceDataMd5"`

	// 1 - silent
	// 2 - blinking
	// 3 - light
	// 4 - blinking + light (default)
	SecurityLevel *string `json:"SecurityLevel,omitnil,omitempty" name:"SecurityLevel"`
}

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

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

// Predefined struct for user
type GenerateReflectSequenceResponseParams struct {
	// The resource URL of the light sequence, which needs to be downloaded and passed through to the SDK to start the eKYC process.
	ReflectSequenceUrl *string `json:"ReflectSequenceUrl,omitnil,omitempty" name:"ReflectSequenceUrl"`

	// The MD5 hash value of the light sequence, which is used to check whether the light sequence is altered.
	ReflectSequenceMd5 *string `json:"ReflectSequenceMd5,omitnil,omitempty" name:"ReflectSequenceMd5"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GenerateReflectSequenceResponse struct {
	*tchttp.BaseResponse
	Response *GenerateReflectSequenceResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetFaceIdResultIntlRequestParams struct {
	// The ID of the SDK-based selfie verification process, which is generated when the `GetFaceIdTokenIntl` API is called.	
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`
}

type GetFaceIdResultIntlRequest struct {
	*tchttp.BaseRequest
	
	// The ID of the SDK-based selfie verification process, which is generated when the `GetFaceIdTokenIntl` API is called.	
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`
}

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

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

// Predefined struct for user
type GetFaceIdResultIntlResponseParams struct {
	// The return code of the verification result.
	// 0: Success.
	// 1001: Failed to call the liveness engine.
	// 1002: Suspected spoofed recording.
	// 1004: Face detection failed.
	// 1005: Liveness detection failed.
	// 1201: Lighting is too dark or overexposed.
	// 2004: The image passed in is too large or too small.
	// 2012: Multiple faces detected.
	// 2013: No face was detected, or the face detected was incomplete.
	// 2014: The image resolution is too low or the quality does not meet the requirements.
	// 2015: Face comparison failed.
	// 2016: The similarity did not reach the standard passing threshold.
	// 2017: Facial occlusion detected.
	// -999: The verification process wasn't finished.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// The description of the verification result.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The best frame screenshot (in Base64) obtained during the verification.
	BestFrame *string `json:"BestFrame,omitnil,omitempty" name:"BestFrame"`

	// The video file (Base64) for verification.Used for verification, contains specific color reflection effects.
	Video *string `json:"Video,omitnil,omitempty" name:"Video"`

	// Records the specific action performed by the user, used for AI Face Shield analysis.
	ActionVideo *string `json:"ActionVideo,omitnil,omitempty" name:"ActionVideo"`

	// The similarity, with a value range of 0-100. A greater value indicates higher similarity. This parameter is returned only in the `compare` (selfie verification) mode.
	// Note: The Similarity metric is exclusively valid for "compare" mode. In "liveness" mode, the returned Similarity value (0.0) is non-significant and should be ignored.
	Similarity *float64 `json:"Similarity,omitnil,omitempty" name:"Similarity"`

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

	// Describe the risk level of the device where the current request is located, with a total of 4 levels. The details are as follows:
	// 1 - Secure
	// 2 - Low Risk
	// 3 - Medium Risk
	// 4 - High Risk
	// Empty - Risk level not obtained.
	// Only returned for the Enhance and Plus version, with the default value being empty.
	DeviceInfoLevel *string `json:"DeviceInfoLevel,omitnil,omitempty" name:"DeviceInfoLevel"`

	// Describes the detailed reason for the current liveness detection failure. Output only when SdkVersion is PLUS or PRO. Details are as follows:
	// 01 - User kept eyes closed throughout the process.
	// 02 - User failed to complete the specified action.
	// 03 - Suspected photo replay attack.
	// 04 - Suspected synthetic image.
	// 05 - Suspected synthetic video.
	// 06 - Suspected synthetic action.
	// 07 - Suspected fraud template.
	// 08 - Suspected watermark existence.
	// 09 - Light verification failed.
	// 10 - Face verification failed.
	// 11 - Poor face quality.
	// 12 - Unqualified collection quality.
	// 13 - Suspected adversarial sample attack.
	LivenessInfoTag []*string `json:"LivenessInfoTag,omitnil,omitempty" name:"LivenessInfoTag"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GetFaceIdResultIntlResponse struct {
	*tchttp.BaseResponse
	Response *GetFaceIdResultIntlResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetFaceIdTokenIntlRequestParams struct {
	// <p>Indicates the detection mode. Parameter values as follows:<br>"liveness": liveness detection only;<br>"compare": liveness detection + face comparison;<br>Default value: "liveness".</p>
	CheckMode *string `json:"CheckMode,omitnil,omitempty" name:"CheckMode"`

	// <p>Indicates the security level of authentication. Security levels are divided into:<br>"1": silent liveness;<br>"2": action liveness detection;<br>"3": light liveness;<br>"4": action + light liveness;<br>Default value is "4".</p>
	// **Note:** Security level increases from `1` to `4`, with `4` providing the highest security.
	SecureLevel *string `json:"SecureLevel,omitnil,omitempty" name:"SecureLevel"`

	// <p>The base64 code of the image for comparison, used for the "liveness comparison" mode. This parameter is required when CheckMode is "compare".</p>
	Image *string `json:"Image,omitnil,omitempty" name:"Image"`

	// <p>This parameter is a business passthrough parameter and can be omitted unless otherwise needed.</p>
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// <p>This API is used to control the sequence of actions. The action types are as follows:<br>"blink"<br>"mouth"<br>"nod"<br>"shake"<br>Choose 1-2 actions from the four.<br>Single action example: "blink"<br>Multi-action example: "blink,mouth".<br>Default value is blink.<br>Input this parameter only when SecureLevel is 2 or 4 for different action types to take effect; otherwise, the API returns an error.</p>
	ActionList *string `json:"ActionList,omitnil,omitempty" name:"ActionList"`

	// <p>PLUS: PLUS version, PRO: PRO version, ENHANCED: enhanced, BASIC: basic (default)</p>
	SdkVersion *string `json:"SdkVersion,omitnil,omitempty" name:"SdkVersion"`

	// <p>Liveness retry count</p><p>Value ranges from 1 to 5</p><p>Default value: 5</p>
	RetryLimit *int64 `json:"RetryLimit,omitnil,omitempty" name:"RetryLimit"`
}

type GetFaceIdTokenIntlRequest struct {
	*tchttp.BaseRequest
	
	// <p>Indicates the detection mode. Parameter values as follows:<br>"liveness": liveness detection only;<br>"compare": liveness detection + face comparison;<br>Default value: "liveness".</p>
	CheckMode *string `json:"CheckMode,omitnil,omitempty" name:"CheckMode"`

	// <p>Indicates the security level of authentication. Security levels are divided into:<br>"1": silent liveness;<br>"2": action liveness detection;<br>"3": light liveness;<br>"4": action + light liveness;<br>Default value is "4".</p>
	// **Note:** Security level increases from `1` to `4`, with `4` providing the highest security.
	SecureLevel *string `json:"SecureLevel,omitnil,omitempty" name:"SecureLevel"`

	// <p>The base64 code of the image for comparison, used for the "liveness comparison" mode. This parameter is required when CheckMode is "compare".</p>
	Image *string `json:"Image,omitnil,omitempty" name:"Image"`

	// <p>This parameter is a business passthrough parameter and can be omitted unless otherwise needed.</p>
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// <p>This API is used to control the sequence of actions. The action types are as follows:<br>"blink"<br>"mouth"<br>"nod"<br>"shake"<br>Choose 1-2 actions from the four.<br>Single action example: "blink"<br>Multi-action example: "blink,mouth".<br>Default value is blink.<br>Input this parameter only when SecureLevel is 2 or 4 for different action types to take effect; otherwise, the API returns an error.</p>
	ActionList *string `json:"ActionList,omitnil,omitempty" name:"ActionList"`

	// <p>PLUS: PLUS version, PRO: PRO version, ENHANCED: enhanced, BASIC: basic (default)</p>
	SdkVersion *string `json:"SdkVersion,omitnil,omitempty" name:"SdkVersion"`

	// <p>Liveness retry count</p><p>Value ranges from 1 to 5</p><p>Default value: 5</p>
	RetryLimit *int64 `json:"RetryLimit,omitnil,omitempty" name:"RetryLimit"`
}

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

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

// Predefined struct for user
type GetFaceIdTokenIntlResponseParams struct {
	// <p>SdkToken, used to connect the identity verification process. The verification result can be retrieved with this token. Each SdkToken has a validity of 10 minutes.</p>
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GetFaceIdTokenIntlResponse struct {
	*tchttp.BaseResponse
	Response *GetFaceIdTokenIntlResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetLivenessResultRequestParams struct {
	// The token used to identify an SDK-based verification process.
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`
}

type GetLivenessResultRequest struct {
	*tchttp.BaseRequest
	
	// The token used to identify an SDK-based verification process.
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`
}

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

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

// Predefined struct for user
type GetLivenessResultResponseParams struct {
	// The final verification result.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// The description of the final verification result.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The face screenshot.
	BestFrame *FileInfo `json:"BestFrame,omitnil,omitempty" name:"BestFrame"`

	// The video for the detection.
	Video *FileInfo `json:"Video,omitnil,omitempty" name:"Video"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GetLivenessResultResponse struct {
	*tchttp.BaseResponse
	Response *GetLivenessResultResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetNFCTokenRequestParams struct {

}

type GetNFCTokenRequest struct {
	*tchttp.BaseRequest
	
}

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

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

// Predefined struct for user
type GetNFCTokenResponseParams struct {
	// NFCToken
	Token *string `json:"Token,omitnil,omitempty" name:"Token"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GetNFCTokenResponse struct {
	*tchttp.BaseResponse
	Response *GetNFCTokenResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetSdkVerificationResultRequestParams struct {
	// The token used to identify an SDK-based verification process. 
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`
}

type GetSdkVerificationResultRequest struct {
	*tchttp.BaseRequest
	
	// The token used to identify an SDK-based verification process. 
	SdkToken *string `json:"SdkToken,omitnil,omitempty" name:"SdkToken"`
}

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

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

// Predefined struct for user
type GetSdkVerificationResultResponseParams struct {
	// The result code of the verification result.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// The verification result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The charge count.
	ChargeCount *int64 `json:"ChargeCount,omitnil,omitempty" name:"ChargeCount"`

	// The results of multiple OCR processes (in order). The result of the final process is used as the valid result.
	CardVerifyResults []*CardVerifyResult `json:"CardVerifyResults,omitnil,omitempty" name:"CardVerifyResults"`

	// The results of multiple liveness detection processes (in order). The result of the final process is used as the valid result.
	CompareResults []*CompareResult `json:"CompareResults,omitnil,omitempty" name:"CompareResults"`

	// Data passed through in the process of getting the token.
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// Describe the risk level of the device where the current request is located, with a total of 4 levels. The details are as follows:
	// 1 - Secure
	// 2 - Low Risk
	// 3 - Medium Risk
	// 4 - High Risk
	// Empty - Risk level not obtained.
	// Only returned for the Enhance and Plus version, with the default value being empty.
	DeviceInfoLevel *string `json:"DeviceInfoLevel,omitnil,omitempty" name:"DeviceInfoLevel"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GetSdkVerificationResultResponse struct {
	*tchttp.BaseResponse
	Response *GetSdkVerificationResultResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetWebVerificationResultIntlRequestParams struct {
	// The token for the web-based verification, which is generated using the `ApplyWebVerificationBizTokenIntl` API.
	BizToken *string `json:"BizToken,omitnil,omitempty" name:"BizToken"`
}

type GetWebVerificationResultIntlRequest struct {
	*tchttp.BaseRequest
	
	// The token for the web-based verification, which is generated using the `ApplyWebVerificationBizTokenIntl` API.
	BizToken *string `json:"BizToken,omitnil,omitempty" name:"BizToken"`
}

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

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

// Predefined struct for user
type GetWebVerificationResultIntlResponseParams struct {
	// The final result of this verification. `0` indicates that the person is the same as that in the photo.
	// For other error codes, see <a href="https://www.tencentcloud.com/document/product/1061/55390?lang=en&pg=#8a960e1e-39c0-42cb-b181-b3164d77f81e">Selfie Verification (Mobile HTML5) Error Codes</a>
	// Note: This field may return null, indicating that no valid values can be obtained.
	ErrorCode *int64 `json:"ErrorCode,omitnil,omitempty" name:"ErrorCode"`

	// The description of the final verification result.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ErrorMsg *string `json:"ErrorMsg,omitnil,omitempty" name:"ErrorMsg"`

	// The detailed verification result list of this process. Retries are allowed, so a verification process may have several entries of results.
	// Note: This field may return null, indicating that no valid values can be obtained.
	VerificationDetailList []*VerificationDetail `json:"VerificationDetailList,omitnil,omitempty" name:"VerificationDetailList"`

	// The Base64-encoded string of the video collected from the video stream. Retries are allowed, and this field returns only the data collected in the last verification. If no video is collected, null is returned.
	// Note: This field may return null, indicating that no valid values can be obtained.
	VideoBase64 *string `json:"VideoBase64,omitnil,omitempty" name:"VideoBase64"`

	// The Base64-encoded string of the best face screenshot collected from the video stream. Retries are allowed, and this field returns only the data collected in the last verification. If no best face screenshot is collected, null is returned.
	// Note: This field may return null, indicating that no valid values can be obtained.
	BestFrameBase64 *string `json:"BestFrameBase64,omitnil,omitempty" name:"BestFrameBase64"`

	// Card recognize result
	OCRResult []*OCRResult `json:"OCRResult,omitnil,omitempty" name:"OCRResult"`

	// The passthrough parameter of the business, max 1,000 characters, which will be returned in GetWebVerificationResultIntl.
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GetWebVerificationResultIntlResponse struct {
	*tchttp.BaseResponse
	Response *GetWebVerificationResultIntlResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetWxNFCResultRequestParams struct {
	// <p>Unique identifier ID returned by the frontend NFC SDK</p>
	NFCToken *string `json:"NFCToken,omitnil,omitempty" name:"NFCToken"`
}

type GetWxNFCResultRequest struct {
	*tchttp.BaseRequest
	
	// <p>Unique identifier ID returned by the frontend NFC SDK</p>
	NFCToken *string `json:"NFCToken,omitnil,omitempty" name:"NFCToken"`
}

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

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

// Predefined struct for user
type GetWxNFCResultResponseParams struct {
	// <p>NFC billing result code. Each successful NFC read is billed once (duplicate billing does not occur for repeated pull of the same NFC request). Permissible range of billing result codes:<br>  0: Read successful, billed<br>-1: Read fail, free of charge</p>
	ResultCode *string `json:"ResultCode,omitnil,omitempty" name:"ResultCode"`

	// <p>Identity card number</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	IdNum *string `json:"IdNum,omitnil,omitempty" name:"IdNum"`

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

	// <p>Portrait photo in the document</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Picture *string `json:"Picture,omitnil,omitempty" name:"Picture"`

	// <p>Front photo of the identity document (portrait side)</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	IdCardFrontImg *string `json:"IdCardFrontImg,omitnil,omitempty" name:"IdCardFrontImg"`

	// <p>Photo of the back of an identity document (national emblem side)</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	IdCardBackImg *string `json:"IdCardBackImg,omitnil,omitempty" name:"IdCardBackImg"`

	// <p>Date of birth</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	BirthDate *string `json:"BirthDate,omitnil,omitempty" name:"BirthDate"`

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

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

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

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

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

	// <p>Document type</p><p>Enumeration value:</p><ul><li>01: ID card</li><li>03: Chinese passport</li><li>06: Hong Kong and Macau travel permit</li><li>07: Taiwan travel permit</li><li>08: Foreign passport</li><li>13: Permanent residence permit for foreigners</li><li>14: Residence Permit for Hong Kong (China), Macao (China), and Taiwan (China) residents</li><li>15: Return Home Permit</li><li>16: Travel permit for Chinese mainland residents to Taiwan (China)</li><li>99: Other documents</li></ul>
	// Note: This field may return null, indicating that no valid values can be obtained.
	IdType *string `json:"IdType,omitnil,omitempty" name:"IdType"`

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

	// <p>Issuing authority</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	SigningOrganization *string `json:"SigningOrganization,omitnil,omitempty" name:"SigningOrganization"`

	// <p>Residence Permit for residents of Hong Kong (China), Macao (China) and Taiwan (China), passport number</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	OtherIdNum *string `json:"OtherIdNum,omitnil,omitempty" name:"OtherIdNum"`

	// <p>Travel document nationality</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Nationality *string `json:"Nationality,omitnil,omitempty" name:"Nationality"`

	// <p>Characters 29 to 42 in the second line of the machine-readable zone of the travel document</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	PersonalNumber *string `json:"PersonalNumber,omitnil,omitempty" name:"PersonalNumber"`

	// <p>Verification result of the document</p><ul><li>JSON format as follows: {"result_issuer":"issuer certificate legitimacy verification result","result_paper":"Document security object legitimacy verification result","result_data":"data tampering prevention verification result","result_chip":"chip replication prevention verification result"}. - Value ranges from 0 to 3: 0: verified, 1: verification failed, 2: unverified, 3: partially passed. When all four verification results are 0, it means the document is genuine.</li></ul>
	// Note: This field may return null, indicating that no valid values can be obtained.
	CheckMRTD *string `json:"CheckMRTD,omitnil,omitempty" name:"CheckMRTD"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 GetWxNFCResultResponse struct {
	*tchttp.BaseResponse
	Response *GetWxNFCResultResponseParams `json:"Response"`
}

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

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

type HKIDCard struct {
	// Chinese name
	// Note: This field may return null, indicating that no valid values can be obtained.
	// Example:  SAN, Nan
	CnName *string `json:"CnName,omitnil,omitempty" name:"CnName"`

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

	// Telex code correspondint to the Chinese name
	// Note: This field may return null, indicating that no valid values can be obtained.
	TelexCode *string `json:"TelexCode,omitnil,omitempty" name:"TelexCode"`

	// Gender: "Male-M" or "Female-F"
	// Note: This field may return null, indicating that no valid values can be obtained.
	Sex *string `json:"Sex,omitnil,omitempty" name:"Sex"`

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

	// Permanent resident ID card: 0-non-permanent; 1-permanent; -1-unknown
	// Note: This field may return null, indicating that no valid values can be obtained.
	Permanent *string `json:"Permanent,omitnil,omitempty" name:"Permanent"`

	// ID card number
	// Note: This field may return null, indicating that no valid values can be obtained.
	// Example: C000000(E)
	IdNum *string `json:"IdNum,omitnil,omitempty" name:"IdNum"`

	// Lisence symbol, which is the symbol below Birthday. Example: "***AZ"
	// Note: This field may return null, indicating that no valid values can be obtained.
	Symbol *string `json:"Symbol,omitnil,omitempty" name:"Symbol"`

	// The first date of issue
	// Note: This field may return null, indicating that no valid values can be obtained.
	FirstIssueDate *string `json:"FirstIssueDate,omitnil,omitempty" name:"FirstIssueDate"`

	// The current date of issue
	// Note: This field may return null, indicating that no valid values can be obtained.
	CurrentIssueDate *string `json:"CurrentIssueDate,omitnil,omitempty" name:"CurrentIssueDate"`
}

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

	// English name
	EnglishName *string `json:"EnglishName,omitnil,omitempty" name:"EnglishName"`

	// License number
	Number *string `json:"Number,omitnil,omitempty" name:"Number"`

	// Gender
	Sex *string `json:"Sex,omitnil,omitempty" name:"Sex"`

	// Valid date
	ValidDate *string `json:"ValidDate,omitnil,omitempty" name:"ValidDate"`

	// Issued authority
	IssueAuthority *string `json:"IssueAuthority,omitnil,omitempty" name:"IssueAuthority"`

	// Issued address
	IssueAddress *string `json:"IssueAddress,omitnil,omitempty" name:"IssueAddress"`

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

// Predefined struct for user
type IdCardOCRVerificationRequestParams struct {
	// Identity card number.
	// -Name, identity card number, ImageBase64, or ImageUrl must provide one of the three.
	// -If both are provided, proceed to use parameters according to the priority of name and identity card number > ImageBase64 > ImageUrl.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Base64 value of the ID card portrait side.
	// -Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.
	// -Supported image size: The downloaded image after Base64 encoding is no more than 3M. Please use the standard Base64 encoding method (with = padding). Refer to RFC4648 for the coding specification.
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// Url of the ID card portrait side.
	// -Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.
	// -Supported image size: The downloaded image is no more than 3M after Base64 encoding. Image download time is no more than 3 seconds.
	// -Images stored on Tencent Cloud's Url guarantee higher download speed and stability. It is advisable to store images on Tencent Cloud.
	// -The speed and stability of non-Tencent Cloud Storage URLs may be impacted.
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type IdCardOCRVerificationRequest struct {
	*tchttp.BaseRequest
	
	// Identity card number.
	// -Name, identity card number, ImageBase64, or ImageUrl must provide one of the three.
	// -If both are provided, proceed to use parameters according to the priority of name and identity card number > ImageBase64 > ImageUrl.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Base64 value of the ID card portrait side.
	// -Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.
	// -Supported image size: The downloaded image after Base64 encoding is no more than 3M. Please use the standard Base64 encoding method (with = padding). Refer to RFC4648 for the coding specification.
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// Url of the ID card portrait side.
	// -Supported image formats: PNG, JPG, JPEG. GIF format is not currently supported.
	// -Supported image size: The downloaded image is no more than 3M after Base64 encoding. Image download time is no more than 3 seconds.
	// -Images stored on Tencent Cloud's Url guarantee higher download speed and stability. It is advisable to store images on Tencent Cloud.
	// -The speed and stability of non-Tencent Cloud Storage URLs may be impacted.
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type IdCardOCRVerificationResponseParams struct {
	// Verification result code. Billing is as follows.
	// -Result code for charges
	// The name and identity card number match.
	// -Name and ID card number mismatch.
	// -Result code with no charge
	// -2: Invalid ID number (incorrect length or check digit).
	// -3: Invalid name (incorrect length or format).
	// -4: Document library service exception.
	// -5: No ID card record found in the document library.
	// -6: The authoritative comparison system is being upgraded. Try again later.
	// -7: Authentication attempts exceeded the daily limit.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

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

	// Identity card number to verify.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

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

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

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

	// The unique request ID, generated by the server, will be returned for every request (if 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 IdCardOCRVerificationResponse struct {
	*tchttp.BaseResponse
	Response *IdCardOCRVerificationResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type IdCardVerificationRequestParams struct {
	// Identity card number.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type IdCardVerificationRequest struct {
	*tchttp.BaseRequest
	
	// Identity card number.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type IdCardVerificationResponseParams struct {
	// Verification result code. Billing is as follows.
	// -Result code for charges
	// Name and identity card number match
	// -Name and ID card number mismatch
	// No charge result code:
	// -2: Invalid ID number (incorrect length or check digit).
	// -3: Invalid name (incorrect length, format, etc.)
	// -4: Document library service exception
	// -5: No ID card record found in the document library
	// -6: The authoritative comparison system is being upgraded. Try again later.
	// -7: Authentication attempts exceeded the daily limit.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 IdCardVerificationResponse struct {
	*tchttp.BaseResponse
	Response *IdCardVerificationResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type ImageRecognitionRequestParams struct {
	// <p>Identity card number</p>
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// <p>Name. For Chinese, please use UTF-8 encode.</p>
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// <p>Image for face comparison, the Base64 value of the image.<br>The size of the Base64-encoded image data should be no more than 3M. Only jpg and png formats are supported.<br>Please use the standard Base64 encoding type (with = padding). Refer to RFC4648 for the coding specification.</p>
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// <p>This parameter is not required for this API.</p>
	Optional *string `json:"Optional,omitnil,omitempty" name:"Optional"`

	// <p>Sensitive data encryption information. Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.</p>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type ImageRecognitionRequest struct {
	*tchttp.BaseRequest
	
	// <p>Identity card number</p>
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// <p>Name. For Chinese, please use UTF-8 encode.</p>
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// <p>Image for face comparison, the Base64 value of the image.<br>The size of the Base64-encoded image data should be no more than 3M. Only jpg and png formats are supported.<br>Please use the standard Base64 encoding type (with = padding). Refer to RFC4648 for the coding specification.</p>
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// <p>This parameter is not required for this API.</p>
	Optional *string `json:"Optional,omitnil,omitempty" name:"Optional"`

	// <p>Sensitive data encryption information. Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.</p>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type ImageRecognitionResponseParams struct {
	// <p>Similarity, value ranges from 0.00 to 100.00. Recommend judging as the same person when similarity is at least 70. Threshold can be self-adjusted based on specific scenarios (pass rate for false matches is one in a thousand at threshold 70, and one in ten thousand at threshold 80).</p>
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// <p>Business error code. Successfully returns Success in successful case. For error conditions, refer to the FailedOperation part in the error code list below.</p>
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// <p>Business result description.</p>
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 ImageRecognitionResponse struct {
	*tchttp.BaseResponse
	Response *ImageRecognitionResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type ImageRecognitionV2RequestParams struct {
	// <p>Identity card number.</p>
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// <p>Name.</p><ul><li>For Chinese, please use UTF-8 encode.</li></ul>
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// <p>Image for face comparison, the Base64 value of the image.<br>The size of the Base64-encoded image data should be no more than 3M. Only jpg and png formats are supported.<br>Please use the standard Base64 encoding type (with = padding). Refer to RFC4648 for the coding specification.</p>
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// <p>This parameter is not required for this API.</p>
	Optional *string `json:"Optional,omitnil,omitempty" name:"Optional"`

	// <p>Sensitive data encryption information.</p><ul><li>Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.</li></ul>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`

	// <p>Customized description field.</p><ul><li>For description of invoke business info. This description field will return in the output.</li><li>Each customized description field supports [1,10] characters.</li></ul>
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`
}

type ImageRecognitionV2Request struct {
	*tchttp.BaseRequest
	
	// <p>Identity card number.</p>
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

	// <p>Name.</p><ul><li>For Chinese, please use UTF-8 encode.</li></ul>
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// <p>Image for face comparison, the Base64 value of the image.<br>The size of the Base64-encoded image data should be no more than 3M. Only jpg and png formats are supported.<br>Please use the standard Base64 encoding type (with = padding). Refer to RFC4648 for the coding specification.</p>
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// <p>This parameter is not required for this API.</p>
	Optional *string `json:"Optional,omitnil,omitempty" name:"Optional"`

	// <p>Sensitive data encryption information.</p><ul><li>Users with encryption requirements for incoming information (name, identity card number) can use this parameter. For details, please click the left-side link.</li></ul>
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`

	// <p>Customized description field.</p><ul><li>For description of invoke business info. This description field will return in the output.</li><li>Each customized description field supports [1,10] characters.</li></ul>
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`
}

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

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

// Predefined struct for user
type ImageRecognitionV2ResponseParams struct {
	// <p>Similarity. - Value ranges from 0.00 to 100.00. - Recommend at least 70 to be determined as the same person. You can self-adjust the threshold based on specific scenarios (the pass rate for false matches at threshold 70 is 0.01%).</p>
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// <p>Business error code.</p><ul><li>Success case returns Success.</li><li>For error conditions, refer to the FailedOperation part in the error code list below.</li></ul>
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// <p>Business result description.</p>
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// <p>Custom description field in the API call.</p>
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 ImageRecognitionV2Response struct {
	*tchttp.BaseResponse
	Response *ImageRecognitionV2ResponseParams `json:"Response"`
}

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

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

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

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

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

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

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

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

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

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

type IndonesiaIDCard struct {
	// License number
	// Note: This field may return null, indicating that no valid values can be obtained.
	NIK *string `json:"NIK,omitnil,omitempty" name:"NIK"`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// Gender (F-Female, M-Male)
	// Note: This field may return null, indicating that no valid values can be obtained.
	Sex *string `json:"Sex,omitnil,omitempty" name:"Sex"`

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

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

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

	// The first line at the bottom, the MRZ Code sequence
	// Note: This field may return null, indicating that no valid values can be obtained.
	PassportCodeFirst *string `json:"PassportCodeFirst,omitnil,omitempty" name:"PassportCodeFirst"`

	// The second line at the bottom, the MRZ Code sequence
	// Note: This field may return null, indicating that no valid values can be obtained.
	PassportCodeSecond *string `json:"PassportCodeSecond,omitnil,omitempty" name:"PassportCodeSecond"`
}

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

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

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

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

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

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

// Predefined struct for user
type LivenessCompareRequestParams struct {
	// Liveness detection type. Valid values: LIP/ACTION/SILENT.
	// LIP: numeric mode; ACTION: motion mode; SILENT: silent mode. You need to select a mode to input.
	LivenessType *string `json:"LivenessType,omitnil,omitempty" name:"LivenessType"`

	// Base64 string of the image for face comparison.
	// The size of the Base64-encoded image data can be up to 3 MB. JPG and PNG formats are supported.
	// Please use the standard Base64 encoding scheme (with the "=" padding). For the encoding conventions, please see RFC 4648.
	// 
	// Either the `ImageUrl` or `ImageBase64` of the image must be provided. If both are provided, only `ImageBase64` will be used.
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// URL of the image for face comparison. The size of the downloaded image after Base64 encoding can be up to 3 MB. JPG and PNG formats are supported.
	// 
	// Either the `ImageUrl` or `ImageBase64` of the image must be provided. If both are provided, only `ImageBase64` will be used.
	// 
	// We recommend you store the image in Tencent Cloud, as a Tencent Cloud URL can guarantee higher download speed and stability. The download speed and stability of non-Tencent Cloud URLs may be low.
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// Lip mode: set this parameter to a custom 4-digit verification code.
	// Action mode: set this parameter to a custom action sequence (e.g., `2,1` or `1,2`).
	// Silent mode: do not pass in this parameter.
	ValidateData *string `json:"ValidateData,omitnil,omitempty" name:"ValidateData"`

	// Optional configuration (a JSON string)
	// {
	// "BestFrameNum": 2  // Return multiple best screenshots. Value range: [2 10]
	// }
	Optional *string `json:"Optional,omitnil,omitempty" name:"Optional"`

	// Base64 string of the video for liveness detection.
	// The size of the Base64-encoded video data can be up to 8 MB. MP4, AVI, and FLV formats are supported.
	// Please use the standard Base64 encoding scheme (with the "=" padding). For the encoding conventions, please see RFC 4648.
	// 
	// Either the `VideoUrl` or `VideoBase64` of the video must be provided. If both are provided, only `VideoBase64` will be used.
	VideoBase64 *string `json:"VideoBase64,omitnil,omitempty" name:"VideoBase64"`

	// URL of the video for liveness detection. The size of the downloaded video after Base64 encoding can be up to 8 MB. It takes no more than 4 seconds to download. MP4, AVI, and FLV formats are supported.
	// 
	// Either the `VideoUrl` or `VideoBase64` of the video must be provided. If both are provided, only `VideoBase64` will be used.
	// 
	// We recommend you store the video in Tencent Cloud, as a Tencent Cloud URL can guarantee higher download speed and stability. The download speed and stability of non-Tencent Cloud URLs may be low.
	VideoUrl *string `json:"VideoUrl,omitnil,omitempty" name:"VideoUrl"`
}

type LivenessCompareRequest struct {
	*tchttp.BaseRequest
	
	// Liveness detection type. Valid values: LIP/ACTION/SILENT.
	// LIP: numeric mode; ACTION: motion mode; SILENT: silent mode. You need to select a mode to input.
	LivenessType *string `json:"LivenessType,omitnil,omitempty" name:"LivenessType"`

	// Base64 string of the image for face comparison.
	// The size of the Base64-encoded image data can be up to 3 MB. JPG and PNG formats are supported.
	// Please use the standard Base64 encoding scheme (with the "=" padding). For the encoding conventions, please see RFC 4648.
	// 
	// Either the `ImageUrl` or `ImageBase64` of the image must be provided. If both are provided, only `ImageBase64` will be used.
	ImageBase64 *string `json:"ImageBase64,omitnil,omitempty" name:"ImageBase64"`

	// URL of the image for face comparison. The size of the downloaded image after Base64 encoding can be up to 3 MB. JPG and PNG formats are supported.
	// 
	// Either the `ImageUrl` or `ImageBase64` of the image must be provided. If both are provided, only `ImageBase64` will be used.
	// 
	// We recommend you store the image in Tencent Cloud, as a Tencent Cloud URL can guarantee higher download speed and stability. The download speed and stability of non-Tencent Cloud URLs may be low.
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// Lip mode: set this parameter to a custom 4-digit verification code.
	// Action mode: set this parameter to a custom action sequence (e.g., `2,1` or `1,2`).
	// Silent mode: do not pass in this parameter.
	ValidateData *string `json:"ValidateData,omitnil,omitempty" name:"ValidateData"`

	// Optional configuration (a JSON string)
	// {
	// "BestFrameNum": 2  // Return multiple best screenshots. Value range: [2 10]
	// }
	Optional *string `json:"Optional,omitnil,omitempty" name:"Optional"`

	// Base64 string of the video for liveness detection.
	// The size of the Base64-encoded video data can be up to 8 MB. MP4, AVI, and FLV formats are supported.
	// Please use the standard Base64 encoding scheme (with the "=" padding). For the encoding conventions, please see RFC 4648.
	// 
	// Either the `VideoUrl` or `VideoBase64` of the video must be provided. If both are provided, only `VideoBase64` will be used.
	VideoBase64 *string `json:"VideoBase64,omitnil,omitempty" name:"VideoBase64"`

	// URL of the video for liveness detection. The size of the downloaded video after Base64 encoding can be up to 8 MB. It takes no more than 4 seconds to download. MP4, AVI, and FLV formats are supported.
	// 
	// Either the `VideoUrl` or `VideoBase64` of the video must be provided. If both are provided, only `VideoBase64` will be used.
	// 
	// We recommend you store the video in Tencent Cloud, as a Tencent Cloud URL can guarantee higher download speed and stability. The download speed and stability of non-Tencent Cloud URLs may be low.
	VideoUrl *string `json:"VideoUrl,omitnil,omitempty" name:"VideoUrl"`
}

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

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

// Predefined struct for user
type LivenessCompareResponseParams struct {
	// The best screenshot of the video after successful verification. The photo is Base64-encoded and in JPG format.
	BestFrameBase64 *string `json:"BestFrameBase64,omitnil,omitempty" name:"BestFrameBase64"`

	// Similarity. Value range: [0.00, 100.00]. As a recommendation, when the similarity is greater than or equal to 70, it can be determined that the two faces are of the same person. You can adjust the threshold according to your specific scenario (the FAR at the threshold of 70 is 0.1%, and FAR at the threshold of 80 is 0.01%).
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// Service error code. `Success` will be returned for success. For error information, please see the `FailedOperation` section in the error code list below.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Service result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Best screenshot list.
	// Returned only when multiple best screenshots are configured to be returned.
	BestFrameList []*string `json:"BestFrameList,omitnil,omitempty" name:"BestFrameList"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 LivenessCompareResponse struct {
	*tchttp.BaseResponse
	Response *LivenessCompareResponseParams `json:"Response"`
}

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

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

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

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

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

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

	// Lisence type
	// MyKad ID card
	// MyPR Permanent resident ID card
	// MyTentera Military ID card
	// MyKAS Temporary ID card
	// POLIS Police ID card
	// IKAD Labor ID card
	// MyKid Juvenile ID card
	// Example: MyKad
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Birthday (Currently, this filed only supports IKAD labor ID card and MyKad ID card)
	// Note: This field may return null, indicating that no valid values can be obtained.
	Birthday *string `json:"Birthday,omitnil,omitempty" name:"Birthday"`
}

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

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

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

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

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

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

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

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

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

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

type MainlandIDCard struct {
	// <p>name</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	FullName *string `json:"FullName,omitnil,omitempty" name:"FullName"`

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

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

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

	// <p>Address</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	//
	// Deprecated: Address is deprecated.
	Address *string `json:"Address,omitnil,omitempty" name:"Address"`

	// <p>Identity card number</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	LicenseNumber *string `json:"LicenseNumber,omitnil,omitempty" name:"LicenseNumber"`

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

	// <p>Issuing authority</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Authority *string `json:"Authority,omitnil,omitempty" name:"Authority"`

	// <p>Validity period</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	ValidDate *string `json:"ValidDate,omitnil,omitempty" name:"ValidDate"`
}

// Predefined struct for user
type MobileNetworkTimeVerificationRequestParams struct {
	// Mobile number.
	Mobile *string `json:"Mobile,omitnil,omitempty" name:"Mobile"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (mobile number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type MobileNetworkTimeVerificationRequest struct {
	*tchttp.BaseRequest
	
	// Mobile number.
	Mobile *string `json:"Mobile,omitnil,omitempty" name:"Mobile"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (mobile number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type MobileNetworkTimeVerificationResponseParams struct {
	// Verification result code. Billing is as follows.
	// -Result code for charges
	// Success.
	// -2: Mobile number does not exist.
	// -3: The mobile number exists, but unable to query the duration.
	// 
	// -Result code with no charge
	// -Invalid phone number format.
	// -4: Verification Center Service is busy.
	// -5: Authentication attempts exceeded the daily limit. Retry the next day.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Online duration interval.
	// -The format is [a,b), which means the online duration is longer than a months and shorter than b months.
	// -If b is +, it means no upper limit.
	Range *string `json:"Range,omitnil,omitempty" name:"Range"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 MobileNetworkTimeVerificationResponse struct {
	*tchttp.BaseResponse
	Response *MobileNetworkTimeVerificationResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type MobileStatusRequestParams struct {
	// Mobile number.
	Mobile *string `json:"Mobile,omitnil,omitempty" name:"Mobile"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (mobile number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

type MobileStatusRequest struct {
	*tchttp.BaseRequest
	
	// Mobile number.
	Mobile *string `json:"Mobile,omitnil,omitempty" name:"Mobile"`

	// Sensitive data encryption info.
	// -Users with encryption requirements for incoming information (mobile number) can use this parameter. For details, please click the left-side link.
	Encryption *Encryption `json:"Encryption,omitnil,omitempty" name:"Encryption"`
}

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

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

// Predefined struct for user
type MobileStatusResponseParams struct {
	// Verification result code. Billing is as follows.
	// -Result code for charges
	// 0: Success.
	// 
	// -Result code with no charge
	// -No results found.
	// -2: Invalid phone number format.
	// -3: Verification Center Service is busy.
	// -4: Authentication attempts exceeded the daily limit. Retry the next day.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Status code.
	// -Value range:
	// 0: Normal.
	// 1: Out of service.
	// 2: Account cancellation.
	// 4: Offline.
	// 99: unknown status.
	StatusCode *int64 `json:"StatusCode,omitnil,omitempty" name:"StatusCode"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 MobileStatusResponse struct {
	*tchttp.BaseResponse
	Response *MobileStatusResponseParams `json:"Response"`
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type NormalCardInfo struct {
	// Hong Kong (China) ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	HKIDCard *NormalHKIDCard `json:"HKIDCard,omitnil,omitempty" name:"HKIDCard"`

	// Malaysia ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	MLIDCard *NormalMLIDCard `json:"MLIDCard,omitnil,omitempty" name:"MLIDCard"`

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

	// Indonesia ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	IndonesiaIDCard *NormalIndonesiaIDCard `json:"IndonesiaIDCard,omitnil,omitempty" name:"IndonesiaIDCard"`

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

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

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

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

	// ID Cards of Hong Kong (China), Macao (China) and Taiwan (China), and International Passport
	// Note: This field may return null, indicating that no valid values can be obtained.
	InternationalIDPassport *InternationalIDPassport `json:"InternationalIDPassport,omitnil,omitempty" name:"InternationalIDPassport"`

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

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

	// Thailand ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	ThailandIDCard *NormalThailandIDCard `json:"ThailandIDCard,omitnil,omitempty" name:"ThailandIDCard"`

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

	// Macao (China) ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	MacaoIDCard *MacaoIDCard `json:"MacaoIDCard,omitnil,omitempty" name:"MacaoIDCard"`

	// Mainland (China) ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	MainlandIDCard *MainlandIDCard `json:"MainlandIDCard,omitnil,omitempty" name:"MainlandIDCard"`

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

	// Taiwan (China) ID Card
	// Note: This field may return null, indicating that no valid values can be obtained.
	TaiWanIDCard *TaiWanIDCard `json:"TaiWanIDCard,omitnil,omitempty" name:"TaiWanIDCard"`

	// exit/entry permit (card) for traveling to and from Hong Kong (China), Macao (China), or Taiwan (China).
	// Note: This field may return null, indicating that no valid values can be obtained.
	HMTPermitCard *HMTPermit `json:"HMTPermitCard,omitnil,omitempty" name:"HMTPermitCard"`
}

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

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

	// Telex code correspondint to the Chinese name
	// Note: This field may return null, indicating that no valid values can be obtained.
	RegistrationNumber *string `json:"RegistrationNumber,omitnil,omitempty" name:"RegistrationNumber"`

	// Gender: "Male-M" or "Female-F"
	// Note: This field may return null, indicating that no valid values can be obtained.
	Sex *string `json:"Sex,omitnil,omitempty" name:"Sex"`

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

	// Permanent resident ID card: 0-non-permanent; 1-permanent; -1-unknown
	// Note: This field may return null, indicating that no valid values can be obtained.
	Permanent *string `json:"Permanent,omitnil,omitempty" name:"Permanent"`

	// ID card number
	// Note: This field may return null, indicating that no valid values can be obtained.
	// Example: C000000(E)
	LicenseNumber *string `json:"LicenseNumber,omitnil,omitempty" name:"LicenseNumber"`

	// Lisence symbol, which is the symbol below Birthday. Example: "***AZ"
	// Note: This field may return null, indicating that no valid values can be obtained.
	Symbol *string `json:"Symbol,omitnil,omitempty" name:"Symbol"`

	// The first date of issue
	// Note: This field may return null, indicating that no valid values can be obtained.
	IssuedDate *string `json:"IssuedDate,omitnil,omitempty" name:"IssuedDate"`

	// The current date of issue
	// Note: This field may return null, indicating that no valid values can be obtained.
	CurrentIssueDate *string `json:"CurrentIssueDate,omitnil,omitempty" name:"CurrentIssueDate"`

	// Hong Kong identity card version number, HKID-2003: 03 edition ID card, HKID-2018: 18 edition ID card
	// Note: This field may return null, indicating that no valid values can be obtained.
	HKIDVersion *string `json:"HKIDVersion,omitnil,omitempty" name:"HKIDVersion"`
}

type NormalIndonesiaIDCard struct {
	// License number
	// Note: This field may return null, indicating that no valid values can be obtained.
	LicenseNumber *string `json:"LicenseNumber,omitnil,omitempty" name:"LicenseNumber"`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type NormalMLIDCard struct {
	// Full Name
	// Note: This field may return null, indicating that no valid values can be obtained.
	FullName *string `json:"FullName,omitnil,omitempty" name:"FullName"`

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

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

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

	// Lisence type
	// MyKad ID card
	// MyPR Permanent resident ID card
	// MyTentera Military ID card
	// MyKAS Temporary ID card
	// POLIS Police ID card
	// IKAD Labor ID card
	// MyKid Juvenile ID card
	// Example: MyKad
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Birthday (Currently, this filed only supports IKAD labor ID card and MyKad ID card)
	// Note: This field may return null, indicating that no valid values can be obtained.
	Birthday *string `json:"Birthday,omitnil,omitempty" name:"Birthday"`
}

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

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

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

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

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

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

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

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

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

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

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

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

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

type OCRResult struct {
	// <p>Whether the identity authentication or OCR process is successful.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	IsPass *bool `json:"IsPass,omitnil,omitempty" name:"IsPass"`

	// <p>Base64 of the front side ID image</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	CardImageBase64 *string `json:"CardImageBase64,omitnil,omitempty" name:"CardImageBase64"`

	// <p>ID card recognition result</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	//
	// Deprecated: CardInfo is deprecated.
	CardInfo *CardInfo `json:"CardInfo,omitnil,omitempty" name:"CardInfo"`

	// <p>Document recognition result (when CheckMode value is 4, return the OriginalCardInfo field; other scenarios return the current field)</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	NormalCardInfo *NormalCardInfo `json:"NormalCardInfo,omitnil,omitempty" name:"NormalCardInfo"`

	// <p>Request id</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`

	// <p>Base64 of the cropped ID image</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	CardCutImageBase64 *string `json:"CardCutImageBase64,omitnil,omitempty" name:"CardCutImageBase64"`

	// <p>Base64 of the cropped image of the back side of the ID</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	CardBackCutImageBase64 *string `json:"CardBackCutImageBase64,omitnil,omitempty" name:"CardBackCutImageBase64"`

	// <p>Alarm code</p><p>Enumeration value:</p><ul><li>9101: Alarm for incomplete document border</li><li>9102: Alarm for document photocopy</li><li>9103: Alarm for rephotographing</li><li>9104: PS alarm</li><li>9107: Reflective alarm</li><li>9108: Blurry alarm</li><li>9109: Alarm capability not enabled</li></ul>
	// Note: This field may return null, indicating that no valid values can be obtained.
	WarnCardInfos []*int64 `json:"WarnCardInfos,omitnil,omitempty" name:"WarnCardInfos"`

	// <p>Original document recognition information (the current field will be returned when CheckMode value is 4)</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	OriginalCardInfo *string `json:"OriginalCardInfo,omitnil,omitempty" name:"OriginalCardInfo"`

	// <p>Document portrait matting</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	HeadImageBase64 *string `json:"HeadImageBase64,omitnil,omitempty" name:"HeadImageBase64"`

	// <p>Base64 of the back side ID image</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	CardBackImageBase64 *string `json:"CardBackImageBase64,omitnil,omitempty" name:"CardBackImageBase64"`
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type PhilippinesSSSID struct {
	// License number
	// Note: This field may return null, indicating that no valid values can be obtained.
	LicenseNumber *string `json:"LicenseNumber,omitnil,omitempty" name:"LicenseNumber"`

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

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

type PhilippinesTinID struct {
	// License number
	// Note: This field may return null, indicating that no valid values can be obtained.
	LicenseNumber *string `json:"LicenseNumber,omitnil,omitempty" name:"LicenseNumber"`

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

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

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

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

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

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

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

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

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

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

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

type PhilippinesVoteID struct {
	// VIN of Philippines VoteID
	// Note: This field may return null, indicating that no valid values can be obtained.
	VIN *string `json:"VIN,omitnil,omitempty" name:"VIN"`

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

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

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

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

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

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

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

// Predefined struct for user
type PhoneVerificationRequestParams struct {
	// Identity card number.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Mobile number.
	Phone *string `json:"Phone,omitnil,omitempty" name:"Phone"`

	// Users with encryption requirements can import the CiphertextBlob of kms. Read the <a href="https://www.tencentcloud.com/document/product/1007/47180?from_cn_redirect=1">data encryption</a> document about encrypting data.
	CiphertextBlob *string `json:"CiphertextBlob,omitnil,omitempty" name:"CiphertextBlob"`

	// When using the encryption service, fill in the field to be encrypted.
	// -This API can fill in one or more of encrypted IdCard, Name, and Phone.
	EncryptList []*string `json:"EncryptList,omitnil,omitempty" name:"EncryptList"`

	// Users with encryption requirements import the initial vector for CBC encryption.
	Iv *string `json:"Iv,omitnil,omitempty" name:"Iv"`
}

type PhoneVerificationRequest struct {
	*tchttp.BaseRequest
	
	// Identity card number.
	IdCard *string `json:"IdCard,omitnil,omitempty" name:"IdCard"`

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

	// Mobile number.
	Phone *string `json:"Phone,omitnil,omitempty" name:"Phone"`

	// Users with encryption requirements can import the CiphertextBlob of kms. Read the <a href="https://www.tencentcloud.com/document/product/1007/47180?from_cn_redirect=1">data encryption</a> document about encrypting data.
	CiphertextBlob *string `json:"CiphertextBlob,omitnil,omitempty" name:"CiphertextBlob"`

	// When using the encryption service, fill in the field to be encrypted.
	// -This API can fill in one or more of encrypted IdCard, Name, and Phone.
	EncryptList []*string `json:"EncryptList,omitnil,omitempty" name:"EncryptList"`

	// Users with encryption requirements import the initial vector for CBC encryption.
	Iv *string `json:"Iv,omitnil,omitempty" name:"Iv"`
}

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

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

// Predefined struct for user
type PhoneVerificationResponseParams struct {
	// Verification result code.
	// -Fee result code
	// Three-element information consistency.
	// -4: Three-element information inconsistency.
	// 
	// -No charge result code
	// -6: Invalid phone number.
	// -7: Identity number error.
	// -8: Name verification failed.
	// -9: No records.
	// -11: The Verification Center Service is busy.
	// -12: Authentication attempts exceeded the daily limit. Retry the next day.
	// -13: The number range is unsupported for verification.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// Business result description.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// ISP name.
	// -Valid values: ["", "mobile", "telecom", "cucc"]
	Isp *string `json:"Isp,omitnil,omitempty" name:"Isp"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 PhoneVerificationResponse struct {
	*tchttp.BaseResponse
	Response *PhoneVerificationResponseParams `json:"Response"`
}

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

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

type RetrievalLivenessExtraInfo struct {
	// <p>Hit template type. Among them, Common - public library; Auto - Auto Clustering Library; Owner - custom template.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	HitGroup *string `json:"HitGroup,omitnil,omitempty" name:"HitGroup"`

	// <p>The similarity between the request image and the hit attack template ranges from [0,2]. The smaller the value, the higher the probability of hitting the attack template. The default threshold is 0.6. When SimilarityScore≥0.6, it is judged as normal. SimilarityScore&lt;0.6 is judged as an attack.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	SimilarityScore *float64 `json:"SimilarityScore,omitnil,omitempty" name:"SimilarityScore"`

	// <p>Template id of the cache hit</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	HitTemplate *string `json:"HitTemplate,omitnil,omitempty" name:"HitTemplate"`
}

type SingaporeIDCard struct {
	// Chinese name
	// Note: This field may return null, indicating that no valid values can be obtained.
	//
	// Deprecated: ChName is deprecated.
	ChName *string `json:"ChName,omitnil,omitempty" name:"ChName"`

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

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

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

	// License number
	// Note: This field may return null, indicating that no valid values can be obtained.
	//
	// Deprecated: ID is deprecated.
	ID *string `json:"ID,omitnil,omitempty" name:"ID"`

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

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

	// Country of birth
	// Note: This field may return null, indicating that no valid values can be obtained.
	//
	// Deprecated: CountryOfBirth is deprecated.
	CountryOfBirth *string `json:"CountryOfBirth,omitnil,omitempty" name:"CountryOfBirth"`

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

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

	// Address (on the back)
	// Note: This field may return null, indicating that no valid values can be obtained.
	Address *string `json:"Address,omitnil,omitempty" name:"Address"`

	// Race (on the back)
	// Note: This field may return null, indicating that no valid values can be obtained.
	Race *string `json:"Race,omitnil,omitempty" name:"Race"`

	//  NRIC number (on the back)
	// Note: This field may return null, indicating that no valid values can be obtained.
	NRICCode *string `json:"NRICCode,omitnil,omitempty" name:"NRICCode"`

	// Post number (on the front)
	// Note: This field may return null, indicating that no valid values can be obtained.
	PostCode *string `json:"PostCode,omitnil,omitempty" name:"PostCode"`

	// Date of expiry (on the back)
	// Note: This field may return null, indicating that no valid values can be obtained.
	DateOfExpiration *string `json:"DateOfExpiration,omitnil,omitempty" name:"DateOfExpiration"`

	// Date of issue (on the back)
	// Note: This field may return null, indicating that no valid values can be obtained.
	DateOfIssue *string `json:"DateOfIssue,omitnil,omitempty" name:"DateOfIssue"`
}

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

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

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

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

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

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

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

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

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

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

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

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

type VerificationDetail struct {
	// The final result of this verification. `0` indicates that the person is the same as that in the photo.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ErrorCode *int64 `json:"ErrorCode,omitnil,omitempty" name:"ErrorCode"`

	// The description of the final verification result.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ErrorMsg *string `json:"ErrorMsg,omitnil,omitempty" name:"ErrorMsg"`

	// The result of this liveness detection process. `0` indicates success.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LivenessErrorCode *int64 `json:"LivenessErrorCode,omitnil,omitempty" name:"LivenessErrorCode"`

	// The result description of this liveness detection process.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LivenessErrorMsg *string `json:"LivenessErrorMsg,omitnil,omitempty" name:"LivenessErrorMsg"`

	// The result of this comparison process. `0` indicates that the person in the best face screenshot collected from the video stream is the same as that in the uploaded image for comparison.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CompareErrorCode *int64 `json:"CompareErrorCode,omitnil,omitempty" name:"CompareErrorCode"`

	// The result description of this comparison process.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CompareErrorMsg *string `json:"CompareErrorMsg,omitnil,omitempty" name:"CompareErrorMsg"`

	// The timestamp (ms) of this verification process.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ReqTimestamp *uint64 `json:"ReqTimestamp,omitnil,omitempty" name:"ReqTimestamp"`

	// The similarity of the best face screenshot collected from the video stream and the uploaded image for comparison in this verification process. Value range: [0.00, 100.00]. By default, the person in the screenshot is determined to be the same person in the image if the similarity is greater than or equal to 70.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Similarity *float64 `json:"Similarity,omitnil,omitempty" name:"Similarity"`

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

	// Describe the detailed reason why the current request was rejected in the liveness phase. This parameter only applies to the PLUS edition eKYC service.
	// -Details as follows:
	// 01-User eyes closed throughout
	// 02-User not completed specified action
	// 03-Suspected rephotography attack
	// 04-Suspected Synthesis Attack
	// 05-Suspected fraudulent template
	// 06-Suspected watermark
	// 07-Reflection validation failed
	// 08 - Suspected change of person midway
	// 09-Poor face quality
	// 10 - Distance validation failed
	// 11-Suspected adversarial sample attack
	// 12 - Suspected attack traces in the mouth area
	// 13 - Suspected attack traces exist in the eye area
	// 14 - Eye or mouth obstruction
	// Note: This field may return null, indicating that no valid values can be obtained.
	// Example value: ["01"].
	// Note: This field may return null, indicating that no valid values can be obtained.
	LivenessInfoTag []*string `json:"LivenessInfoTag,omitnil,omitempty" name:"LivenessInfoTag"`
}

// Predefined struct for user
type VideoLivenessCompareRequestParams struct {
	// The URL of the photo for face comparison. The downloaded image after Base64 encoding can be up to 3 MB and must be in JPG or PNG.
	// 
	// The image must be stored in a COS bucket in the region where the FaceID service resides to ensure a higher download speed and better stability. You can generate an image URL by using `CreateUploadUrl` or purchase the COS service.
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// The 32-bit MD5 checksum of the image for comparison
	ImageMd5 *string `json:"ImageMd5,omitnil,omitempty" name:"ImageMd5"`

	// The URL of the video for liveness detection. The downloaded video after Base64 encoding can be up to 8 MB and must be in MP4, AVI, or FLV. It takes no more than 4s to download the video.
	// 
	// The video must be stored in a COS bucket in the region where the FaceID service resides to ensure a higher download speed and better stability. You can generate a video URL by using `CreateUploadUrl` or purchase the COS service.
	VideoUrl *string `json:"VideoUrl,omitnil,omitempty" name:"VideoUrl"`

	// The 32-bit MD5 checksum of the video
	VideoMd5 *string `json:"VideoMd5,omitnil,omitempty" name:"VideoMd5"`

	// The liveness detection type. Valid values: `LIP`, `ACTION`, and `SILENT`.
	// `LIP`: Numeric mode; `ACTION`: Motion mode; `SILENT`: silent mode. Select one of them.
	LivenessType *string `json:"LivenessType,omitnil,omitempty" name:"LivenessType"`

	// LIP parameter: Pass in a custom 4-digit verification code.
	// ACTION parameter: Pass in a custom action sequence (`2,1` or `1,2`).
	// SILENT parameter: Null.
	ValidateData *string `json:"ValidateData,omitnil,omitempty" name:"ValidateData"`
}

type VideoLivenessCompareRequest struct {
	*tchttp.BaseRequest
	
	// The URL of the photo for face comparison. The downloaded image after Base64 encoding can be up to 3 MB and must be in JPG or PNG.
	// 
	// The image must be stored in a COS bucket in the region where the FaceID service resides to ensure a higher download speed and better stability. You can generate an image URL by using `CreateUploadUrl` or purchase the COS service.
	ImageUrl *string `json:"ImageUrl,omitnil,omitempty" name:"ImageUrl"`

	// The 32-bit MD5 checksum of the image for comparison
	ImageMd5 *string `json:"ImageMd5,omitnil,omitempty" name:"ImageMd5"`

	// The URL of the video for liveness detection. The downloaded video after Base64 encoding can be up to 8 MB and must be in MP4, AVI, or FLV. It takes no more than 4s to download the video.
	// 
	// The video must be stored in a COS bucket in the region where the FaceID service resides to ensure a higher download speed and better stability. You can generate a video URL by using `CreateUploadUrl` or purchase the COS service.
	VideoUrl *string `json:"VideoUrl,omitnil,omitempty" name:"VideoUrl"`

	// The 32-bit MD5 checksum of the video
	VideoMd5 *string `json:"VideoMd5,omitnil,omitempty" name:"VideoMd5"`

	// The liveness detection type. Valid values: `LIP`, `ACTION`, and `SILENT`.
	// `LIP`: Numeric mode; `ACTION`: Motion mode; `SILENT`: silent mode. Select one of them.
	LivenessType *string `json:"LivenessType,omitnil,omitempty" name:"LivenessType"`

	// LIP parameter: Pass in a custom 4-digit verification code.
	// ACTION parameter: Pass in a custom action sequence (`2,1` or `1,2`).
	// SILENT parameter: Null.
	ValidateData *string `json:"ValidateData,omitnil,omitempty" name:"ValidateData"`
}

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

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

// Predefined struct for user
type VideoLivenessCompareResponseParams struct {
	// The similarity. Value range: [0.00, 100.00]. As a recommendation, when the similarity is greater than or equal to 70, it can be determined that the two persons are of the same person. You can adjust the threshold according to your specific scenario (the FARs at the thresholds of 70 and 80 are 0.1% and 0.01%, respectively).
	Sim *float64 `json:"Sim,omitnil,omitempty" name:"Sim"`

	// The service error code. `Success` will be returned for success. For error information, see the `FailedOperation` section in the error code list below.
	Result *string `json:"Result,omitnil,omitempty" name:"Result"`

	// The service result description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The best video screenshot after successful verification
	// Note: This field may return null, indicating that no valid values can be obtained.
	BestFrame *FileInfo `json:"BestFrame,omitnil,omitempty" name:"BestFrame"`

	// The unique request ID, generated by the server, will be returned for every request (if 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 VideoLivenessCompareResponse struct {
	*tchttp.BaseResponse
	Response *VideoLivenessCompareResponseParams `json:"Response"`
}

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

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

type WebVerificationConfigIntl struct {
	// <p>Whether to skip the start verification webpage when starting verification. If true, directly enter the verification process. Default false. If the degradation policy is triggered, this configuration will not take effect.</p>
	AutoSkipStartPage *bool `json:"AutoSkipStartPage,omitnil,omitempty" name:"AutoSkipStartPage"`

	// <p>Whether to skip the result display page and automatically jump to RedirectURL when verification is successful. Default false.</p>
	AutoSkip *bool `json:"AutoSkip,omitnil,omitempty" name:"AutoSkip"`

	// <p>Detection mode. Parameter values are as follows:<br>1: OCR+liveness detection+face comparison;<br>2: liveness detection+face comparison;<br>3: liveness detection;<br>4: OCR;<br>Default value is 2.</p>
	CheckMode *int64 `json:"CheckMode,omitnil,omitempty" name:"CheckMode"`

	// <p>Identity document type used for authentication. Currently supported:<br>1.HKIDCard: Hong Kong (China) identity card<br>2.MLIDCard: Malaysian identity card<br>3.IndonesiaIDCard: Indonesian Identity Card<br>4.PhilippinesVoteID: Philippines voter card<br>5.PhilippinesDrivingLicense: Philippines driving license<br>6.PhilippinesTinID: Philippines TinID<br>7.PhilippinesSSSID: Philippines SSSID<br>8.PhilippinesUMID: Philippines UMID<br>9.InternationalIDPassport: Passport for Hong Kong (China), Macao (China), and Taiwan (China) as well as overseas passport<br>10.ThailandIDCard: Thai Identity Card<br>11.SingaporeIDCard: Singapore ID card<br>12.MainlandIDCard: Mainland ID card</p>
	IDCardType *string `json:"IDCardType,omitnil,omitempty" name:"IDCardType"`

	// <p>Want to close document alarm, false by default (enable alarm detection). When enabled, the identity verification process will intercept based on the document alarm status. If you need to use document anti-counterfeiting functionality, <a href="https://www.tencentcloud.com/zh/contact-us">contact us</a>.</p>
	DisableCheckOcrWarnings *bool `json:"DisableCheckOcrWarnings,omitnil,omitempty" name:"DisableCheckOcrWarnings"`

	// <p>Security level of authentication:<br>1: Silent liveness;<br>2: Action liveness;<br>3: Light liveness;<br>4: Action + light liveness;<br>Default value is 3.</p>
	SecurityLevel *int64 `json:"SecurityLevel,omitnil,omitempty" name:"SecurityLevel"`

	// <p>Whether to skip the privacy agreement webpage, default false. When SkipPrivacyPolicy is false, the privacy agreement webpage will show and the privacy agreement must be checked. When SkipPrivacyPolicy is true, the privacy agreement webpage will be skipped to directly enter the Live Face Process without the need to check the privacy agreement webpage.</p>
	SkipPrivacyPolicy *bool `json:"SkipPrivacyPolicy,omitnil,omitempty" name:"SkipPrivacyPolicy"`

	// <p>Default false. When false, show the original document image. When true, show the split document image.</p>
	IdCardCutReturn *bool `json:"IdCardCutReturn,omitnil,omitempty" name:"IdCardCutReturn"`

	// <p>Frontend theme color in base 16 RGB format. Defaults to "#2d72f1". Uses default values if the format is incorrect.</p>
	ThemeColor *string `json:"ThemeColor,omitnil,omitempty" name:"ThemeColor"`

	// <p>Internationalized language, defaults to en (English). Currently supported:<br>th: Thai;<br>en: English;<br>zh-cn: Simplified Chinese;<br>zh-tc: Traditional Chinese;<br>id: Indonesia;</p>
	Language *string `json:"Language,omitnil,omitempty" name:"Language"`

	// <p>Automatic downgrade mode. Parameter values as follows:<br>1: Downgrade to silent liveness mode.<br>2: Disable downgrade mode.<br>Default value: 1.</p>
	AutoDowngrade *int64 `json:"AutoDowngrade,omitnil,omitempty" name:"AutoDowngrade"`

	// <p>Control the action sequence. Action types are as follows:<br>"blink"<br>"mouth"<br>"nod"<br>"shake"<br>Choose 1-2 actions from the four.<br>Single action example: "blink"<br>Multi-action example: "blink,mouth".<br>Default value: blink<br>Input this parameter only when SecurityLevel is 2, 4, or 5 for different action types to take effect; otherwise, an API error occurs.</p>
	ActionList *string `json:"ActionList,omitnil,omitempty" name:"ActionList"`

	// <p>Maximum liveness verification attempts. Value ranges from 1 to 99. Default value is 99.</p>
	LivenessRetryLimit *int64 `json:"LivenessRetryLimit,omitnil,omitempty" name:"LivenessRetryLimit"`

	// <p>Control the liveness detection timeout period in seconds. The value ranges from 0 to 600. Default: 45 seconds.</p>
	LivenessTimeout *uint64 `json:"LivenessTimeout,omitnil,omitempty" name:"LivenessTimeout"`

	// <p>Select OCR alarms that require attention. When an OCR alarm is generated, the identity verification process will be interrupted. The default value is empty, indicating all alarms are monitored. This feature requires the parameter DisableCheckOcrWarnings=false. If the alarm is disabled, this parameter will not be effective.</p><p>Alarm code list and definitions:<br>-9101 Incomplete border alarm<br>-9102 Photocopies alarm<br>-9103 Alarm for rephotographing<br>-9104 ps alarm<br>-9107 Reflective alarm<br>-9108 Blurry alarm<br>-9109 Alarm not enabled</p>
	SelectedWarningCodes *string `json:"SelectedWarningCodes,omitnil,omitempty" name:"SelectedWarningCodes"`

	// <p>Whether to allow expired identity documents to enter the liveness detection process. This parameter is valid only when the document type is Hong Kong identity card (HKID).<br>true (default value): Allow expired Hong Kong identity card to enter the liveness detection process.<br>false: Reject expired Hong Kong identity card, not accessible to the liveness detection process.</p>
	AllowExpiredDocument *bool `json:"AllowExpiredDocument,omitnil,omitempty" name:"AllowExpiredDocument"`

	// <p>Service version, including basic version (BASIC) and PLUS version (PLUS).</p><p>Enumeration value:</p><ul><li>BASIC: Basic version</li><li>PLUS: PLUS version</li></ul><p>Default value: BASIC.</p>
	Version *string `json:"Version,omitnil,omitempty" name:"Version"`
}