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

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

// Predefined struct for user
type BatchDeleteDevicesRequestParams struct {
	// Project id of the targeted deleted device.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Device id array of the targeted deleted device.
	DeviceIds []*string `json:"DeviceIds,omitnil,omitempty" name:"DeviceIds"`
}

type BatchDeleteDevicesRequest struct {
	*tchttp.BaseRequest
	
	// Project id of the targeted deleted device.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Device id array of the targeted deleted device.
	DeviceIds []*string `json:"DeviceIds,omitnil,omitempty" name:"DeviceIds"`
}

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

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

// Predefined struct for user
type BatchDeleteDevicesResponseParams struct {
	// List of device ids with deletion failed.
	FailedDeviceIds []*string `json:"FailedDeviceIds,omitnil,omitempty" name:"FailedDeviceIds"`

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

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

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

// Predefined struct for user
type BatchDeletePolicyRequestParams struct {
	// Project id of the deleted permission configuration.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Remote device id list of the deleted permission configuration.
	RemoteDeviceIds []*string `json:"RemoteDeviceIds,omitnil,omitempty" name:"RemoteDeviceIds"`

	// Permission mode of the deleted permission configuration, black for blocklist, white for allowlist.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`
}

type BatchDeletePolicyRequest struct {
	*tchttp.BaseRequest
	
	// Project id of the deleted permission configuration.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Remote device id list of the deleted permission configuration.
	RemoteDeviceIds []*string `json:"RemoteDeviceIds,omitnil,omitempty" name:"RemoteDeviceIds"`

	// Permission mode of the deleted permission configuration, black for blocklist, white for allowlist.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`
}

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

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

// Predefined struct for user
type BatchDeletePolicyResponseParams struct {
	// Remote device id list with failed permission configuration deletion.
	FailedRemoteDeviceIds []*string `json:"FailedRemoteDeviceIds,omitnil,omitempty" name:"FailedRemoteDeviceIds"`

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

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

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

// Predefined struct for user
type CreateDeviceRequestParams struct {
	// Create the project id to which the device belongs.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Create a device id, which must be unique within the project, consisting of lowercase english letters, numbers, and underscores, with a length not exceeding 18.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Create a device name, with a length of less than 24, which can include chinese, numbers, english letters, and underscores.
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Device type, field for on-site device (controlled device), remote for remote device (control device), default is field if not specified.
	DeviceType *string `json:"DeviceType,omitnil,omitempty" name:"DeviceType"`

	// Device authentication password, consisting of uppercase and lowercase english letters and digits, must be 16 characters.
	DeviceToken *string `json:"DeviceToken,omitnil,omitempty" name:"DeviceToken"`
}

type CreateDeviceRequest struct {
	*tchttp.BaseRequest
	
	// Create the project id to which the device belongs.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Create a device id, which must be unique within the project, consisting of lowercase english letters, numbers, and underscores, with a length not exceeding 18.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Create a device name, with a length of less than 24, which can include chinese, numbers, english letters, and underscores.
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Device type, field for on-site device (controlled device), remote for remote device (control device), default is field if not specified.
	DeviceType *string `json:"DeviceType,omitnil,omitempty" name:"DeviceType"`

	// Device authentication password, consisting of uppercase and lowercase english letters and digits, must be 16 characters.
	DeviceToken *string `json:"DeviceToken,omitnil,omitempty" name:"DeviceToken"`
}

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

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

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

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

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

// Predefined struct for user
type CreateProjectRequestParams struct {
	// Project name, up to 24 characters.
	ProjectName *string `json:"ProjectName,omitnil,omitempty" name:"ProjectName"`

	// Project description, up to 120 characters, default is empty if not filled.
	ProjectDescription *string `json:"ProjectDescription,omitnil,omitempty" name:"ProjectDescription"`

	// Permission mode, black for blocklist, white for allowlist. defaults to black if not specified.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`
}

type CreateProjectRequest struct {
	*tchttp.BaseRequest
	
	// Project name, up to 24 characters.
	ProjectName *string `json:"ProjectName,omitnil,omitempty" name:"ProjectName"`

	// Project description, up to 120 characters, default is empty if not filled.
	ProjectDescription *string `json:"ProjectDescription,omitnil,omitempty" name:"ProjectDescription"`

	// Permission mode, black for blocklist, white for allowlist. defaults to black if not specified.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`
}

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

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

// Predefined struct for user
type CreateProjectResponseParams struct {
	// Project id, length is 16 characters.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

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

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

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

// Predefined struct for user
type DeleteProjectRequestParams struct {
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

type DeleteProjectRequest struct {
	*tchttp.BaseRequest
	
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

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

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

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

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

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

// Predefined struct for user
type DescribeDeviceInfoRequestParams struct {
	// Project id to which the target device belongs.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Target device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

type DescribeDeviceInfoRequest struct {
	*tchttp.BaseRequest
	
	// Project id to which the target device belongs.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Target device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

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

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

// Predefined struct for user
type DescribeDeviceInfoResponseParams struct {
	// Device name.
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Device type: "field" specifies on-site devices (controlled party), and "remote" specifies remote devices (controlling party).
	DeviceType *string `json:"DeviceType,omitnil,omitempty" name:"DeviceType"`

	// Device status: offline means offline, ready means online and ready, connected means in session.
	DeviceStatus *string `json:"DeviceStatus,omitnil,omitempty" name:"DeviceStatus"`

	// Last updated time of device status.
	LastReportTime *string `json:"LastReportTime,omitnil,omitempty" name:"LastReportTime"`

	// Modification time of device information.
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`

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

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

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

// Predefined struct for user
type DescribeDeviceSessionListRequestParams struct {
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Page number, beginning from 1.
	PageNumber *uint64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Number of entries per page.
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

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

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

type DescribeDeviceSessionListRequest struct {
	*tchttp.BaseRequest
	
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Page number, beginning from 1.
	PageNumber *uint64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Number of entries per page.
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

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

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

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

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

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

	// Conversation list.
	DeviceSessionList []*SessionInfo `json:"DeviceSessionList,omitnil,omitempty" name:"DeviceSessionList"`

	// Number of items on this page.
	Num *uint64 `json:"Num,omitnil,omitempty" name:"Num"`

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

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

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

// Predefined struct for user
type DescribeProjectInfoRequestParams struct {
	// Target project id. required parameter.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

type DescribeProjectInfoRequest struct {
	*tchttp.BaseRequest
	
	// Target project id. required parameter.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

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

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

// Predefined struct for user
type DescribeProjectInfoResponseParams struct {
	// Project name.
	ProjectName *string `json:"ProjectName,omitnil,omitempty" name:"ProjectName"`

	// Project description.
	ProjectDescription *string `json:"ProjectDescription,omitnil,omitempty" name:"ProjectDescription"`

	// Project permission mode, black for blocklist, white for allowlist.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`

	// Project information modification time.
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`

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

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

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

// Predefined struct for user
type DescribeProjectListRequestParams struct {
	// The maximum number of projects returned per page. the default value is 10 if it is not filled in.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// The current page number. the default value is 1 (homepage) if it is not filled in.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`
}

type DescribeProjectListRequest struct {
	*tchttp.BaseRequest
	
	// The maximum number of projects returned per page. the default value is 10 if it is not filled in.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// The current page number. the default value is 1 (homepage) if it is not filled in.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`
}

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

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

// Predefined struct for user
type DescribeProjectListResponseParams struct {
	// Array of project information.
	Projects []*ProjectInfo `json:"Projects,omitnil,omitempty" name:"Projects"`

	// Total number of projects.
	Total *int64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Number of projects returned in this request.
	Num *int64 `json:"Num,omitnil,omitempty" name:"Num"`

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

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

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

// Predefined struct for user
type DescribeRecentSessionListRequestParams struct {
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Page number, beginning from 1.
	PageNumber *uint64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Number of entries per page.
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Device id, supports filtering by remote device or on-site device.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time of the time range. the maximum time range is the last two hours. if not specified or out of range, the start time is calculated as two hours ago.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time of the time range. the maximum time range is the last two hours. if not specified or out of range, the end time is calculated as the current time.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DescribeRecentSessionListRequest struct {
	*tchttp.BaseRequest
	
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Page number, beginning from 1.
	PageNumber *uint64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Number of entries per page.
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Device id, supports filtering by remote device or on-site device.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time of the time range. the maximum time range is the last two hours. if not specified or out of range, the start time is calculated as two hours ago.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time of the time range. the maximum time range is the last two hours. if not specified or out of range, the end time is calculated as the current time.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

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

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

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

	// Conversation list.
	RecentSessionList []*RecentSessionInfo `json:"RecentSessionList,omitnil,omitempty" name:"RecentSessionList"`

	// Number of items on this page.
	Num *uint64 `json:"Num,omitnil,omitempty" name:"Num"`

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

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

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

// Predefined struct for user
type DescribeSessionStatisticsByIntervalRequestParams struct {
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Statistical time interval: hour|day|month.
	StatisticInterval *string `json:"StatisticInterval,omitnil,omitempty" name:"StatisticInterval"`

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time in seconds.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time in seconds.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DescribeSessionStatisticsByIntervalRequest struct {
	*tchttp.BaseRequest
	
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Statistical time interval: hour|day|month.
	StatisticInterval *string `json:"StatisticInterval,omitnil,omitempty" name:"StatisticInterval"`

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time in seconds.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time in seconds.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

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

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

// Predefined struct for user
type DescribeSessionStatisticsByIntervalResponseParams struct {
	// Session statistics for each time period.
	SessionStatistics []*SessionIntervalStatistic `json:"SessionStatistics,omitnil,omitempty" name:"SessionStatistics"`

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

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

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

// Predefined struct for user
type DescribeSessionStatisticsRequestParams struct {
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time, unit: seconds.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time in seconds.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DescribeSessionStatisticsRequest struct {
	*tchttp.BaseRequest
	
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time, unit: seconds.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time in seconds.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

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

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

// Predefined struct for user
type DescribeSessionStatisticsResponseParams struct {
	// Number of sessions.
	SessionNum *uint64 `json:"SessionNum,omitnil,omitempty" name:"SessionNum"`

	// Call duration, unit: minutes.
	TotalDuration *uint64 `json:"TotalDuration,omitnil,omitempty" name:"TotalDuration"`

	// Number of active on-site devices.
	ActiveFieldDeviceNum *uint64 `json:"ActiveFieldDeviceNum,omitnil,omitempty" name:"ActiveFieldDeviceNum"`

	// Number of active remote devices.
	ActiveRemoteDeviceNum *uint64 `json:"ActiveRemoteDeviceNum,omitnil,omitempty" name:"ActiveRemoteDeviceNum"`

	// Proportion of excellent sessions, unit: %.
	NotBadSessionRatio *uint64 `json:"NotBadSessionRatio,omitnil,omitempty" name:"NotBadSessionRatio"`

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

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

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

type Device struct {
	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

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

	// Number of bound licenses.
	LicenseCount *int64 `json:"LicenseCount,omitnil,omitempty" name:"LicenseCount"`

	// Remaining days: days.
	RemainDay *int64 `json:"RemainDay,omitnil,omitempty" name:"RemainDay"`

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

	// Service duration: s.
	Duration *string `json:"Duration,omitnil,omitempty" name:"Duration"`

	// List of bound license ids.
	LicenseIds []*string `json:"LicenseIds,omitnil,omitempty" name:"LicenseIds"`

	// Monthly license duration limit.
	MonthlyRemainTime *int64 `json:"MonthlyRemainTime,omitnil,omitempty" name:"MonthlyRemainTime"`

	// Monthly maximum duration (minutes).
	LimitedTime *int64 `json:"LimitedTime,omitnil,omitempty" name:"LimitedTime"`
}

// Predefined struct for user
type GetDeviceLicenseRequestParams struct {
	// Project id to which the target device belongs.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Target device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

type GetDeviceLicenseRequest struct {
	*tchttp.BaseRequest
	
	// Project id to which the target device belongs.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Target device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

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

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

// Predefined struct for user
type GetDeviceLicenseResponseParams struct {
	// Specifies the number of available licenses bound to the specified device.
	AvailableCount *int64 `json:"AvailableCount,omitnil,omitempty" name:"AvailableCount"`

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

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

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

// Predefined struct for user
type GetDevicesRequestParams struct {
	// Page number.
	PageNum *int64 `json:"PageNum,omitnil,omitempty" name:"PageNum"`

	// Number of pages.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

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

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

type GetDevicesRequest struct {
	*tchttp.BaseRequest
	
	// Page number.
	PageNum *int64 `json:"PageNum,omitnil,omitempty" name:"PageNum"`

	// Number of pages.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

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

	// Device id.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

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

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

// Predefined struct for user
type GetDevicesResponseParams struct {
	// Device authorization list.
	Devices []*Device `json:"Devices,omitnil,omitempty" name:"Devices"`

	// Number of tables in the list.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type GetDevicesResponse struct {
	*tchttp.BaseResponse
	Response *GetDevicesResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetLicenseStatRequestParams struct {

}

type GetLicenseStatRequest struct {
	*tchttp.BaseRequest
	
}

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

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

// Predefined struct for user
type GetLicenseStatResponseParams struct {
	// Valid authorization.
	Valid *int64 `json:"Valid,omitnil,omitempty" name:"Valid"`

	// Bound authorization.
	Bound *int64 `json:"Bound,omitnil,omitempty" name:"Bound"`

	// Unbound authorization.
	UnBound *int64 `json:"UnBound,omitnil,omitempty" name:"UnBound"`

	// Expired authorization.
	Expire *int64 `json:"Expire,omitnil,omitempty" name:"Expire"`

	// Number of authorization timeouts for the current month.
	MonthlyExpire *int64 `json:"MonthlyExpire,omitnil,omitempty" name:"MonthlyExpire"`

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

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

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

// Predefined struct for user
type GetLicensesRequestParams struct {
	// Page number.
	PageNum *int64 `json:"PageNum,omitnil,omitempty" name:"PageNum"`

	// Number of pages.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// projectId
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

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

	// License status. 0: unbound; 1: bound; 2: service suspension; 3: refund.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type GetLicensesRequest struct {
	*tchttp.BaseRequest
	
	// Page number.
	PageNum *int64 `json:"PageNum,omitnil,omitempty" name:"PageNum"`

	// Number of pages.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// projectId
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

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

	// License status. 0: unbound; 1: bound; 2: service suspension; 3: refund.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

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

// Predefined struct for user
type GetLicensesResponseParams struct {
	// License list.
	Licenses []*License `json:"Licenses,omitnil,omitempty" name:"Licenses"`

	// Number of license list items.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type GetLicensesResponse struct {
	*tchttp.BaseResponse
	Response *GetLicensesResponseParams `json:"Response"`
}

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

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

type License struct {
	// The number of licenses of this type.
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// License status. 0: unbound; 1: bound; 2: service suspension; 3: refund.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Expiration timestamp: s.
	ExpireTime *string `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Service duration: s.
	Duration *string `json:"Duration,omitnil,omitempty" name:"Duration"`

	// Remaining days: days.
	RemainDay *int64 `json:"RemainDay,omitnil,omitempty" name:"RemainDay"`

	// The list of license ids of this type.
	LicenseIds []*string `json:"LicenseIds,omitnil,omitempty" name:"LicenseIds"`
}

// Predefined struct for user
type ModifyDeviceRequestParams struct {
	// The target project id to modify the device's affiliated project.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// The target device id to modify the device.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// The modified device name; if not filled in, no modification will be made.
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// The modified device authentication password; if not filled in, no modification will be made.
	DeviceToken *string `json:"DeviceToken,omitnil,omitempty" name:"DeviceToken"`
}

type ModifyDeviceRequest struct {
	*tchttp.BaseRequest
	
	// The target project id to modify the device's affiliated project.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// The target device id to modify the device.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// The modified device name; if not filled in, no modification will be made.
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// The modified device authentication password; if not filled in, no modification will be made.
	DeviceToken *string `json:"DeviceToken,omitnil,omitempty" name:"DeviceToken"`
}

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

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

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

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

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

// Predefined struct for user
type ModifyPolicyRequestParams struct {
	// Project id for modifying permission configuration.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Remote device id for modifying permission configuration.
	RemoteDeviceId *string `json:"RemoteDeviceId,omitnil,omitempty" name:"RemoteDeviceId"`

	// Array of on-site device ids involved in permission modification.
	FieldDeviceIds []*string `json:"FieldDeviceIds,omitnil,omitempty" name:"FieldDeviceIds"`

	// The target permission mode to modify, black for blocklist, white for allowlist.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`

	// Modification mode, add for adding (associating on-site devices), remove for deletion (dissociating on-site devices), set for setting (updating on-site device association).
	ModifyMode *string `json:"ModifyMode,omitnil,omitempty" name:"ModifyMode"`
}

type ModifyPolicyRequest struct {
	*tchttp.BaseRequest
	
	// Project id for modifying permission configuration.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Remote device id for modifying permission configuration.
	RemoteDeviceId *string `json:"RemoteDeviceId,omitnil,omitempty" name:"RemoteDeviceId"`

	// Array of on-site device ids involved in permission modification.
	FieldDeviceIds []*string `json:"FieldDeviceIds,omitnil,omitempty" name:"FieldDeviceIds"`

	// The target permission mode to modify, black for blocklist, white for allowlist.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`

	// Modification mode, add for adding (associating on-site devices), remove for deletion (dissociating on-site devices), set for setting (updating on-site device association).
	ModifyMode *string `json:"ModifyMode,omitnil,omitempty" name:"ModifyMode"`
}

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

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

// Predefined struct for user
type ModifyPolicyResponseParams struct {
	// List of on-site device ids with association failed.
	FailedInsertIds []*string `json:"FailedInsertIds,omitnil,omitempty" name:"FailedInsertIds"`

	// List of on-site device ids with disassociation failed.
	FailedDeleteIds []*string `json:"FailedDeleteIds,omitnil,omitempty" name:"FailedDeleteIds"`

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

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

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

// Predefined struct for user
type ModifyProjectRequestParams struct {
	// Project id of the target project to modify.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Modified project name, leave blank if not modifying.
	ProjectName *string `json:"ProjectName,omitnil,omitempty" name:"ProjectName"`

	// Modified project description, leave blank if not modifying.
	ProjectDescription *string `json:"ProjectDescription,omitnil,omitempty" name:"ProjectDescription"`

	// The modified permission mode, black for blocklist, white for allowlist. if not specified, no modification will be made.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`
}

type ModifyProjectRequest struct {
	*tchttp.BaseRequest
	
	// Project id of the target project to modify.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Modified project name, leave blank if not modifying.
	ProjectName *string `json:"ProjectName,omitnil,omitempty" name:"ProjectName"`

	// Modified project description, leave blank if not modifying.
	ProjectDescription *string `json:"ProjectDescription,omitnil,omitempty" name:"ProjectDescription"`

	// The modified permission mode, black for blocklist, white for allowlist. if not specified, no modification will be made.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`
}

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

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

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

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

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

type ProjectInfo struct {
	// Project id.
	ProjectId *string `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

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

	// Project description.
	ProjectDescription *string `json:"ProjectDescription,omitnil,omitempty" name:"ProjectDescription"`

	// Project permission mode, black for blocklist, white for allowlist.
	PolicyMode *string `json:"PolicyMode,omitnil,omitempty" name:"PolicyMode"`

	// Project information modification time.
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`
}

type RecentSessionInfo struct {
	// Session id.
	SessionId *string `json:"SessionId,omitnil,omitempty" name:"SessionId"`

	// Remote device id.
	RemoteDeviceId *string `json:"RemoteDeviceId,omitnil,omitempty" name:"RemoteDeviceId"`

	// On-Site device id.
	FieldDeviceId *string `json:"FieldDeviceId,omitnil,omitempty" name:"FieldDeviceId"`

	// Target resolution.
	Resolution *string `json:"Resolution,omitnil,omitempty" name:"Resolution"`

	// Session start time.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Last updated time.
	LatestUpdateTime *uint64 `json:"LatestUpdateTime,omitnil,omitempty" name:"LatestUpdateTime"`
}

type SessionInfo struct {
	// Session id.
	SessionId *string `json:"SessionId,omitnil,omitempty" name:"SessionId"`

	// Remote device id.
	RemoteDeviceId *string `json:"RemoteDeviceId,omitnil,omitempty" name:"RemoteDeviceId"`

	// On-Site device id.
	FieldDeviceId *string `json:"FieldDeviceId,omitnil,omitempty" name:"FieldDeviceId"`

	// Target resolution.
	Resolution *string `json:"Resolution,omitnil,omitempty" name:"Resolution"`

	// Session start time.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Session end time.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Call quality: good|normal|bad.
	Quality *string `json:"Quality,omitnil,omitempty" name:"Quality"`
}

type SessionIntervalStatistic struct {
	// Number of active on-site devices.
	ActiveFieldDeviceNum *uint64 `json:"ActiveFieldDeviceNum,omitnil,omitempty" name:"ActiveFieldDeviceNum"`

	// Number of active remote devices.
	ActiveRemoteDeviceNum *uint64 `json:"ActiveRemoteDeviceNum,omitnil,omitempty" name:"ActiveRemoteDeviceNum"`

	// Number of sessions.
	SessionNum *uint64 `json:"SessionNum,omitnil,omitempty" name:"SessionNum"`

	// Session age, unit: minutes.
	TotalDuration *uint64 `json:"TotalDuration,omitnil,omitempty" name:"TotalDuration"`

	// Timestamp in seconds.
	StartTime *uint64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Timestamp in seconds.
	EndTime *uint64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Proportion of excellent sessions, unit: %.
	NotBadSessionRatio *uint64 `json:"NotBadSessionRatio,omitnil,omitempty" name:"NotBadSessionRatio"`
}