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

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 AudioResult struct {
	// This field is used to return whether the moderated content hit the moderation model. Valid values: 0 (**no**), 1 (**yes**).
	// Note: this field may return null, indicating that no valid values can be obtained.
	HitFlag *int64 `json:"HitFlag,omitnil,omitempty" name:"HitFlag"`

	// This field is used to return the maliciousness tag in the detection result.<br>Returned values: **Normal**: normal; **Porn**: pornographic; **Abuse**: abusive; **Ad**: advertising; **Custom**: custom type of non-compliant content and other offensive, unsafe, or inappropriate types of content.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// This field is used to return the operation suggestion. When you get the determination result, the returned value indicates the suggested operation.<br>
	// Returned values: **Block**, **Review**, **Pass**.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

	// This field is used to return the confidence under the current tag. Value range: 0 (**the lowest confidence**)–100 (**the highest confidence**), where a higher value indicates that the text is more likely to fall into the category of the current returned tag; for example, *Porn 99* indicates that the text is highly likely to be pornographic.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Score *int64 `json:"Score,omitnil,omitempty" name:"Score"`

	// This field is used to return the text information generated by recognizing an audio file with ASR. Audio files of up to **5 hours** can be recognized. If this limit is exceeded, an error will be reported by the API.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Text *string `json:"Text,omitnil,omitempty" name:"Text"`

	// This field is used to return the URL where audio segments are stored, which is valid for 1 day.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// This field is used to return the length of an audio file in milliseconds.
	Duration *string `json:"Duration,omitnil,omitempty" name:"Duration"`

	// This field is used to return additional information, and the returned information varies by customer or `Biztype`.
	Extra *string `json:"Extra,omitnil,omitempty" name:"Extra"`

	// This field is used to return the detailed moderation result of the text generated by recognizing an audio file with ASR. For the specific result, see the detailed description of the `AudioResultDetailLanguageResult` data structure.
	TextResults []*AudioResultDetailTextResult `json:"TextResults,omitnil,omitempty" name:"TextResults"`

	// This field is used to return the detailed moan detection result of an audio file. For the specific result, see the detailed description of the `AudioResultDetailMoanResult` data structure.
	MoanResults []*AudioResultDetailMoanResult `json:"MoanResults,omitnil,omitempty" name:"MoanResults"`

	// This field is used to return the detailed minor language detection result of an audio. For the specific result, see the detailed description of the `AudioResultDetailLanguageResult` data structure.
	LanguageResults []*AudioResultDetailLanguageResult `json:"LanguageResults,omitnil,omitempty" name:"LanguageResults"`

	// This field is used to return a subtag under the current tag (Lable).
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubLabel *string `json:"SubLabel,omitnil,omitempty" name:"SubLabel"`

	// List of audio recognition results 
	// Note: This field may return `null`, indicating that no valid value can be obtained.
	RecognitionResults []*RecognitionResult `json:"RecognitionResults,omitnil,omitempty" name:"RecognitionResults"`
}

type AudioResultDetailLanguageResult struct {
	// This field is used to return the language information.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// This parameter is used to return the confidence under the current tag. Value range: 0 (**the lowest confidence**)–100 (**the highest confidence**), where a higher value indicates that the audio is more likely to fall into the category of the current returned language tag;
	// Note: this field may return null, indicating that no valid values can be obtained.
	Score *int64 `json:"Score,omitnil,omitempty" name:"Score"`

	// This parameter is used to return the start time of the segment of an audio file under the corresponding language tag in seconds. 
	// Note: this field may return null, indicating that no valid values can be obtained.
	StartTime *float64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// This parameter is used to return the end time of the segment of an audio file under the corresponding language tag in seconds. 
	// Note: this field may return null, indicating that no valid values can be obtained.
	EndTime *float64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// *This field is in beta test. Stay tuned*
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubLabelCode *string `json:"SubLabelCode,omitnil,omitempty" name:"SubLabelCode"`
}

type AudioResultDetailMoanResult struct {
	// This field is used to return the type of the content to be detected. It is fixed at **Moan** here to call the moan detection feature.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// This field is used to return the confidence of moan detection. Value range: 0 (**the lowest confidence**)–100 (**the highest confidence**), where a higher value indicates that the audio is more likely to fall into the category of moan.
	Score *int64 `json:"Score,omitnil,omitempty" name:"Score"`

	// This field is used to return the start time of the segment of an audio file under the corresponding moan tag in seconds.
	StartTime *float64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// This field is used to return the end time of the segment of an audio file under the corresponding moan tag in seconds.
	EndTime *float64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// *This field is in beta test. Stay tuned*
	SubLabelCode *string `json:"SubLabelCode,omitnil,omitempty" name:"SubLabelCode"`

	// This field is used to return a subtag under the current tag (Lable).
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubLabel *string `json:"SubLabel,omitnil,omitempty" name:"SubLabel"`

	// This field returns the suggested action according to the check result. <br>Values: `Block`, `Review`, `Pass`.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`
}

type AudioResultDetailTextResult struct {
	// This field is used to return the maliciousness tag in the detection result.<br>Returned values: **Normal**: normal; **Porn**: pornographic; **Abuse**: abusive; **Ad**: advertising; **Custom**: custom type of non-compliant content and other offensive, unsafe, or inappropriate types of content.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// This field is used to return the keyword information hit by the text content recognized with ASR and indicate the specific cause of content non-compliance (such as "Friend me"). This parameter may have multiple returned values representing multiple hit keywords. If the returned value is empty, but `Score` is not empty, the maliciousness tag (Label) that corresponds to the recognition result derives from the returned value determined by the semantic model.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Keywords []*string `json:"Keywords,omitnil,omitempty" name:"Keywords"`

	// This field is **valid only when `Label` is `Custom` (custom keyword)**. It is used to return the ID of the custom library for easier custom library management and configuration.
	// Note: this field may return null, indicating that no valid values can be obtained.
	LibId *string `json:"LibId,omitnil,omitempty" name:"LibId"`

	// This field is **valid only when `Label` is `Custom` (custom keyword)**. It is used to return the name of the custom library for easier custom library management and configuration.
	// Note: this field may return null, indicating that no valid values can be obtained.
	LibName *string `json:"LibName,omitnil,omitempty" name:"LibName"`

	// This field is used to return the confidence under the current tag. Value range: 0 (**the lowest confidence**)–100 (**the highest confidence**), where a higher value indicates that the text is more likely to fall into the category of the current returned tag; for example, *Porn 99* indicates that the text is highly likely to be pornographic.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Score *int64 `json:"Score,omitnil,omitempty" name:"Score"`

	// This field is used to return the operation suggestion. When you get the determination result, the returned value indicates the suggested operation.<br>
	// Returned values: **Block**, **Review**, **Pass**.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

	// This field is used to return the dictionary type of a custom keyword. Valid values: **1** (blocklist/allowlist), **2** (custom keyword dictionary). If no custom keyword dictionary is configured, the default value will be 1 (blocklist/allowlist).
	LibType *int64 `json:"LibType,omitnil,omitempty" name:"LibType"`

	// This field is used to return a subtag under the current tag (Lable).
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubLabel *string `json:"SubLabel,omitnil,omitempty" name:"SubLabel"`
}

type AudioSegments struct {
	// This field is used to return the start time of an audio segment in seconds. For audio on demand files, this parameter indicates the time offset of the audio from the complete audio track, such as 0 (no offset), 5 (5 seconds after the start of the audio track), and 10 (10 seconds after the start of the audio track). For live audio stream files, this parameter returns the Unix timestamp of the start of the audio segment, such as `1594650717`.
	// Note: this field may return null, indicating that no valid values can be obtained.
	OffsetTime *string `json:"OffsetTime,omitnil,omitempty" name:"OffsetTime"`

	// This field is used to return the specific moderation result of an audio segment. For details, see the description of the `AudioResult` data structure.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Result *AudioResult `json:"Result,omitnil,omitempty" name:"Result"`
}

type BucketInfo struct {
	// This field indicates a bucket name in Tencent Cloud COS. For more information on buckets, see Basic Concepts (https://intl.cloud.tencent.com/document/product/436/44352?from_cn_redirect=1). 
	// Note: this field may return null, indicating that no valid values can be obtained.
	Bucket *string `json:"Bucket,omitnil,omitempty" name:"Bucket"`

	// This field indicates a region where a Tencent Cloud COS managed data center is deployed. COS data is stored in buckets in these regions. 
	// Note: this field may return null, indicating that no valid values can be obtained.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// This field indicates an object key in Tencent Cloud COS. Object z is stored in a bucket as a basic storage unit. You can manage objects through the Tencent Cloud console, API, or SDK. For more information on objects, see Object Overview (https://intl.cloud.tencent.com/document/product/436/13324?from_cn_redirect=1). 
	// Note: this field may return null, indicating that no valid values can be obtained.
	Object *string `json:"Object,omitnil,omitempty" name:"Object"`
}

// Predefined struct for user
type CancelTaskRequestParams struct {
	// This field indicates the task ID (in the `Results` parameter) returned after an audio moderation task is created. It is used to identify the moderation task to be canceled.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

type CancelTaskRequest struct {
	*tchttp.BaseRequest
	
	// This field indicates the task ID (in the `Results` parameter) returned after an audio moderation task is created. It is used to identify the moderation task to be canceled.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

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

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

// Predefined struct for user
type CancelTaskResponseParams struct {
	// The unique request ID, which is returned for each request. RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CancelTaskResponse struct {
	*tchttp.BaseResponse
	Response *CancelTaskResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type CreateAudioModerationTaskRequestParams struct {
	// This field indicates the input audio moderation task information. For the specific input content, see the detailed description of the `TaskInput` data structure.<br>Note: you can create up to **10 tasks** at a time.
	Tasks []*TaskInput `json:"Tasks,omitnil,omitempty" name:"Tasks"`

	// This field indicates the specific number of the policy, which is used for API scheduling and can be configured in the CMS console. If the `Biztype` parameter is passed in, a moderation policy will be used based on the business scenario; otherwise, the default moderation policy will be used.<br>Note: `Biztype` can contain 3–32 digits, letters, and underscores; different `Biztype` values are associated with different business scenarios and moderation policies, so you need to verify the `Biztype` before calling this API.
	BizType *string `json:"BizType,omitnil,omitempty" name:"BizType"`

	// This field indicates the input audio moderation type. Valid values: **AUDIO** (audio on demand), **LIVE_AUDIO** (audio live streaming). Default value: AUDIO.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// This field is optional and indicates the key information of the callback signature, which is used to ensure the data security. The signature algorithm is to add the `X-Signature` field to the returned HTTP header, whose value is the SHA256-encoded hex string of `seed` + `body` . After receiving the callback data, you can calculate `X-Signature` by using **sha256(seed + body)** based on the returned `body` for verification.<br>For specific use cases, see [Signature Algorithm v3](https://intl.cloud.tencent.com/document/product/1219/53263?from_cn_redirect=1).
	Seed *string `json:"Seed,omitnil,omitempty" name:"Seed"`

	// This field is optional and indicates the address for receiving the moderation information callback in the default format of URL. After it is configured successfully, the non-compliant audio/video segments generated during moderation will be sent through this API. For the format of the returned callback content, see [Sample Callback Signature](https://intl.cloud.tencent.com/document/product/1219/53257?from_cn_redirect=1#.E7.A4.BA.E4.BE.8B2-.E5.9B.9E.E8.B0.83.E7.AD.BE.E5.90.8D.E7.A4.BA.E4.BE.8B)
	CallbackUrl *string `json:"CallbackUrl,omitnil,omitempty" name:"CallbackUrl"`
}

type CreateAudioModerationTaskRequest struct {
	*tchttp.BaseRequest
	
	// This field indicates the input audio moderation task information. For the specific input content, see the detailed description of the `TaskInput` data structure.<br>Note: you can create up to **10 tasks** at a time.
	Tasks []*TaskInput `json:"Tasks,omitnil,omitempty" name:"Tasks"`

	// This field indicates the specific number of the policy, which is used for API scheduling and can be configured in the CMS console. If the `Biztype` parameter is passed in, a moderation policy will be used based on the business scenario; otherwise, the default moderation policy will be used.<br>Note: `Biztype` can contain 3–32 digits, letters, and underscores; different `Biztype` values are associated with different business scenarios and moderation policies, so you need to verify the `Biztype` before calling this API.
	BizType *string `json:"BizType,omitnil,omitempty" name:"BizType"`

	// This field indicates the input audio moderation type. Valid values: **AUDIO** (audio on demand), **LIVE_AUDIO** (audio live streaming). Default value: AUDIO.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// This field is optional and indicates the key information of the callback signature, which is used to ensure the data security. The signature algorithm is to add the `X-Signature` field to the returned HTTP header, whose value is the SHA256-encoded hex string of `seed` + `body` . After receiving the callback data, you can calculate `X-Signature` by using **sha256(seed + body)** based on the returned `body` for verification.<br>For specific use cases, see [Signature Algorithm v3](https://intl.cloud.tencent.com/document/product/1219/53263?from_cn_redirect=1).
	Seed *string `json:"Seed,omitnil,omitempty" name:"Seed"`

	// This field is optional and indicates the address for receiving the moderation information callback in the default format of URL. After it is configured successfully, the non-compliant audio/video segments generated during moderation will be sent through this API. For the format of the returned callback content, see [Sample Callback Signature](https://intl.cloud.tencent.com/document/product/1219/53257?from_cn_redirect=1#.E7.A4.BA.E4.BE.8B2-.E5.9B.9E.E8.B0.83.E7.AD.BE.E5.90.8D.E7.A4.BA.E4.BE.8B)
	CallbackUrl *string `json:"CallbackUrl,omitnil,omitempty" name:"CallbackUrl"`
}

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

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

// Predefined struct for user
type CreateAudioModerationTaskResponseParams struct {
	// This field is used to return the task creation result. For the specific output content, see the detailed description of the `TaskResult` data structure.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Results []*TaskResult `json:"Results,omitnil,omitempty" name:"Results"`

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

type CreateAudioModerationTaskResponse struct {
	*tchttp.BaseResponse
	Response *CreateAudioModerationTaskResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeTaskDetailRequestParams struct {
	// This field indicates the task ID (in the `Results` parameter) returned after an audio moderation task is created. It is used to identify the moderation task for which to query the details.
	// <br>Note: the query API can query up to **20 tasks at a time**.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// This boolean field indicates whether to display all audio segments. Valid values: True (yes), False (display only audio segments that hit the moderation rule). Default value: False.
	ShowAllSegments *bool `json:"ShowAllSegments,omitnil,omitempty" name:"ShowAllSegments"`
}

type DescribeTaskDetailRequest struct {
	*tchttp.BaseRequest
	
	// This field indicates the task ID (in the `Results` parameter) returned after an audio moderation task is created. It is used to identify the moderation task for which to query the details.
	// <br>Note: the query API can query up to **20 tasks at a time**.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// This boolean field indicates whether to display all audio segments. Valid values: True (yes), False (display only audio segments that hit the moderation rule). Default value: False.
	ShowAllSegments *bool `json:"ShowAllSegments,omitnil,omitempty" name:"ShowAllSegments"`
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// The unique request ID, which is returned for each request. RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeTaskDetailResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTaskDetailResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeTasksRequestParams struct {
	// This parameter indicates the number of tasks to be displayed on each page of the task list. **Default value: 10**.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// This parameter indicates the input parameter of the task filter. You can filter tasks by business type, file type, processing suggestion, and task status. For the specific parameter content, see the detailed description of the `TaskFilter` data structure.
	Filter *TaskFilter `json:"Filter,omitnil,omitempty" name:"Filter"`

	// This parameter indicates the `Token` information used during pagination. It is automatically generated by the system and will be passed to the next generated page for easy and fast pagination. When you turn to the last page, this field will be empty.
	PageToken *string `json:"PageToken,omitnil,omitempty" name:"PageToken"`

	// This parameter indicates the start time of the task list in ISO 8601 timestamp format. **Default value: 3 days ago**. If this parameter is passed in, tasks between this time point and `EndTime` will be filtered out.<br>Note: this parameter is used together with `Filter` to filter tasks in no particular order.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// This parameter indicates the end time of the task list in ISO 8601 timestamp format. **Default value: empty**. If this parameter is passed in, tasks between `StartTime` and this time point will be filtered out.<br>Note: this parameter is used together with `Filter` to filter tasks in no particular order.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DescribeTasksRequest struct {
	*tchttp.BaseRequest
	
	// This parameter indicates the number of tasks to be displayed on each page of the task list. **Default value: 10**.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// This parameter indicates the input parameter of the task filter. You can filter tasks by business type, file type, processing suggestion, and task status. For the specific parameter content, see the detailed description of the `TaskFilter` data structure.
	Filter *TaskFilter `json:"Filter,omitnil,omitempty" name:"Filter"`

	// This parameter indicates the `Token` information used during pagination. It is automatically generated by the system and will be passed to the next generated page for easy and fast pagination. When you turn to the last page, this field will be empty.
	PageToken *string `json:"PageToken,omitnil,omitempty" name:"PageToken"`

	// This parameter indicates the start time of the task list in ISO 8601 timestamp format. **Default value: 3 days ago**. If this parameter is passed in, tasks between this time point and `EndTime` will be filtered out.<br>Note: this parameter is used together with `Filter` to filter tasks in no particular order.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// This parameter indicates the end time of the task list in ISO 8601 timestamp format. **Default value: empty**. If this parameter is passed in, tasks between `StartTime` and this time point will be filtered out.<br>Note: this parameter is used together with `Filter` to filter tasks in no particular order.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

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

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

// Predefined struct for user
type DescribeTasksResponseParams struct {
	// This field is used to return the total number of queried tasks in the format of `int` string.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Total *string `json:"Total,omitnil,omitempty" name:"Total"`

	// This field is used to return the detailed data of the tasks on the current page. For the specific output content, see the detailed description of the `TaskData` data structure.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Data []*TaskData `json:"Data,omitnil,omitempty" name:"Data"`

	// This field is used to return the `Token` information used during pagination. It is automatically generated by the system and will be passed to the next generated page for easy and fast pagination. When you turn to the last page, this field will be empty.
	// Note: this field may return null, indicating that no valid values can be obtained.
	PageToken *string `json:"PageToken,omitnil,omitempty" name:"PageToken"`

	// The unique request ID, which is returned for each request. RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeTasksResponse struct {
	*tchttp.BaseResponse
	Response *DescribeTasksResponseParams `json:"Response"`
}

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

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

type InputInfo struct {
	// This field indicates the file access type. Valid values: **URL** (resource link), **COS** (Tencent Cloud COS).
	// Note: this field may return null, indicating that no valid values can be obtained.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// This field indicates the link address for file access in standard URL format.<br>Note: when `Type` is `URL`, this field will not be empty.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// This field indicates the Tencent Cloud bucket information for file access.<br>Note: when `Type` is `COS`, this field will not be empty.
	// Note: this field may return null, indicating that no valid values can be obtained.
	BucketInfo *BucketInfo `json:"BucketInfo,omitnil,omitempty" name:"BucketInfo"`
}

type MediaInfo struct {
	// This field is used to return the codec of the media file passed in, such as WAV, MP3, AAC, FLAC, AMR, 3GP, M4A, WMA, OGG, and APE.
	Codecs *string `json:"Codecs,omitnil,omitempty" name:"Codecs"`

	// This field is used to return the segment length of the input streaming media file in milliseconds.** It is 15 seconds** by default and is customizable.
	Duration *int64 `json:"Duration,omitnil,omitempty" name:"Duration"`

	// *This field is in beta test. Stay tuned*
	Width *int64 `json:"Width,omitnil,omitempty" name:"Width"`

	// *This field is in beta test. Stay tuned*
	Height *int64 `json:"Height,omitnil,omitempty" name:"Height"`

	// *This field is in beta test. Stay tuned*
	Thumbnail *string `json:"Thumbnail,omitnil,omitempty" name:"Thumbnail"`
}

type RecognitionResult struct {
	// Values: `Teenager`, `Gender`
	// Note: This field may return `null`, indicating that no valid value can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// List of recognized category labels
	// Note: This field may return `null`, indicating that no valid value can be obtained.
	Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type StorageInfo struct {
	// This field indicates the file access type. Valid values: **URL** (resource link), **COS** (Tencent Cloud COS). It should correspond to the access type passed in and can be used for strict verification and quick identification of the access address. If you don't pass in this parameter, the default value will be `URL`, and the system will automatically determine the access address type.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// This field indicates the link address for file access in standard URL format.<br>Note: when `Type` is `URL`, this field will not be empty. You must pass in either this parameter or the `BucketInfo` parameter.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// This field indicates the Tencent Cloud bucket information for file access.<br>Note: when `Type` is `COS`, this field will not be empty. You must pass in either this parameter or the `Url` parameter.
	BucketInfo *BucketInfo `json:"BucketInfo,omitnil,omitempty" name:"BucketInfo"`
}

type Tag struct {
	// The value of this parameter varies by `Label`.
	// When `Label` is `Teenager`, `Name` can be `Teenager`. 
	// When `Label` is `Gender`, `Name` can be `Male` and `Female`.
	// Note: This field may return `null`, indicating that no valid value was found.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Confidence score. Value: 1 to 100. 
	// Note: This field may return `null`, indicating that no valid value was found.
	Score *int64 `json:"Score,omitnil,omitempty" name:"Score"`

	// Start time for the recognition (ms)
	// Note: This field may return `null`, indicating that no valid value can be obtained.
	StartTime *float64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time for the recognition (ms)
	// Note: This field may return `null`, indicating that no valid value can be obtained.
	EndTime *float64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type TaskData struct {
	// This field is used to return the ID of the audio moderation task data for subsequent query and management of moderation tasks.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DataId *string `json:"DataId,omitnil,omitempty" name:"DataId"`

	// This field is used to return the ID of an audio moderation task for identification, query, and management of moderation tasks.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// This field is used to return the task status of the queried content.
	// <br>Valid values: **FINISH** (task completed), **PENDING** (task pending), **RUNNING** (task in progress), **ERROR** (task error), **CANCELLED** (task canceled).
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// This field is used to return the name of an audio moderation task for subsequent query and management of moderation tasks.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// This field is used to return the `BizType` parameter passed in when the audio moderation API is called for easier data identification and management.
	// Note: this field may return null, indicating that no valid values can be obtained.
	BizType *string `json:"BizType,omitnil,omitempty" name:"BizType"`

	// This field is used to return the audio moderation type passed in when the audio moderation API is called. Valid values: **AUDIO** (audio on demand), **LIVE_AUDIO** (audio live streaming). Default value: AUDIO.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// This field is used to return the operation suggestion for the maliciousness tag. When you get the determination result, the returned value indicates the operation suggested by the system. We recommend you handle different types of violations and suggestions according to your business needs. <br>Returned values: **Block**, **Review**, **Pass**.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

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

	// This field is used to return the maliciousness tag in the detection result.<br>Returned values: **Normal**: normal; **Porn**: pornographic; **Abuse**: abusive; **Ad**: advertising; **Custom**: custom type of non-compliant content and other offensive, unsafe, or inappropriate types of content.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Labels []*TaskLabel `json:"Labels,omitnil,omitempty" name:"Labels"`

	// This field is used to return the creation time of the queried task in ISO 8601 format.
	CreatedAt *string `json:"CreatedAt,omitnil,omitempty" name:"CreatedAt"`

	// This field is used to return the last update time of the queried task in ISO 8601 format.
	// Note: this field may return null, indicating that no valid values can be obtained.
	UpdatedAt *string `json:"UpdatedAt,omitnil,omitempty" name:"UpdatedAt"`
}

type TaskFilter struct {
	// This field is used to pass in the business type of a task as a filter. `Biztype` is the specific number of the policy, which is used for API scheduling and can be configured in the CMS console. Different `Biztype` values are associated with different business scenarios and moderation policies, so you need to verify the `Biztype` before calling this API. `Biztype` can contain 3–32 digits, letters, and underscores.<br>Note: when this parameter is not passed in, tasks will not be filtered by business type by default.
	BizType *string `json:"BizType,omitnil,omitempty" name:"BizType"`

	// This field is used to pass in the type of an audio moderation task as a filter. Valid values: **VIDEO** (video on demand moderation), **AUDIO** (audio on demand moderation), **LIVE_VIDEO** (video live streaming moderation), **LIVE_AUDIO** (audio live streaming moderation).<br>Note: when this parameter is not passed in, tasks will not be filtered by task type by default.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// This field is used to pass in the operation suggestion of an audio moderation task as a filter. Valid values: **Block**, **Review**, **Pass**.<br>Note: when this parameter is not passed in, tasks will not be filtered by operation suggestion by default.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

	// This field is used to pass in the status of a moderation task as a filter. Valid values: **FINISH** (task completed), **PENDING** (task pending), **RUNNING** (task in progress), **ERROR** (task error), **CANCELLED** (task canceled).<br>Note: when this parameter is not passed in, tasks will not be filtered by task status by default.
	TaskStatus *string `json:"TaskStatus,omitnil,omitempty" name:"TaskStatus"`
}

type TaskInput struct {
	// This field is optional and indicates the data ID assigned by you to the object to be detected for easier file identification and management.<br>It **can contain up to 64 letters, digits, and special symbols (_-@#)**.
	DataId *string `json:"DataId,omitnil,omitempty" name:"DataId"`

	// This field is optional and indicates the name of an audio moderation task for subsequent query and management of moderation tasks.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// This field is required and indicates the access parameter of the moderated file, which is used to get the moderated media file and contains the access type and address.
	Input *StorageInfo `json:"Input,omitnil,omitempty" name:"Input"`
}

type TaskLabel struct {
	// This field is used to return the maliciousness tag in the detection result.<br>Returned values: **Normal**: normal; **Porn**: pornographic; **Abuse**: abusive; **Ad**: advertising; **Custom**: custom type of non-compliant content and other offensive, unsafe, or inappropriate types of content.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// This field is used to return the operation suggestion for the current tag. When you get the determination result, the returned value indicates the operation suggested by the system. We recommend you handle different types of violations and suggestions according to your business needs. <br>Returned values: **Block**, **Review**, **Pass**.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

	// This field is used to return the confidence under the current tag (Label). Value range: 0 (**the lowest confidence**)–100 (**the highest confidence**), where a higher value indicates that the text is more likely to fall into the category of the current returned tag; for example, *Porn 99* indicates that the text is highly likely to be pornographic, while *Porn 0* indicates that the text is not pornographic.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Score *int64 `json:"Score,omitnil,omitempty" name:"Score"`

	// This field is used to return a subtag under the current tag (Lable).
	// Note: this field may return null, indicating that no valid values can be obtained.
	SubLabel *string `json:"SubLabel,omitnil,omitempty" name:"SubLabel"`
}

type TaskResult struct {
	// This field is used to return the `DataId` passed in within the `TaskInput` structure when an audio moderation task is created. It is used to identify the specific moderation task.
	// Note: this field may return null, indicating that no valid values can be obtained.
	DataId *string `json:"DataId,omitnil,omitempty" name:"DataId"`

	// This field is used to return the ID of an audio moderation task for identification, query, and management of moderation tasks.
	// Note: this field may return null, indicating that no valid values can be obtained.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// This field is used to return the task creation status. If `OK` is returned, the task has been created successfully; if another value is returned, refer to the common error codes.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Code *string `json:"Code,omitnil,omitempty" name:"Code"`

	// **This field will take effect only when the returned value of `Code` is an error code**. It is used to return the error message.
	// Note: this field may return null, indicating that no valid values can be obtained.
	Message *string `json:"Message,omitnil,omitempty" name:"Message"`
}