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

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 seconds.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	Duration *string `json:"Duration,omitnil,omitempty" name:"Duration"`

	// This field is used to return the additional information (Extra) in the input parameters. If it is not configured, an empty value will be returned by default.<br>Note: the returned information varies by customer or `Biztype`. If you need to configure this field, submit a ticket or contact the aftersales service for assistance.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	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.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	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.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	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.
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	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 recognized category labels
	// Note: This field may return `null`, indicating that no valid values can be obtained.
	RecognitionResults []*RecognitionResult `json:"RecognitionResults,omitnil,omitempty" name:"RecognitionResults"`
}

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

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

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

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

	// Subtag under the current tag
	// 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 milliseconds.
	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 milliseconds.
	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).
	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 on WeChat"). 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 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).
	// Note: This field may return null, indicating that no valid values can be obtained.
	LibType *int64 `json:"LibType,omitnil,omitempty" name:"LibType"`

	// 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 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 {
	// Capture time.
	// For VOD files, it indicates the video offset time given in seconds (e.g., 0, 5, 10).
	// For live files, it indicates a timestamp (e.g., 1594650717).
	// Note: This field may return null, indicating that no valid values can be obtained.
	OffsetTime *string `json:"OffsetTime,omitnil,omitempty" name:"OffsetTime"`

	// Result set
	// 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 {
	// Name of the COS bucket
	Bucket *string `json:"Bucket,omitnil,omitempty" name:"Bucket"`

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

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

// Predefined struct for user
type CancelTaskRequestParams struct {
	// Task ID
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

type CancelTaskRequest struct {
	*tchttp.BaseRequest
	
	// Task ID
	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, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). 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 CreateVideoModerationTaskRequestParams struct {
	// Business type, which is used to define a template policy.
	BizType *string `json:"BizType,omitnil,omitempty" name:"BizType"`

	// Task type. Values: `VIDEO` (video on demand), `LIVE_VIDEO` (live video).
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Task information. You can create up to 10 tasks at a time.
	Tasks []*TaskInput `json:"Tasks,omitnil,omitempty" name:"Tasks"`

	// Key of the callback signature. For more details, see the signature documentation.
	Seed *string `json:"Seed,omitnil,omitempty" name:"Seed"`

	// Callback URL that will receive moderation information. After it is configured, the non-compliant audio segments detected in moderation will be sent through this API.
	CallbackUrl *string `json:"CallbackUrl,omitnil,omitempty" name:"CallbackUrl"`

	// Priority, which determines the execution order of your moderation tasks. The default value is 0.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`
}

type CreateVideoModerationTaskRequest struct {
	*tchttp.BaseRequest
	
	// Business type, which is used to define a template policy.
	BizType *string `json:"BizType,omitnil,omitempty" name:"BizType"`

	// Task type. Values: `VIDEO` (video on demand), `LIVE_VIDEO` (live video).
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Task information. You can create up to 10 tasks at a time.
	Tasks []*TaskInput `json:"Tasks,omitnil,omitempty" name:"Tasks"`

	// Key of the callback signature. For more details, see the signature documentation.
	Seed *string `json:"Seed,omitnil,omitempty" name:"Seed"`

	// Callback URL that will receive moderation information. After it is configured, the non-compliant audio segments detected in moderation will be sent through this API.
	CallbackUrl *string `json:"CallbackUrl,omitnil,omitempty" name:"CallbackUrl"`

	// Priority, which determines the execution order of your moderation tasks. The default value is 0.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`
}

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

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

// Predefined struct for user
type CreateVideoModerationTaskResponseParams struct {
	// Task creation result
	// 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 CreateVideoModerationTaskResponse struct {
	*tchttp.BaseResponse
	Response *CreateVideoModerationTaskResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeTaskDetailRequestParams struct {
	// Task ID, which is returned after a task is created
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// Whether to show all segments. If it’s not specified, only hit segments are shown.
	ShowAllSegments *bool `json:"ShowAllSegments,omitnil,omitempty" name:"ShowAllSegments"`
}

type DescribeTaskDetailRequest struct {
	*tchttp.BaseRequest
	
	// Task ID, which is returned after a task is created
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// Whether to show all segments. If it’s not specified, only hit segments are shown.
	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 {
	// This field is used to return the task ID (in the `Results` parameter) after a video moderation task is created. It is used to identify the moderation task for which to query the details.
	// 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 data ID parameter passed in when the video moderation API is called for easier data identification and management.
	// 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 `BizType` parameter passed in when the video 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 task name in the `TaskInput` parameter passed in when the video moderation API is called for easier task identification and management.
	// 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 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).
	// Note: This field may return null, indicating that no valid values can be obtained.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// This field is used to return the type of video for moderation. Valid values: `VIDEO` (video on demand), `LIVE_VIDEO` (video live streaming). Default value: `VIDEO`.
	// 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"`

	// This field is used to return the maliciousness tag in the detection result.<br>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 details of the input media file, including encoding/decoding formats and segment length. For details, see the description of the `MediaInfo` data structure.
	// 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 media content information of the moderation service, mainly including the input file type and access URL.
	// Note: This field may return null, indicating that no valid values can be obtained.
	InputInfo *InputInfo `json:"InputInfo,omitnil,omitempty" name:"InputInfo"`

	// This field is used to return the creation time of the queried task in ISO 8601 format.
	// Note: This field may return null, indicating that no valid values can be obtained.
	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"`

	// Specifies how long, in seconds, to retry
	// Note: This field may return null, indicating that no valid values can be obtained.
	TryInSeconds *int64 `json:"TryInSeconds,omitnil,omitempty" name:"TryInSeconds"`

	// This field is used to return the moderation result of the frames captured from the video. For the detailed returned content, see the description of the `ImageSegments` data structure.<br>Note: the data is valid for 24 hours. To extend the storage period, set it in the configured COS bucket.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ImageSegments []*ImageSegments `json:"ImageSegments,omitnil,omitempty" name:"ImageSegments"`

	// This field is used to return the moderation result of the audio in the video. For the detailed returned content, see the description of the `AudioSegments` data structure.<br>Note: the data is valid for 24 hours. To extend the storage period, set it in the configured COS bucket.
	// Note: This field may return null, indicating that no valid values can be obtained.
	AudioSegments []*AudioSegments `json:"AudioSegments,omitnil,omitempty" name:"AudioSegments"`

	// When the task status is `Error`, the type of the error will be returned. Valid values: **DECODE_ERROR**: decoding failed (the input resource may contain video that cannot be decoded).
	// **URL_ERROR**: download address verification failed.
	// **TIMEOUT_ERROR**: processing timed out. When the task status is not `Error`, null will be returned by default.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ErrorType *string `json:"ErrorType,omitnil,omitempty" name:"ErrorType"`

	// If the task status is `Error`, this field will return the error message; otherwise, null will be returned by default.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ErrorDescription *string `json:"ErrorDescription,omitnil,omitempty" name:"ErrorDescription"`

	// If the recognition result is normal, this parameter is returned with the value `Normal`. If malicious content is recognized, the tag with the highest priority in the result of `Labels` is returned.
	// 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 recognized text content of an audio file. **Up to the first 1,000 characters** can be recognized.
	// Note: This field may return null, indicating that no valid values can be obtained.
	AudioText *string `json:"AudioText,omitnil,omitempty" name:"AudioText"`

	// The text content recognized from the audio 
	// Note: This field may return null, indicating that no valid values can be obtained.
	Asrs []*RcbAsr `json:"Asrs,omitnil,omitempty" name:"Asrs"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). 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, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). 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 ImageResult struct {
	// Whether the video content is hit
	// `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"`

	// Hit tag
	// `Porn`: Pornographic
	// `Sexy`: Sexy
	// `Polity`: Political
	// `Illegal`: Illegal
	// `Abuse`: Abusive
	// `Terror`: Violence and terrorism
	// `Ad`: Advertising
	// Note: This field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// Suggestion. Values:
	// `Pass`: You’re suggested to allow the video to pass.
	// `Review`: You’re suggested to take a manual review.
	// `Block`: You’re suggested to block the non-compliant video.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

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

	// Captured images
	// Note: This field may return null, indicating that no valid values can be obtained.
	Results []*ImageResultResult `json:"Results,omitnil,omitempty" name:"Results"`

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

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

type ImageResultResult struct {
	// Scenario
	// `Porn`: Pornographic
	// `Sexy`: Sexy
	// `Polity`: Political
	// `Illegal`: Illegal
	// `Abuse`: Abusive
	// `Terror`: Violence and terrorism
	// `Ad`: Advertising
	// Note: This field may return null, indicating that no valid values can be obtained.
	Scene *string `json:"Scene,omitnil,omitempty" name:"Scene"`

	// Whether the video content is hit
	// `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"`

	// Suggestion. Values:
	// `Pass`: You’re suggested to allow the video to pass.
	// `Review`: You’re suggested to take a manual review.
	// `Block`: You’re suggested to block the non-compliant video.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

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

	// Subtag under the current tag
	// Note: This field may return null, indicating that no valid values can be obtained.
	SubLabel *string `json:"SubLabel,omitnil,omitempty" name:"SubLabel"`

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

	// If the hit video contains political content, the list of politicians will be returned; otherwise a null value is returned.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Names []*string `json:"Names,omitnil,omitempty" name:"Names"`

	// OCR-recognized text in the image
	// Note: This field may return null, indicating that no valid values can be obtained.
	Text *string `json:"Text,omitnil,omitempty" name:"Text"`

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

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

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

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

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

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

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

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

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

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

	// Subtag under the current tag
	// Note: This field may return null, indicating that no valid values can be obtained.
	SubLabelCode *string `json:"SubLabelCode,omitnil,omitempty" name:"SubLabelCode"`
}

type ImageResultsResultDetailLocation struct {
	// X-coordinate
	// Note: This field may return null, indicating that no valid values can be obtained.
	X *float64 `json:"X,omitnil,omitempty" name:"X"`

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

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

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

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

type ImageSegments struct {
	// Capture time.
	// For VOD files, it indicates the video offset time given in seconds (e.g., 0, 5, 10).
	// For live files, it indicates a timestamp (e.g., 1594650717).
	OffsetTime *string `json:"OffsetTime,omitnil,omitempty" name:"OffsetTime"`

	// Image capture result
	Result *ImageResult `json:"Result,omitnil,omitempty" name:"Result"`
}

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

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

	// Bucket information. When `Type = COS`, this field is required.
	// Note: This field may return null, indicating that no valid values can be obtained.
	BucketInfo *string `json:"BucketInfo,omitnil,omitempty" name:"BucketInfo"`
}

type MediaInfo struct {
	// Encoding format
	Codecs *string `json:"Codecs,omitnil,omitempty" name:"Codecs"`

	// Segment duration during stream detection
	// Note: this field may return null, indicating that no valid values can be obtained.
	Duration *int64 `json:"Duration,omitnil,omitempty" name:"Duration"`

	// Width, in pixels
	Width *int64 `json:"Width,omitnil,omitempty" name:"Width"`

	// Height, in pixels
	Height *int64 `json:"Height,omitnil,omitempty" name:"Height"`

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

type RcbAsr struct {
	// This field is used to return the recognized text content of an audio file. **Up to the first 1,000 characters** can be recognized.
	// 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 creation time of the queried task in ISO 8601 format.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CreatedAt *string `json:"CreatedAt,omitnil,omitempty" name:"CreatedAt"`
}

type RecognitionResult struct {
	// Values: `Teenager`, `Gender`
	// Note: This field may return `null`, indicating that no valid values 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 values can be obtained.
	Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type StorageInfo struct {
	// Type. Values:
	// `URL`: Resource link
	// `COS`: Tencent Cloud COS
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

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

	// Tencent Cloud bucket information
	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 values can be obtained.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

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

	// Start time for the recognition (ms)
	// Note: This field may return `null`, indicating that no valid values 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 values can be obtained.
	EndTime *float64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

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

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

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

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

	// Task status. Values: `PENDING`, `RUNNING`, `ERROR`, `FINISH`, and `CANCELLED`.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

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

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

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

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

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

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

	// Update time
	// 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 {
	// Task type
	BizType *string `json:"BizType,omitnil,omitempty" name:"BizType"`

	// Task type. Values: `VIDEO`, `AUDIO`, `LIVE_VIDEO`, and `LIVE_AUDIO`.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Suggestion. Values: `Pass`, `Review`, and `Block`.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

	// Task status. Values: `PENDING`, `RUNNING`, `ERROR`, `FINISH`, and `CANCELLED`.
	TaskStatus *string `json:"TaskStatus,omitnil,omitempty" name:"TaskStatus"`
}

type TaskInput struct {
	// Data ID
	DataId *string `json:"DataId,omitnil,omitempty" name:"DataId"`

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

	// Task input
	Input *StorageInfo `json:"Input,omitnil,omitempty" name:"Input"`
}

type TaskLabel struct {
	// Hit tag
	// `Porn`: Pornographic
	// `Sexy`: Sexy
	// `Polity`: Political
	// `Illegal`: Illegal
	// `Abuse`: Abusive
	// `Terror`: Violence and terrorism
	// `Ad`: Advertising
	// Note: This field may return null, indicating that no valid values can be obtained.
	Label *string `json:"Label,omitnil,omitempty" name:"Label"`

	// Suggestion. Values:
	// `Pass`: You’re suggested to allow the video to pass.
	// `Review`: You’re suggested to take a manual review.
	// `Block`: You’re suggested to block the non-compliant video.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Suggestion *string `json:"Suggestion,omitnil,omitempty" name:"Suggestion"`

	// Score. Value range: 0-100.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Score *int64 `json:"Score,omitnil,omitempty" name:"Score"`
}

type TaskResult struct {
	// Data ID passed when you request the data
	// Note: This field may return null, indicating that no valid values can be obtained.
	DataId *string `json:"DataId,omitnil,omitempty" name:"DataId"`

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

	// Error code. If `OK` is returned, it indicates the task is created successfully. You can see common error codes for more details.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Code *string `json:"Code,omitnil,omitempty" name:"Code"`

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