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

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 AddClientSubscriptionRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Specifies the subscription.
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`

	// Service quality. valid values: 0, 1, 2.
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`
}

type AddClientSubscriptionRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Specifies the subscription.
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`

	// Service quality. valid values: 0, 1, 2.
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`
}

func (r *AddClientSubscriptionRequest) 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 *AddClientSubscriptionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "ClientId")
	delete(f, "TopicFilter")
	delete(f, "Qos")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddClientSubscriptionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *AddClientSubscriptionResponse) 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 *AddClientSubscriptionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type AuthorizationPolicyItem struct {
	// Policy rule ID.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// MQTT cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the policy rule name.
	PolicyName *string `json:"PolicyName,omitnil,omitempty" name:"PolicyName"`

	// Rule syntax version. currently only support 1. defaults to 1.
	Version *int64 `json:"Version,omitnil,omitempty" name:"Version"`

	// Policy priority. a smaller priority ID indicates the policy takes effect with higher priority. see [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Specifies the decision.
	// allow specifies permission for access requests from devices that match this policy.
	// deny: denies access requests to the device that override the policy.
	// Refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Effect *string `json:"Effect,omitnil,omitempty" name:"Effect"`

	// Operation.
	// Specifies the connection.
	// Publishes an mqtt message.
	// Sub. specifies the subscription to mqtt messages.
	// Refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Resource. see the data plane authorization policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Resources *string `json:"Resources,omitnil,omitempty" name:"Resources"`

	// Specifies the device ID for connection. refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Condition - username. refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

	// Specifies the client IP address. see the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Condition - service quality. see the data plane authorization policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Condition - message retention. refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	// Indicates the match of retain messages.
	// 2: indicates non-retain messages.
	// 3: indicates matching retain and non-retain messages.
	Retain *int64 `json:"Retain,omitnil,omitempty" name:"Retain"`

	// Specifies the remark with length not exceeding 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Creation time. millisecond-level timestamp.
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Update time. millisecond-level timestamp.
	UpdateTime *int64 `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`
}

type AuthorizationPolicyPriority struct {
	// Specifies the authorization policy rule id, which can be obtained from the DescribeAuthorizationPolicies api (https://www.tencentcloud.com/document/api/1778/111074?from_cn_redirect=1).
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Priority
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`
}

// Predefined struct for user
type CreateAuthorizationPolicyRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy name, which cannot be empty, contains 3 to 64 characters, and supports chinese, letters, digits, "-", and "_".
	PolicyName *string `json:"PolicyName,omitnil,omitempty" name:"PolicyName"`

	// Policy version, defaults to 1. currently only support 1.
	PolicyVersion *int64 `json:"PolicyVersion,omitnil,omitempty" name:"PolicyVersion"`

	// Policy priority. a smaller value indicates higher priority and must be unique. a smaller priority ID means the policy takes effect with higher priority. see [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Specifies the decision.
	// allow specifies permission for access requests from devices that match this policy.
	// deny: denies access requests to the device that override the policy.
	// Refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Effect *string `json:"Effect,omitnil,omitempty" name:"Effect"`

	// Operation, supports multiple selections separated by commas. see the data plane policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	// Specifies the connection.
	// Specifies the publish action.
	// Sub. specifies the subscription.
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Condition - message retention. refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	// Matches message retention.
	// Matches non-retention messages.
	// 3. match retained and non-retained messages.
	Retain *int64 `json:"Retain,omitnil,omitempty" name:"Retain"`

	// Condition: specifies the service quality.
	// 0: at most once.
	// Minimum once.
	// 2: exactly once.
	// Refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Specifies the resource and subscription to match. supports configuration of multiple match rules, separated by commas. see the data plane authorization policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Resources *string `json:"Resources,omitnil,omitempty" name:"Resources"`

	// Specifies the condition-username.
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

	// Client ID. supports regular expressions.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Specifies the client IP address, supporting IP or CIDR. refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type CreateAuthorizationPolicyRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy name, which cannot be empty, contains 3 to 64 characters, and supports chinese, letters, digits, "-", and "_".
	PolicyName *string `json:"PolicyName,omitnil,omitempty" name:"PolicyName"`

	// Policy version, defaults to 1. currently only support 1.
	PolicyVersion *int64 `json:"PolicyVersion,omitnil,omitempty" name:"PolicyVersion"`

	// Policy priority. a smaller value indicates higher priority and must be unique. a smaller priority ID means the policy takes effect with higher priority. see [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Specifies the decision.
	// allow specifies permission for access requests from devices that match this policy.
	// deny: denies access requests to the device that override the policy.
	// Refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Effect *string `json:"Effect,omitnil,omitempty" name:"Effect"`

	// Operation, supports multiple selections separated by commas. see the data plane policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	// Specifies the connection.
	// Specifies the publish action.
	// Sub. specifies the subscription.
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Condition - message retention. refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	// Matches message retention.
	// Matches non-retention messages.
	// 3. match retained and non-retained messages.
	Retain *int64 `json:"Retain,omitnil,omitempty" name:"Retain"`

	// Condition: specifies the service quality.
	// 0: at most once.
	// Minimum once.
	// 2: exactly once.
	// Refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Specifies the resource and subscription to match. supports configuration of multiple match rules, separated by commas. see the data plane authorization policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Resources *string `json:"Resources,omitnil,omitempty" name:"Resources"`

	// Specifies the condition-username.
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

	// Client ID. supports regular expressions.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Specifies the client IP address, supporting IP or CIDR. refer to the [data plane authorization policy description](https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *CreateAuthorizationPolicyRequest) 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 *CreateAuthorizationPolicyRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "PolicyName")
	delete(f, "PolicyVersion")
	delete(f, "Priority")
	delete(f, "Effect")
	delete(f, "Actions")
	delete(f, "Retain")
	delete(f, "Qos")
	delete(f, "Resources")
	delete(f, "Username")
	delete(f, "ClientId")
	delete(f, "Ip")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateAuthorizationPolicyRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateAuthorizationPolicyResponseParams struct {
	// Cluster ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy ID
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

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

type CreateAuthorizationPolicyResponse struct {
	*tchttp.BaseResponse
	Response *CreateAuthorizationPolicyResponseParams `json:"Response"`
}

func (r *CreateAuthorizationPolicyResponse) 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 *CreateAuthorizationPolicyResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateDeviceIdentityRequestParams struct {
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// 1:ENABLED - Available (default)
	// 2: DISABLED - Unavailable
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Primary signature key. Automatically generated by the system if not provided. base64 encode is required.
	PrimaryKey *string `json:"PrimaryKey,omitnil,omitempty" name:"PrimaryKey"`

	// Secondary signature key. Automatically generated by the system if not passed. base64 encoding is required.
	SecondaryKey *string `json:"SecondaryKey,omitnil,omitempty" name:"SecondaryKey"`

	// Device id propagating properties setting
	PropagatingProperties []*PropagatingProperty `json:"PropagatingProperties,omitnil,omitempty" name:"PropagatingProperties"`
}

type CreateDeviceIdentityRequest struct {
	*tchttp.BaseRequest
	
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// 1:ENABLED - Available (default)
	// 2: DISABLED - Unavailable
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Primary signature key. Automatically generated by the system if not provided. base64 encode is required.
	PrimaryKey *string `json:"PrimaryKey,omitnil,omitempty" name:"PrimaryKey"`

	// Secondary signature key. Automatically generated by the system if not passed. base64 encoding is required.
	SecondaryKey *string `json:"SecondaryKey,omitnil,omitempty" name:"SecondaryKey"`

	// Device id propagating properties setting
	PropagatingProperties []*PropagatingProperty `json:"PropagatingProperties,omitnil,omitempty" name:"PropagatingProperties"`
}

func (r *CreateDeviceIdentityRequest) 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 *CreateDeviceIdentityRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "DeviceId")
	delete(f, "Status")
	delete(f, "PrimaryKey")
	delete(f, "SecondaryKey")
	delete(f, "PropagatingProperties")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateDeviceIdentityRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *CreateDeviceIdentityResponse) 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 *CreateDeviceIdentityResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateInstanceRequestParams struct {
	// Instance type, which needs to correspond to SkuCode. for details, see the [get MQTT product sales spec](https://www.tencentcloud.com/document/api/1778/116232?from_cn_redirect=1) api.
	// BASIC: basic edition.
	// PRO edition.
	// PLATINUM version.
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Specifies the cluster name, cannot be empty, 3-64 characters, only comprised of digits, letters, "-", and "_".
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Product specification, which must correspond to InstanceType. see the [get MQTT product sales spec](https://www.tencentcloud.com/document/api/1778/116232?from_cn_redirect=1) api to obtain details.
	SkuCode *string `json:"SkuCode,omitnil,omitempty" name:"SkuCode"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

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

	// Specifies the VPC information associated with the instance. the available VPC and SUBNET under the current user must be provided.
	VpcList []*VpcInfo `json:"VpcList,omitnil,omitempty" name:"VpcList"`

	// Whether public network access is enabled. default false (disabled).
	EnablePublic *bool `json:"EnablePublic,omitnil,omitempty" name:"EnablePublic"`

	// Public network bandwidth (unit: Mbps). this field is mandatory and must be more than 0 when EnablePublic is True.
	Bandwidth *int64 `json:"Bandwidth,omitnil,omitempty" name:"Bandwidth"`

	// Public network access allowlist. if not passed, it means deny all IP network access.
	IpRules []*IpRule `json:"IpRules,omitnil,omitempty" name:"IpRules"`

	// Whether the instance is automatically renewed (0: no auto-renewal; 1: auto-renewal). this parameter is valid only when you purchase a prepaid cluster. default value: 1 (auto-renewal).
	RenewFlag *int64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Specifies the purchase duration (measurement unit: month). this parameter is valid only when you purchase a prepaid cluster. default: 1m (month). valid values: 1-12, 24, 36, 48, 60.
	TimeSpan *int64 `json:"TimeSpan,omitnil,omitempty" name:"TimeSpan"`

	// Payment mode (0: postpaid; 1: prepaid). default: 0 (postpaid).
	PayMode *int64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`
}

type CreateInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Instance type, which needs to correspond to SkuCode. for details, see the [get MQTT product sales spec](https://www.tencentcloud.com/document/api/1778/116232?from_cn_redirect=1) api.
	// BASIC: basic edition.
	// PRO edition.
	// PLATINUM version.
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Specifies the cluster name, cannot be empty, 3-64 characters, only comprised of digits, letters, "-", and "_".
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Product specification, which must correspond to InstanceType. see the [get MQTT product sales spec](https://www.tencentcloud.com/document/api/1778/116232?from_cn_redirect=1) api to obtain details.
	SkuCode *string `json:"SkuCode,omitnil,omitempty" name:"SkuCode"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

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

	// Specifies the VPC information associated with the instance. the available VPC and SUBNET under the current user must be provided.
	VpcList []*VpcInfo `json:"VpcList,omitnil,omitempty" name:"VpcList"`

	// Whether public network access is enabled. default false (disabled).
	EnablePublic *bool `json:"EnablePublic,omitnil,omitempty" name:"EnablePublic"`

	// Public network bandwidth (unit: Mbps). this field is mandatory and must be more than 0 when EnablePublic is True.
	Bandwidth *int64 `json:"Bandwidth,omitnil,omitempty" name:"Bandwidth"`

	// Public network access allowlist. if not passed, it means deny all IP network access.
	IpRules []*IpRule `json:"IpRules,omitnil,omitempty" name:"IpRules"`

	// Whether the instance is automatically renewed (0: no auto-renewal; 1: auto-renewal). this parameter is valid only when you purchase a prepaid cluster. default value: 1 (auto-renewal).
	RenewFlag *int64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Specifies the purchase duration (measurement unit: month). this parameter is valid only when you purchase a prepaid cluster. default: 1m (month). valid values: 1-12, 24, 36, 48, 60.
	TimeSpan *int64 `json:"TimeSpan,omitnil,omitempty" name:"TimeSpan"`

	// Payment mode (0: postpaid; 1: prepaid). default: 0 (postpaid).
	PayMode *int64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`
}

func (r *CreateInstanceRequest) 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 *CreateInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceType")
	delete(f, "Name")
	delete(f, "SkuCode")
	delete(f, "Remark")
	delete(f, "TagList")
	delete(f, "VpcList")
	delete(f, "EnablePublic")
	delete(f, "Bandwidth")
	delete(f, "IpRules")
	delete(f, "RenewFlag")
	delete(f, "TimeSpan")
	delete(f, "PayMode")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateInstanceResponseParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

func (r *CreateInstanceResponse) 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 *CreateInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateMessageEnrichmentRuleRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Rule name
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Rule matching conditions in JSON format, Base64 encoding is required.
	// Creating a Billing Resource Order
	// {"clientId":"client-1","username":"client-1","topic":"home/room1"}
	// Specifies the Base64-encoded content.
	// eyJjbGllbnRJZCI6ImNsaWVudC0xIiwidXNlcm5hbWUiOiJjbGllbnQtMSIsInRvcGljIjoiaG9tZS9yb29tMSJ9
	Condition *string `json:"Condition,omitnil,omitempty" name:"Condition"`

	// Specifies the action of rule execution in JSON format, which must be Base64 encoded.
	// Creating a Billing Resource Order
	// {"messageExpiryInterval":360,"responseTopic":"replies/devices/${clientid}","correlationData":"${traceid}","userProperty":[{"key":"trace-id","value":"${traceid}"}]}
	// Specifies the BASE64-encoded value.
	// eyJtZXNzYWdlRXhwaXJ5SW50ZXJ2YWwiOjM2MCwicmVzcG9uc2VUb3BpYyI6InJlcGxpZXMvZGV2aWNlcy8ke2NsaWVudGlkfSIsImNvcnJlbGF0aW9uRGF0YSI6IiR7dHJhY2VpZH0iLCJ1c2VyUHJvcGVydHkiOlt7ImtleSI6InRyYWNlLWlkIiwidmFsdWUiOiIke3RyYWNlaWR9In1dfQ==
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Rule priority. a smaller number indicates a higher priority. high priority overwrites low-priority. the userproperty field will be merged.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Rule status. valid values: 0 (undefined), 1 (activate), 2 (deactivate). default: deactivate.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Specifies the remark with length not exceeding 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type CreateMessageEnrichmentRuleRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Rule name
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Rule matching conditions in JSON format, Base64 encoding is required.
	// Creating a Billing Resource Order
	// {"clientId":"client-1","username":"client-1","topic":"home/room1"}
	// Specifies the Base64-encoded content.
	// eyJjbGllbnRJZCI6ImNsaWVudC0xIiwidXNlcm5hbWUiOiJjbGllbnQtMSIsInRvcGljIjoiaG9tZS9yb29tMSJ9
	Condition *string `json:"Condition,omitnil,omitempty" name:"Condition"`

	// Specifies the action of rule execution in JSON format, which must be Base64 encoded.
	// Creating a Billing Resource Order
	// {"messageExpiryInterval":360,"responseTopic":"replies/devices/${clientid}","correlationData":"${traceid}","userProperty":[{"key":"trace-id","value":"${traceid}"}]}
	// Specifies the BASE64-encoded value.
	// eyJtZXNzYWdlRXhwaXJ5SW50ZXJ2YWwiOjM2MCwicmVzcG9uc2VUb3BpYyI6InJlcGxpZXMvZGV2aWNlcy8ke2NsaWVudGlkfSIsImNvcnJlbGF0aW9uRGF0YSI6IiR7dHJhY2VpZH0iLCJ1c2VyUHJvcGVydHkiOlt7ImtleSI6InRyYWNlLWlkIiwidmFsdWUiOiIke3RyYWNlaWR9In1dfQ==
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Rule priority. a smaller number indicates a higher priority. high priority overwrites low-priority. the userproperty field will be merged.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Rule status. valid values: 0 (undefined), 1 (activate), 2 (deactivate). default: deactivate.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Specifies the remark with length not exceeding 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *CreateMessageEnrichmentRuleRequest) 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 *CreateMessageEnrichmentRuleRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "RuleName")
	delete(f, "Condition")
	delete(f, "Actions")
	delete(f, "Priority")
	delete(f, "Status")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateMessageEnrichmentRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateMessageEnrichmentRuleResponseParams struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Rule ID
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

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

type CreateMessageEnrichmentRuleResponse struct {
	*tchttp.BaseResponse
	Response *CreateMessageEnrichmentRuleResponseParams `json:"Response"`
}

func (r *CreateMessageEnrichmentRuleResponse) 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 *CreateMessageEnrichmentRuleResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateUserRequestParams struct {
	// Instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username, which cannot be empty, only supports numbers, uppercase and lowercase letters, and separators ("_", "-"), and must not exceed 32 characters.
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

	// Specifies the password. if this field is empty, the backend performs default generation. when using a user-defined password, the value cannot be empty, only supports numbers, uppercase and lowercase letters, and separators ("_", "-"), and must not exceed 64 characters.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Specifies the remark with length not exceeding 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type CreateUserRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username, which cannot be empty, only supports numbers, uppercase and lowercase letters, and separators ("_", "-"), and must not exceed 32 characters.
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

	// Specifies the password. if this field is empty, the backend performs default generation. when using a user-defined password, the value cannot be empty, only supports numbers, uppercase and lowercase letters, and separators ("_", "-"), and must not exceed 64 characters.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Specifies the remark with length not exceeding 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *CreateUserRequest) 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 *CreateUserRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Username")
	delete(f, "Password")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateUserRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *CreateUserResponse) 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 *CreateUserResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteAuthorizationPolicyRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the authorization policy rule id, which can be obtained from the DescribeAuthorizationPolicies api (https://www.tencentcloud.com/document/api/1778/111074?from_cn_redirect=1).
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`
}

type DeleteAuthorizationPolicyRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the authorization policy rule id, which can be obtained from the DescribeAuthorizationPolicies api (https://www.tencentcloud.com/document/api/1778/111074?from_cn_redirect=1).
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`
}

func (r *DeleteAuthorizationPolicyRequest) 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 *DeleteAuthorizationPolicyRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Id")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteAuthorizationPolicyRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *DeleteAuthorizationPolicyResponse) 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 *DeleteAuthorizationPolicyResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteClientSubscriptionRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Specifies the subscription.
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`
}

type DeleteClientSubscriptionRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Specifies the subscription.
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`
}

func (r *DeleteClientSubscriptionRequest) 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 *DeleteClientSubscriptionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "ClientId")
	delete(f, "TopicFilter")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteClientSubscriptionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *DeleteClientSubscriptionResponse) 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 *DeleteClientSubscriptionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteDeviceIdentityRequestParams struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

type DeleteDeviceIdentityRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

func (r *DeleteDeviceIdentityRequest) 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 *DeleteDeviceIdentityRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "DeviceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteDeviceIdentityRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *DeleteDeviceIdentityResponse) 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 *DeleteDeviceIdentityResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteInstanceRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DeleteInstanceRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DeleteInstanceRequest) 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 *DeleteInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *DeleteInstanceResponse) 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 *DeleteInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteMessageEnrichmentRuleRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Message enrichment rule id.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`
}

type DeleteMessageEnrichmentRuleRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Message enrichment rule id.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`
}

func (r *DeleteMessageEnrichmentRuleRequest) 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 *DeleteMessageEnrichmentRuleRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Id")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteMessageEnrichmentRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *DeleteMessageEnrichmentRuleResponse) 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 *DeleteMessageEnrichmentRuleResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteTopicRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

type DeleteTopicRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

func (r *DeleteTopicRequest) 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 *DeleteTopicRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Topic")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteTopicRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *DeleteTopicResponse) 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 *DeleteTopicResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteUserRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

type DeleteUserRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

func (r *DeleteUserRequest) 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 *DeleteUserRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Username")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteUserRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *DeleteUserResponse) 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 *DeleteUserResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeAuthorizationPoliciesRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeAuthorizationPoliciesRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeAuthorizationPoliciesRequest) 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 *DescribeAuthorizationPoliciesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeAuthorizationPoliciesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeAuthorizationPoliciesResponseParams struct {
	// Rule
	Data []*AuthorizationPolicyItem `json:"Data,omitnil,omitempty" name:"Data"`

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

func (r *DescribeAuthorizationPoliciesResponse) 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 *DescribeAuthorizationPoliciesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClientListRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Limit on the number of clients. Maximum value: 1024. Default value: 1024.
	Number *string `json:"Number,omitnil,omitempty" name:"Number"`
}

type DescribeClientListRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Limit on the number of clients. Maximum value: 1024. Default value: 1024.
	Number *string `json:"Number,omitnil,omitempty" name:"Number"`
}

func (r *DescribeClientListRequest) 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 *DescribeClientListRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "ClientId")
	delete(f, "Number")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClientListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClientListResponseParams struct {
	// Specifies the client list.
	Clients []*MQTTClientInfo `json:"Clients,omitnil,omitempty" name:"Clients"`

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

func (r *DescribeClientListResponse) 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 *DescribeClientListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDeviceCertificateRequestParams struct {
	// The SN serial number of the device certificate is used for unique identification of a device certificate.
	DeviceCertificateSn *string `json:"DeviceCertificateSn,omitnil,omitempty" name:"DeviceCertificateSn"`

	// The instance ID of the TDMQ MQTT can be obtained from the DescribeInstanceList API or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeDeviceCertificateRequest struct {
	*tchttp.BaseRequest
	
	// The SN serial number of the device certificate is used for unique identification of a device certificate.
	DeviceCertificateSn *string `json:"DeviceCertificateSn,omitnil,omitempty" name:"DeviceCertificateSn"`

	// The instance ID of the TDMQ MQTT can be obtained from the DescribeInstanceList API or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeDeviceCertificateRequest) 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 *DescribeDeviceCertificateRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "DeviceCertificateSn")
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDeviceCertificateRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDeviceCertificateResponseParams struct {
	// Create time, millisecond-level timestamp.
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Last update time, millisecond-level timestamp.
	UpdateTime *int64 `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`

	// Certificate expiration date, millisecond-level timestamp.
	NotAfterTime *int64 `json:"NotAfterTime,omitnil,omitempty" name:"NotAfterTime"`

	// Last activation time, millisecond-level timestamp.
	LastActivationTime *int64 `json:"LastActivationTime,omitnil,omitempty" name:"LastActivationTime"`

	// Last deactivation time, millisecond-level timestamp.
	LastInactivationTime *int64 `json:"LastInactivationTime,omitnil,omitempty" name:"LastInactivationTime"`

	// Device certificate status
	// ACTIVE: Activate 
	// INACTIVE: Inactive
	// REVOKED: Revoked
	// PENDING_ACTIVATION: To be activated.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Certificate serial number
	CaSn *string `json:"CaSn,omitnil,omitempty" name:"CaSn"`

	// Certificate serial number of the device
	DeviceCertificateSn *string `json:"DeviceCertificateSn,omitnil,omitempty" name:"DeviceCertificateSn"`

	// Device certificate content
	DeviceCertificate *string `json:"DeviceCertificate,omitnil,omitempty" name:"DeviceCertificate"`

	// Device certificate common name
	DeviceCertificateCn *string `json:"DeviceCertificateCn,omitnil,omitempty" name:"DeviceCertificateCn"`

	// Certificate format, currently only support PEM format
	Format *string `json:"Format,omitnil,omitempty" name:"Format"`

	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Certificate source    
	// API: Manually register   
	// JITP: Automatic registration
	CertificateSource *string `json:"CertificateSource,omitnil,omitempty" name:"CertificateSource"`

	// Start of certificate effective time, millisecond-level timestamp.
	NotBeforeTime *int64 `json:"NotBeforeTime,omitnil,omitempty" name:"NotBeforeTime"`

	// Organization unit
	OrganizationalUnit *string `json:"OrganizationalUnit,omitnil,omitempty" name:"OrganizationalUnit"`

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

func (r *DescribeDeviceCertificateResponse) 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 *DescribeDeviceCertificateResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDeviceCertificatesRequestParams struct {
	// Tencent Cloud MQTT instance ID can be obtained from the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Support search parameter
	// Client id: Client id, obtained based on actual business operations.
	// CaSn: The SN serial number of the CA certificate belonging to it can be obtained by querying the cluster CA certificate list (https://www.tencentcloud.com/document/api/1778/116206?from_cn_redirect=1) or through business operations.
	// DeviceCertificateSn: SN serial number of the device certificate. Can be obtained from [Query Device Certificate Detail](https://www.tencentcloud.com/document/api/1778/113748?from_cn_redirect=1).
	// DeviceCertificateCn: The device certificate CN.
	// OrganizationalUnit: Cert OU
	// NotAfterEnd: Certificates with expiration time less than or equal to the specified time
	// NotAfterStart: Cert with expiration time equal to or greater than the specified time
	// Status: Device certificate status. ACTIVE (activated); INACTIVE (inactive); REVOKED (revoked); PENDING_ACTIVATION (to be activated).
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Pagination limit. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset, default 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Sorting rule
	// CREATE_TIME_DESC, descending order by creation time
	// CREATE_TIME_ASC, sort by creation time in ascending order
	// UPDATE_TIME_DESC, descending order by update time
	// UPDATE_TIME_ASC, update time in ascending order
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`
}

type DescribeDeviceCertificatesRequest struct {
	*tchttp.BaseRequest
	
	// Tencent Cloud MQTT instance ID can be obtained from the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Support search parameter
	// Client id: Client id, obtained based on actual business operations.
	// CaSn: The SN serial number of the CA certificate belonging to it can be obtained by querying the cluster CA certificate list (https://www.tencentcloud.com/document/api/1778/116206?from_cn_redirect=1) or through business operations.
	// DeviceCertificateSn: SN serial number of the device certificate. Can be obtained from [Query Device Certificate Detail](https://www.tencentcloud.com/document/api/1778/113748?from_cn_redirect=1).
	// DeviceCertificateCn: The device certificate CN.
	// OrganizationalUnit: Cert OU
	// NotAfterEnd: Certificates with expiration time less than or equal to the specified time
	// NotAfterStart: Cert with expiration time equal to or greater than the specified time
	// Status: Device certificate status. ACTIVE (activated); INACTIVE (inactive); REVOKED (revoked); PENDING_ACTIVATION (to be activated).
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Pagination limit. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset, default 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Sorting rule
	// CREATE_TIME_DESC, descending order by creation time
	// CREATE_TIME_ASC, sort by creation time in ascending order
	// UPDATE_TIME_DESC, descending order by update time
	// UPDATE_TIME_ASC, update time in ascending order
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`
}

func (r *DescribeDeviceCertificatesRequest) 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 *DescribeDeviceCertificatesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Filters")
	delete(f, "Limit")
	delete(f, "Offset")
	delete(f, "OrderBy")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDeviceCertificatesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

	// Device certificate list
	Data []*DeviceCertificateItem `json:"Data,omitnil,omitempty" name:"Data"`

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

func (r *DescribeDeviceCertificatesResponse) 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 *DescribeDeviceCertificatesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDeviceIdentitiesRequestParams struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Query start position
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Query result limit count
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribeDeviceIdentitiesRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Query start position
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Query result limit count
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

func (r *DescribeDeviceIdentitiesRequest) 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 *DescribeDeviceIdentitiesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Offset")
	delete(f, "Limit")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDeviceIdentitiesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDeviceIdentitiesResponseParams struct {
	// List of returned device identifiers
	Data []*DeviceIdentityItem `json:"Data,omitnil,omitempty" name:"Data"`

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

func (r *DescribeDeviceIdentitiesResponse) 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 *DescribeDeviceIdentitiesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDeviceIdentityRequestParams struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

type DescribeDeviceIdentityRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

func (r *DescribeDeviceIdentityRequest) 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 *DescribeDeviceIdentityRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "DeviceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDeviceIdentityRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDeviceIdentityResponseParams struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// 1:ENABLED-Available
	// 2: DISABLED - Unavailable
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Main signature key
	PrimaryKey *string `json:"PrimaryKey,omitnil,omitempty" name:"PrimaryKey"`

	// minor signature key
	SecondaryKey *string `json:"SecondaryKey,omitnil,omitempty" name:"SecondaryKey"`

	// Creation time.
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Device id spread attribute
	PropagatingProperties []*PropagatingProperty `json:"PropagatingProperties,omitnil,omitempty" name:"PropagatingProperties"`

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

func (r *DescribeDeviceIdentityResponse) 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 *DescribeDeviceIdentityResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceListRequestParams struct {
	// Query criteria list, support the following fields
	// InstanceName: Fuzzy search for cluster name
	// InstanceId: Cluster id for exact search
	// InstanceStatus: Cluster status search (RUNNING - running, CREATING - creating, MODIFYING - modifying, DELETING - deleting)
	// Note: The query condition is not effective when TagFilters is configured.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Query start position, default 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Query result limit count. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Tag filter
	TagFilters []*TagFilter `json:"TagFilters,omitnil,omitempty" name:"TagFilters"`
}

type DescribeInstanceListRequest struct {
	*tchttp.BaseRequest
	
	// Query criteria list, support the following fields
	// InstanceName: Fuzzy search for cluster name
	// InstanceId: Cluster id for exact search
	// InstanceStatus: Cluster status search (RUNNING - running, CREATING - creating, MODIFYING - modifying, DELETING - deleting)
	// Note: The query condition is not effective when TagFilters is configured.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Query start position, default 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Query result limit count. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Tag filter
	TagFilters []*TagFilter `json:"TagFilters,omitnil,omitempty" name:"TagFilters"`
}

func (r *DescribeInstanceListRequest) 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 *DescribeInstanceListRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Filters")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "TagFilters")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeInstanceListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceListResponseParams struct {
	// Total query count
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Instance list
	Data []*MQTTInstanceItem `json:"Data,omitnil,omitempty" name:"Data"`

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

func (r *DescribeInstanceListResponse) 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 *DescribeInstanceListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceRequestParams struct {
	// <p>Tencent Cloud MQTT instance ID can be obtained from the api or the console.</p>
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeInstanceRequest struct {
	*tchttp.BaseRequest
	
	// <p>Tencent Cloud MQTT instance ID can be obtained from the api or the console.</p>
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeInstanceRequest) 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 *DescribeInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceResponseParams struct {
	// <p>Instance type<br>BASIC Basic version<br>PRO Professional Edition<br>PLATINUM Platinum version</p>
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// <p>Instance ID</p>
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// <p>Instance name</p>
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// <p>Number of topics</p>
	TopicNum *int64 `json:"TopicNum,omitnil,omitempty" name:"TopicNum"`

	// <p>Maximum number of topics per instance</p>
	TopicNumLimit *int64 `json:"TopicNumLimit,omitnil,omitempty" name:"TopicNumLimit"`

	// <p>TPS throttle value</p>
	TpsLimit *int64 `json:"TpsLimit,omitnil,omitempty" name:"TpsLimit"`

	// <p>createTime, in seconds</p>
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// <p>Remarks</p>
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// <p>Instance status, RUNNING, running MAINTAINING, maintaining ABNORMAL, abnormal OVERDUE, arrears DESTROYED, deleted CREATING, creating MODIFYING, modifying CREATE_FAILURE, creation failure MODIFY_FAILURE, configuration change failed DELETING, deleting</p>
	InstanceStatus *string `json:"InstanceStatus,omitnil,omitempty" name:"InstanceStatus"`

	// <p>Instance specification</p>
	SkuCode *string `json:"SkuCode,omitnil,omitempty" name:"SkuCode"`

	// <p>Maximum number of subscriptions for a single client</p>
	MaxSubscriptionPerClient *int64 `json:"MaxSubscriptionPerClient,omitnil,omitempty" name:"MaxSubscriptionPerClient"`

	// <p>Number of authorization rule entries</p>
	AuthorizationPolicyLimit *int64 `json:"AuthorizationPolicyLimit,omitnil,omitempty" name:"AuthorizationPolicyLimit"`

	// <p>Number of clients cap</p>
	ClientNumLimit *int64 `json:"ClientNumLimit,omitnil,omitempty" name:"ClientNumLimit"`

	// <p>Client certificate registration method:<br>JITP: Automatic sign-up<br>API: Manually register through API</p>
	DeviceCertificateProvisionType *string `json:"DeviceCertificateProvisionType,omitnil,omitempty" name:"DeviceCertificateProvisionType"`

	// <p>Whether to automatically activate when automatically registering a device certificate</p>
	AutomaticActivation *bool `json:"AutomaticActivation,omitnil,omitempty" name:"AutomaticActivation"`

	// <p>Whether it is automatically renewed. Only applicable to monthly subscription clusters. 1: Automatic renewal 0: Non-automatic renewal</p>
	RenewFlag *int64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// <p>Billing mode, POSTPAID, pay-as-you-go PREPAID, annual/monthly subscription</p>
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// <p>Expiry time, millisecond-level timestamp</p>
	ExpiryTime *int64 `json:"ExpiryTime,omitnil,omitempty" name:"ExpiryTime"`

	// <p>Predestruction time, millisecond-level timestamp</p>
	DestroyTime *int64 `json:"DestroyTime,omitnil,omitempty" name:"DestroyTime"`

	// <p>TLS, one-way authentication    mTLS, mutual authentication    BYOC; one certificate per device</p>
	X509Mode *string `json:"X509Mode,omitnil,omitempty" name:"X509Mode"`

	// <p>Maximum Ca quota</p>
	MaxCaNum *int64 `json:"MaxCaNum,omitnil,omitempty" name:"MaxCaNum"`

	// <p>FPS Cert Registration Code</p>
	RegistrationCode *string `json:"RegistrationCode,omitnil,omitempty" name:"RegistrationCode"`

	// <p>Maximum number of subscriptions for a cluster</p>
	MaxSubscription *int64 `json:"MaxSubscription,omitnil,omitempty" name:"MaxSubscription"`

	// <p>Authorization policy switch</p>
	AuthorizationPolicy *bool `json:"AuthorizationPolicy,omitnil,omitempty" name:"AuthorizationPolicy"`

	// <p>Maximum limit of shared subscription groups</p>
	SharedSubscriptionGroupLimit *int64 `json:"SharedSubscriptionGroupLimit,omitnil,omitempty" name:"SharedSubscriptionGroupLimit"`

	// <p>Number limit of TopicFilter in one shared subscription group</p>
	//
	// Deprecated: MaxTopicFilterPerSharedSubscriptionGroup is deprecated.
	MaxTopicFilterPerSharedSubscriptionGroup *int64 `json:"MaxTopicFilterPerSharedSubscriptionGroup,omitnil,omitempty" name:"MaxTopicFilterPerSharedSubscriptionGroup"`

	// <p>Limit on number of auto subscription rules</p>
	AutoSubscriptionPolicyLimit *int64 `json:"AutoSubscriptionPolicyLimit,omitnil,omitempty" name:"AutoSubscriptionPolicyLimit"`

	// <p>Number limit of TopicFilter in a single auto subscription rule</p>
	MaxTopicFilterPerAutoSubscriptionPolicy *int64 `json:"MaxTopicFilterPerAutoSubscriptionPolicy,omitnil,omitempty" name:"MaxTopicFilterPerAutoSubscriptionPolicy"`

	// <p>Whether to use the default server certificate</p>
	UseDefaultServerCert *bool `json:"UseDefaultServerCert,omitnil,omitempty" name:"UseDefaultServerCert"`

	// <p>Maximum number of server CAs</p>
	TrustedCaLimit *int64 `json:"TrustedCaLimit,omitnil,omitempty" name:"TrustedCaLimit"`

	// <p>Maximum number of server certificates</p>
	ServerCertLimit *int64 `json:"ServerCertLimit,omitnil,omitempty" name:"ServerCertLimit"`

	// <p>Max level of topic prefix</p>
	TopicPrefixSlashLimit *int64 `json:"TopicPrefixSlashLimit,omitnil,omitempty" name:"TopicPrefixSlashLimit"`

	// <p>Single client send message rate limiting, unit messages/second</p>
	MessageRate *int64 `json:"MessageRate,omitnil,omitempty" name:"MessageRate"`

	// <p>Server-side tls supported protocols, separated by ",". Example: TLSv1.3,TLSv1.2,TLSv1.1,TLSv1</p>
	TransportLayerSecurity *string `json:"TransportLayerSecurity,omitnil,omitempty" name:"TransportLayerSecurity"`

	// <p>Message property enhancement rule quota</p>
	MessageEnrichmentRuleLimit *int64 `json:"MessageEnrichmentRuleLimit,omitnil,omitempty" name:"MessageEnrichmentRuleLimit"`

	// <p>Maximum allowed number of blocking rules</p>
	BlockRuleLimit *int64 `json:"BlockRuleLimit,omitnil,omitempty" name:"BlockRuleLimit"`

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

func (r *DescribeInstanceResponse) 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 *DescribeInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMessageByTopicRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// home/room
	Topic *string `json:"Topic,omitnil,omitempty" name:"Topic"`

	// Start time. millisecond-level timestamp.
	StartTime *int64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Specifies the number of query messages. value range: 1-1024. default: 100.
	MaxNumber *int64 `json:"MaxNumber,omitnil,omitempty" name:"MaxNumber"`
}

type DescribeMessageByTopicRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// home/room
	Topic *string `json:"Topic,omitnil,omitempty" name:"Topic"`

	// Start time. millisecond-level timestamp.
	StartTime *int64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Specifies the number of query messages. value range: 1-1024. default: 100.
	MaxNumber *int64 `json:"MaxNumber,omitnil,omitempty" name:"MaxNumber"`
}

func (r *DescribeMessageByTopicRequest) 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 *DescribeMessageByTopicRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Topic")
	delete(f, "StartTime")
	delete(f, "MaxNumber")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeMessageByTopicRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMessageByTopicResponseParams struct {
	// Message List
	Data []*MQTTMessage `json:"Data,omitnil,omitempty" name:"Data"`

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

func (r *DescribeMessageByTopicResponse) 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 *DescribeMessageByTopicResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMessageDetailsRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Message ID.
	MessageId *string `json:"MessageId,omitnil,omitempty" name:"MessageId"`

	// Subscription expression.
	Subscription *string `json:"Subscription,omitnil,omitempty" name:"Subscription"`
}

type DescribeMessageDetailsRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Message ID.
	MessageId *string `json:"MessageId,omitnil,omitempty" name:"MessageId"`

	// Subscription expression.
	Subscription *string `json:"Subscription,omitnil,omitempty" name:"Subscription"`
}

func (r *DescribeMessageDetailsRequest) 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 *DescribeMessageDetailsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "MessageId")
	delete(f, "Subscription")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeMessageDetailsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMessageDetailsResponseParams struct {
	// Message body.
	Body *string `json:"Body,omitnil,omitempty" name:"Body"`

	// Describes the user-customized attribute.
	UserProperties []*UserProperty `json:"UserProperties,omitnil,omitempty" name:"UserProperties"`

	// Specifies the message storage time. millisecond-level timestamp.
	StoreTimestamp *int64 `json:"StoreTimestamp,omitnil,omitempty" name:"StoreTimestamp"`

	// Message ID.
	MessageId *string `json:"MessageId,omitnil,omitempty" name:"MessageId"`

	// Producer address.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Topic
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Specifies the source topic.
	OriginTopic *string `json:"OriginTopic,omitnil,omitempty" name:"OriginTopic"`

	// Content type (MQTT5).
	// Indicates the content type of the message payload using standard MIME type format. helps the receiver correctly parse and process the message content.
	// Specifies the example.
	// application/json: indicates the payload is data in json format.
	// Text/Plain: indicates the payload is plain text.
	// application/octet-stream: indicates the payload is binary data.
	ContentType *string `json:"ContentType,omitnil,omitempty" name:"ContentType"`

	// Payload format indicator (MQTT5).
	// Indicates the payload format, which is a boolean value. 0 means an unspecified format (binary), and 1 means a UTF-8 encoded string.
	// Specifies the example.
	// Valid values: 0 indicates the payload is binary data, such as images or audio.
	// Valid value 1: when the payload is UTF-8 encoded text, such as JSON string or XML.
	PayloadFormatIndicator *int64 `json:"PayloadFormatIndicator,omitnil,omitempty" name:"PayloadFormatIndicator"`

	// Message expiration interval (MQTT5).
	// Specifies the validity time (in seconds) of the specified message before it is discarded. if the message fails to reach the MQTT server before expiration, it will be discarded.
	// Specifies the example.
	// The value 60 indicates that the message is valid within 60 seconds after release. unreached messages will be dropped after expiry.
	// A value of 0 indicates the message never expires and remains permanently valid until received or the session ends.
	MessageExpiryInterval *int64 `json:"MessageExpiryInterval,omitnil,omitempty" name:"MessageExpiryInterval"`

	// Response topic (MQTT5).
	// Specifies a topic for the response message in request-response mode. the sender can specify which topic the recipient should send the response to.
	// Specifies the example.
	// Sender publishes a request to the topic devices/device1/commands and sets ResponseTopic to devices/device1/responses.
	// Specifies the topic where the response is published after the recipient processes the request.
	ResponseTopic *string `json:"ResponseTopic,omitnil,omitempty" name:"ResponseTopic"`

	// Associated data (MQTT5).
	// Specifies the identifier used to associate a request and response, usually a byte array. in request-response mode, the sender sets this value, and the recipient includes the same value in the response so that the sender can identify the corresponding request.
	// Specifies the example.
	// The sender generates a unique ID (such as a byte[] of UUID) as CorrelationData and adds it to the request message.
	// The recipient includes the same CorrelationData in the response message. the sender compares this value to match the response and the request.
	CorrelationData *string `json:"CorrelationData,omitnil,omitempty" name:"CorrelationData"`

	// Subscription identifier (MQTT5).
	// Specifies the unique identifier assigned to the subscription, used to identify a specific subscription of the client. when sending a message to the client, the server can include this identifier to help with client identification of the corresponding subscription.
	// Specifies the example.
	// The client subscribes to the topic devices/+/temperature and sets SubscriptionIdentifier to 123.
	// When the server sends a message of this topic to the client, the message will contain SubscriptionIdentifier: 123. the client can know which subscription the message is sent through based on this value.
	SubscriptionIdentifier *string `json:"SubscriptionIdentifier,omitnil,omitempty" name:"SubscriptionIdentifier"`

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

func (r *DescribeMessageDetailsResponse) 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 *DescribeMessageDetailsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMessageEnrichmentRulesRequestParams struct {
	// Tencent cloud MQTT instance ID, obtained from the DescribeInstanceList API or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeMessageEnrichmentRulesRequest struct {
	*tchttp.BaseRequest
	
	// Tencent cloud MQTT instance ID, obtained from the DescribeInstanceList API or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeMessageEnrichmentRulesRequest) 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 *DescribeMessageEnrichmentRulesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeMessageEnrichmentRulesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMessageEnrichmentRulesResponseParams struct {
	// Message enrichment rule.
	Data []*MessageEnrichmentRuleItem `json:"Data,omitnil,omitempty" name:"Data"`

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

func (r *DescribeMessageEnrichmentRulesResponse) 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 *DescribeMessageEnrichmentRulesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeProductSKUListRequestParams struct {

}

type DescribeProductSKUListRequest struct {
	*tchttp.BaseRequest
	
}

func (r *DescribeProductSKUListRequest) 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 *DescribeProductSKUListRequest) 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", "DescribeProductSKUListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeProductSKUListResponseParams struct {
	// Total query count
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// MQTT product configuration information.
	MQTTProductSkuList []*ProductSkuItem `json:"MQTTProductSkuList,omitnil,omitempty" name:"MQTTProductSkuList"`

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

func (r *DescribeProductSKUListResponse) 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 *DescribeProductSKUListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSharedSubscriptionClientRequestParams struct {
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Shared subscription group name
	SharedName *string `json:"SharedName,omitnil,omitempty" name:"SharedName"`

	// Subscription expression.
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`
}

type DescribeSharedSubscriptionClientRequest struct {
	*tchttp.BaseRequest
	
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Shared subscription group name
	SharedName *string `json:"SharedName,omitnil,omitempty" name:"SharedName"`

	// Subscription expression.
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`
}

func (r *DescribeSharedSubscriptionClientRequest) 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 *DescribeSharedSubscriptionClientRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "SharedName")
	delete(f, "TopicFilter")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeSharedSubscriptionClientRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSharedSubscriptionClientResponseParams struct {
	// Shared subscription group Client info
	Data []*SharedSubscriptionClient `json:"Data,omitnil,omitempty" name:"Data"`

	// Total query count
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type DescribeSharedSubscriptionClientResponse struct {
	*tchttp.BaseResponse
	Response *DescribeSharedSubscriptionClientResponseParams `json:"Response"`
}

func (r *DescribeSharedSubscriptionClientResponse) 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 *DescribeSharedSubscriptionClientResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSharedSubscriptionGroupsRequestParams struct {
	// Tencent Cloud MQTT instance ID can be obtained from the DescribeInstanceList api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeSharedSubscriptionGroupsRequest struct {
	*tchttp.BaseRequest
	
	// Tencent Cloud MQTT instance ID can be obtained from the DescribeInstanceList api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeSharedSubscriptionGroupsRequest) 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 *DescribeSharedSubscriptionGroupsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeSharedSubscriptionGroupsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSharedSubscriptionGroupsResponseParams struct {
	// Subscription group list shared within the cluster
	Data []*SharedGroup `json:"Data,omitnil,omitempty" name:"Data"`

	// 	Total query count
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type DescribeSharedSubscriptionGroupsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeSharedSubscriptionGroupsResponseParams `json:"Response"`
}

func (r *DescribeSharedSubscriptionGroupsResponse) 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 *DescribeSharedSubscriptionGroupsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSharedSubscriptionsRequestParams struct {
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Shared subscription group name
	SharedName *string `json:"SharedName,omitnil,omitempty" name:"SharedName"`
}

type DescribeSharedSubscriptionsRequest struct {
	*tchttp.BaseRequest
	
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Shared subscription group name
	SharedName *string `json:"SharedName,omitnil,omitempty" name:"SharedName"`
}

func (r *DescribeSharedSubscriptionsRequest) 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 *DescribeSharedSubscriptionsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "SharedName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeSharedSubscriptionsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSharedSubscriptionsResponseParams struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Shared group name
	SharedName *string `json:"SharedName,omitnil,omitempty" name:"SharedName"`

	// Expression list of subscriptions under the shared group
	TopicFilter []*string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`

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

func (r *DescribeSharedSubscriptionsResponse) 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 *DescribeSharedSubscriptionsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTopicRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

type DescribeTopicRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

func (r *DescribeTopicRequest) 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 *DescribeTopicRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Topic")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTopicRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeTopicResponseParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

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

	// Creation time, in seconds
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

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

func (r *DescribeTopicResponse) 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 *DescribeTopicResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeUserListRequestParams struct {
	// Instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the supported fields in the query criteria list.
	// Username: specifies the Username for filtering, supports fuzzy filtering. type: String.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Query start position. default value: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Specifies the query result limit count. default value: 20. maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribeUserListRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the supported fields in the query criteria list.
	// Username: specifies the Username for filtering, supports fuzzy filtering. type: String.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Query start position. default value: 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Specifies the query result limit count. default value: 20. maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

func (r *DescribeUserListRequest) 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 *DescribeUserListRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Filters")
	delete(f, "Offset")
	delete(f, "Limit")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeUserListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeUserListResponseParams struct {
	// Total query count
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Role information list
	Data []*MQTTUserItem `json:"Data,omitnil,omitempty" name:"Data"`

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

func (r *DescribeUserListResponse) 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 *DescribeUserListResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type DeviceCertificateItem struct {
	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// device certificate
	DeviceCertificate *string `json:"DeviceCertificate,omitnil,omitempty" name:"DeviceCertificate"`

	// Device certificate SN serial number, used for unique identification of a device certificate
	DeviceCertificateSn *string `json:"DeviceCertificateSn,omitnil,omitempty" name:"DeviceCertificateSn"`

	// Device certificate Cn
	DeviceCertificateCn *string `json:"DeviceCertificateCn,omitnil,omitempty" name:"DeviceCertificateCn"`

	// Serial number of the CA cert that issued the cert
	CaSn *string `json:"CaSn,omitnil,omitempty" name:"CaSn"`

	// Certificate format, currently only support PEM
	Format *string `json:"Format,omitnil,omitempty" name:"Format"`

	// Device certificate status
	// ACTIVE: Activate
	// INACTIVE: Inactive
	// REVOKED: Revoked
	// PENDING_ACTIVATION: To be activated.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Organization unit
	OrganizationalUnit *string `json:"OrganizationalUnit,omitnil,omitempty" name:"OrganizationalUnit"`

	// Last activation time, millisecond-level timestamp.
	LastActivationTime *int64 `json:"LastActivationTime,omitnil,omitempty" name:"LastActivationTime"`

	// Last cancellation activation time, millisecond-level timestamp.
	LastInactivationTime *int64 `json:"LastInactivationTime,omitnil,omitempty" name:"LastInactivationTime"`

	// createTime, millisecond-level timestamp.
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Update time, millisecond-level timestamp.
	UpdateTime *int64 `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`

	// Certificate source:
	// API, Manual Registration   
	// Automatic JITP registration
	CertificateSource *string `json:"CertificateSource,omitnil,omitempty" name:"CertificateSource"`

	// Certificate expiration date, millisecond-level timestamp.
	NotAfterTime *int64 `json:"NotAfterTime,omitnil,omitempty" name:"NotAfterTime"`

	// Start date when the certificate takes effect, millisecond-level timestamp.
	NotBeforeTime *int64 `json:"NotBeforeTime,omitnil,omitempty" name:"NotBeforeTime"`
}

type DeviceIdentityItem struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// 1: ENABLED - Available 2: DISABLED - Unavailable
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Primary signature key. Automatically generated by the system if not provided.
	PrimaryKey *string `json:"PrimaryKey,omitnil,omitempty" name:"PrimaryKey"`

	// Secondary signature key. Automatically generated by the system if not passed.
	SecondaryKey *string `json:"SecondaryKey,omitnil,omitempty" name:"SecondaryKey"`

	// Creation time.
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Spread attribute list
	PropagatingProperties []*PropagatingProperty `json:"PropagatingProperties,omitnil,omitempty" name:"PropagatingProperties"`
}

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

	// Filter criterion value
	Values []*string `json:"Values,omitnil,omitempty" name:"Values"`
}

type IpRule struct {
	// IP address.
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Currently only support allowed by default.
	Allow *bool `json:"Allow,omitnil,omitempty" name:"Allow"`

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

// Predefined struct for user
type KickOutClientRequestParams struct {
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`
}

type KickOutClientRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Client ID.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`
}

func (r *KickOutClientRequest) 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 *KickOutClientRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "ClientId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "KickOutClientRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *KickOutClientResponse) 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 *KickOutClientResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type MQTTClientInfo struct {
	// Client ID
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Client network address.
	ClientAddress *string `json:"ClientAddress,omitnil,omitempty" name:"ClientAddress"`

	// MQTT protocol version.
	// 3: indicates MQTT version 3.1.
	// 4: indicates MQTT 3.1.1.
	// 5: indicates the MQTT 5.0 protocol.
	ProtocolVersion *int64 `json:"ProtocolVersion,omitnil,omitempty" name:"ProtocolVersion"`

	// Keep-alive duration. Unit: second.
	Keepalive *int64 `json:"Keepalive,omitnil,omitempty" name:"Keepalive"`

	// Connection status. CONNECTED: connected; DISCONNECTED: not connected.
	ConnectionStatus *string `json:"ConnectionStatus,omitnil,omitempty" name:"ConnectionStatus"`

	// Client creation time. millisecond-level timestamp.
	CreateTime *int64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Last connection establishment time. millisecond-level timestamp.
	ConnectTime *int64 `json:"ConnectTime,omitnil,omitempty" name:"ConnectTime"`

	// Last disconnection time, only applicable to persistent sessions (cleanSession=false) and when the client is currently disconnected, millisecond-level timestamp.
	DisconnectTime *int64 `json:"DisconnectTime,omitnil,omitempty" name:"DisconnectTime"`

	// Client subscription list.
	MQTTClientSubscriptions []*MQTTClientSubscription `json:"MQTTClientSubscriptions,omitnil,omitempty" name:"MQTTClientSubscriptions"`
}

type MQTTClientSubscription struct {
	// Subscribed topic.
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`

	// Service quality grade.
	// Up to once.
	// At least once.
	// Exactly once.
	Qos *int64 `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Indicates the heaped messages.
	Lag *int64 `json:"Lag,omitnil,omitempty" name:"Lag"`

	// Unconfirmed delivery count.
	Inflight *int64 `json:"Inflight,omitnil,omitempty" name:"Inflight"`

	// Describes the user attribute.
	UserProperties []*SubscriptionUserProperty `json:"UserProperties,omitnil,omitempty" name:"UserProperties"`
}

type MQTTInstanceItem struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// Instance version
	Version *string `json:"Version,omitnil,omitempty" name:"Version"`

	// Instance type
	// BASIC, basic version
	// PRO, Professional Edition
	// PLATINUM, platinum version
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Instance status
	// RUNNING: running.
	// MAINTAINING
	// ABNORMAL
	// OVERDUE, arrears
	// CREATING
	// MODIFYING, Modifying configuration in progress
	// Creation failed
	// MODIFY_FAILURE, configuration change failed
	// DELETING: Deleting
	InstanceStatus *string `json:"InstanceStatus,omitnil,omitempty" name:"InstanceStatus"`

	// Maximum number of instance topics
	TopicNumLimit *int64 `json:"TopicNumLimit,omitnil,omitempty" name:"TopicNumLimit"`

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

	// Number of topics
	TopicNum *int64 `json:"TopicNum,omitnil,omitempty" name:"TopicNum"`

	// Product specification
	SkuCode *string `json:"SkuCode,omitnil,omitempty" name:"SkuCode"`

	// Elastic TPS throttle value
	TpsLimit *int64 `json:"TpsLimit,omitnil,omitempty" name:"TpsLimit"`

	// Creation time, with a millisecond-level timestamp.
	CreateTime *int64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Maximum number of subscriptions for a single client
	MaxSubscriptionPerClient *int64 `json:"MaxSubscriptionPerClient,omitnil,omitempty" name:"MaxSubscriptionPerClient"`

	// Maximum number of client connections.
	ClientNumLimit *int64 `json:"ClientNumLimit,omitnil,omitempty" name:"ClientNumLimit"`

	// Whether it is automatically renewed. Only applicable to monthly subscription clusters.
	// 1: Automatic renewal
	// Non-automatic renewal
	RenewFlag *int64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Billing mode, POSTPAID, pay-as-you-go PREPAID, annual/monthly subscription
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Expiry time, millisecond-level timestamp
	ExpiryTime *int64 `json:"ExpiryTime,omitnil,omitempty" name:"ExpiryTime"`

	// Predestruction time, millisecond-level timestamp
	DestroyTime *int64 `json:"DestroyTime,omitnil,omitempty" name:"DestroyTime"`

	// Number of authorization rule entries limit
	AuthorizationPolicyLimit *int64 `json:"AuthorizationPolicyLimit,omitnil,omitempty" name:"AuthorizationPolicyLimit"`

	// Maximum ca quota
	MaxCaNum *int64 `json:"MaxCaNum,omitnil,omitempty" name:"MaxCaNum"`

	// Maximum number of subscriptions
	MaxSubscription *int64 `json:"MaxSubscription,omitnil,omitempty" name:"MaxSubscription"`

	// Maximum limit of shared subscription groups
	SharedSubscriptionGroupLimit *int64 `json:"SharedSubscriptionGroupLimit,omitnil,omitempty" name:"SharedSubscriptionGroupLimit"`

	// Number limit of TopicFilter in one shared subscription group
	MaxTopicFilterPerSharedSubscriptionGroup *int64 `json:"MaxTopicFilterPerSharedSubscriptionGroup,omitnil,omitempty" name:"MaxTopicFilterPerSharedSubscriptionGroup"`

	// Limit on number of auto subscription rules
	AutoSubscriptionPolicyLimit *int64 `json:"AutoSubscriptionPolicyLimit,omitnil,omitempty" name:"AutoSubscriptionPolicyLimit"`

	// Number limit of TopicFilter in a single auto subscription rule
	MaxTopicFilterPerAutoSubscriptionPolicy *int64 `json:"MaxTopicFilterPerAutoSubscriptionPolicy,omitnil,omitempty" name:"MaxTopicFilterPerAutoSubscriptionPolicy"`
}

type MQTTMessage struct {
	// Message ID
	MessageId *string `json:"MessageId,omitnil,omitempty" name:"MessageId"`

	// Client Id of the message sender.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Message service quality grade.
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Message storage time on the server. millisecond-level timestamp.
	StoreTimestamp *int64 `json:"StoreTimestamp,omitnil,omitempty" name:"StoreTimestamp"`

	// Specifies the source topic.
	OriginTopic *string `json:"OriginTopic,omitnil,omitempty" name:"OriginTopic"`
}

type MQTTUserItem struct {
	// Username.
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

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

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

	// Creation time. millisecond-level timestamp.
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Modification time. millisecond-level timestamp.
	ModifiedTime *int64 `json:"ModifiedTime,omitnil,omitempty" name:"ModifiedTime"`
}

type MessageEnrichmentRuleItem struct {
	// Rule ID.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// MQTT cluster ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the rule name.
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Rule matching conditions, in JSON format, must be Base64-encoded. 
	// Specifies the client id, username, and topic. example: {"clientId":"client-1","username":"client-1","topic":"home/room1"}.
	// Specifies the Base64-encoded string "eyJjbGllbnRJZCI6ImNsaWVudC0xIiwidXNlcm5hbWUiOiJjbGllbnQtMSIsInRvcGljIjoiaG9tZS9yb29tMSJ9".
	Condition *string `json:"Condition,omitnil,omitempty" name:"Condition"`

	// Specifies the action of rule execution in JSON format, which must be Base64 encoded.
	//  Creating a Billing Resource Order
	// {"messageExpiryInterval":360,"response Topic":"replies/devices/${clientid}","correlationData":"${traceid}","userProperty":[{"key":"trace-id","value":"${traceid}"},{"key":"data-source","value":"rule-engine"}]}
	// Specifies the BASE64-encoded string "eyJtZXNzYWdlRXhwaXJ5SW50ZXJ2YWwiOjM2MCwicmVzcG9uc2UgVG9waWMiOiJyZXBsaWVzL2RldmljZXMvJHtjbGllbnRpZH0iLCJjb3JyZWxhdGlvbkRhdGEiOiIke3RyYWNlaWR9IiwidXNlclByb3BlcnR5IjpbeyJrZXkiOiJ0cmFjZS1pZCIsInZhbHVlIjoiJHt0cmFjZWlkfSJ9LHsia2V5IjoiZGF0YS1zb3VyY2UiLCJ2YWx1ZSI6InJ1bGUtZW5naW5lIn1dfQ==".
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Rule priority. a smaller number indicates a higher priority. high priority overrides low priority. the UserProperty field will be merged.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Rule status. valid values: 0 (undefined), 1 (activate), 2 (deactivate). default: deactivate.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

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

	// Creation time. millisecond-level timestamp.
	CreatedTime *int64 `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Update time. millisecond-level timestamp.
	UpdateTime *int64 `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`
}

type MessageEnrichmentRulePriority struct {
	// Message enrichment rule id.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Priority
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`
}

// Predefined struct for user
type ModifyAuthorizationPolicyRequestParams struct {
	// Specifies the authorization policy ID, which can be obtained from the query authorization policy API (https://www.tencentcloud.com/document/product/1778/111074?from_cn_redirect=1).
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy name, which cannot be empty, contains 3 to 64 characters, and supports chinese, letters, digits, "-", and "_".
	PolicyName *string `json:"PolicyName,omitnil,omitempty" name:"PolicyName"`

	// Policy version, defaults to 1. currently only support 1.
	PolicyVersion *int64 `json:"PolicyVersion,omitnil,omitempty" name:"PolicyVersion"`

	// Policy priority. a smaller value indicates a higher priority. must be unique.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Specifies the decision.
	// allow. specifies the permission.
	// Denies.
	Effect *string `json:"Effect,omitnil,omitempty" name:"Effect"`

	// Operation, supports multiple selections separated by commas. see the data plane policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	// Specifies the connection.
	// Specifies the publish action.
	// Sub. specifies the subscription.
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Specifies the resource and subscription to match. supports configuration of multiple match rules, separated by commas. see the data plane authorization policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Resources *string `json:"Resources,omitnil,omitempty" name:"Resources"`

	// Specifies the condition-username.
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

	// Condition - message retention.
	// Matches message retention.
	// Matches non-retention messages.
	// 3. match retained and non-retained messages.
	Retain *int64 `json:"Retain,omitnil,omitempty" name:"Retain"`

	// Client ID. supports regular expressions.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Condition: client IP address. supports IP or CIDR.
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Condition: specifies the service quality.
	// 0: at most once.
	// Minimum once.
	// 2: exactly once.
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type ModifyAuthorizationPolicyRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the authorization policy ID, which can be obtained from the query authorization policy API (https://www.tencentcloud.com/document/product/1778/111074?from_cn_redirect=1).
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy name, which cannot be empty, contains 3 to 64 characters, and supports chinese, letters, digits, "-", and "_".
	PolicyName *string `json:"PolicyName,omitnil,omitempty" name:"PolicyName"`

	// Policy version, defaults to 1. currently only support 1.
	PolicyVersion *int64 `json:"PolicyVersion,omitnil,omitempty" name:"PolicyVersion"`

	// Policy priority. a smaller value indicates a higher priority. must be unique.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Specifies the decision.
	// allow. specifies the permission.
	// Denies.
	Effect *string `json:"Effect,omitnil,omitempty" name:"Effect"`

	// Operation, supports multiple selections separated by commas. see the data plane policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	// Specifies the connection.
	// Specifies the publish action.
	// Sub. specifies the subscription.
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Specifies the resource and subscription to match. supports configuration of multiple match rules, separated by commas. see the data plane authorization policy description (https://www.tencentcloud.com/document/product/1778/109715?from_cn_redirect=1).
	Resources *string `json:"Resources,omitnil,omitempty" name:"Resources"`

	// Specifies the condition-username.
	Username *string `json:"Username,omitnil,omitempty" name:"Username"`

	// Condition - message retention.
	// Matches message retention.
	// Matches non-retention messages.
	// 3. match retained and non-retained messages.
	Retain *int64 `json:"Retain,omitnil,omitempty" name:"Retain"`

	// Client ID. supports regular expressions.
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Condition: client IP address. supports IP or CIDR.
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Condition: specifies the service quality.
	// 0: at most once.
	// Minimum once.
	// 2: exactly once.
	Qos *string `json:"Qos,omitnil,omitempty" name:"Qos"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *ModifyAuthorizationPolicyRequest) 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 *ModifyAuthorizationPolicyRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Id")
	delete(f, "InstanceId")
	delete(f, "PolicyName")
	delete(f, "PolicyVersion")
	delete(f, "Priority")
	delete(f, "Effect")
	delete(f, "Actions")
	delete(f, "Resources")
	delete(f, "Username")
	delete(f, "Retain")
	delete(f, "ClientId")
	delete(f, "Ip")
	delete(f, "Qos")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyAuthorizationPolicyRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *ModifyAuthorizationPolicyResponse) 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 *ModifyAuthorizationPolicyResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDeviceIdentityRequestParams struct {
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// 1:ENABLED-Available
	// 2: DISABLED - Unavailable
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Primary signature key, Base64 encode is required.
	PrimaryKey *string `json:"PrimaryKey,omitnil,omitempty" name:"PrimaryKey"`

	// Secondary signature key, must be Base64 encoded.
	SecondaryKey *string `json:"SecondaryKey,omitnil,omitempty" name:"SecondaryKey"`

	// Device id spread attribute setting	
	PropagatingProperties []*PropagatingProperty `json:"PropagatingProperties,omitnil,omitempty" name:"PropagatingProperties"`
}

type ModifyDeviceIdentityRequest struct {
	*tchttp.BaseRequest
	
	// Tencent Cloud MQTT instance ID can be obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or the console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// 1:ENABLED-Available
	// 2: DISABLED - Unavailable
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Primary signature key, Base64 encode is required.
	PrimaryKey *string `json:"PrimaryKey,omitnil,omitempty" name:"PrimaryKey"`

	// Secondary signature key, must be Base64 encoded.
	SecondaryKey *string `json:"SecondaryKey,omitnil,omitempty" name:"SecondaryKey"`

	// Device id spread attribute setting	
	PropagatingProperties []*PropagatingProperty `json:"PropagatingProperties,omitnil,omitempty" name:"PropagatingProperties"`
}

func (r *ModifyDeviceIdentityRequest) 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 *ModifyDeviceIdentityRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "DeviceId")
	delete(f, "Status")
	delete(f, "PrimaryKey")
	delete(f, "SecondaryKey")
	delete(f, "PropagatingProperties")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyDeviceIdentityRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *ModifyDeviceIdentityResponse) 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 *ModifyDeviceIdentityResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyInstanceRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the instance name to be modified, cannot be empty, 3-64 characters, only comprised of digits, letters, "-", and "_".
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Specifies the remark information to be modified, with a maximum of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Specifies the configuration specification to be changed.
	// Basic version and professional edition clusters cannot be upgraded to platinum version specifications. platinum edition clusters cannot be downgraded to basic version and enhanced specifications.
	SkuCode *string `json:"SkuCode,omitnil,omitempty" name:"SkuCode"`

	// Specifies the registration method for the client certificate.
	// JITP: automatically register.
	// API: register manually through api.
	//
	// Deprecated: DeviceCertificateProvisionType is deprecated.
	DeviceCertificateProvisionType *string `json:"DeviceCertificateProvisionType,omitnil,omitempty" name:"DeviceCertificateProvisionType"`

	// Specifies whether to automatically activate the cert after automatic registration.
	//
	// Deprecated: AutomaticActivation is deprecated.
	AutomaticActivation *bool `json:"AutomaticActivation,omitnil,omitempty" name:"AutomaticActivation"`

	// Authorization policy switch.
	AuthorizationPolicy *bool `json:"AuthorizationPolicy,omitnil,omitempty" name:"AuthorizationPolicy"`

	// Specifies whether to use the default server certificate.
	UseDefaultServerCert *bool `json:"UseDefaultServerCert,omitnil,omitempty" name:"UseDefaultServerCert"`

	// TLS: one-way authentication.
	// mTLS. specifies mutual authentication.
	// BYOC: one device, one certificate.
	X509Mode *string `json:"X509Mode,omitnil,omitempty" name:"X509Mode"`

	// Specifies the speed limit unit for client message send and receive in messages per second.
	MessageRate *int64 `json:"MessageRate,omitnil,omitempty" name:"MessageRate"`
}

type ModifyInstanceRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the instance name to be modified, cannot be empty, 3-64 characters, only comprised of digits, letters, "-", and "_".
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Specifies the remark information to be modified, with a maximum of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Specifies the configuration specification to be changed.
	// Basic version and professional edition clusters cannot be upgraded to platinum version specifications. platinum edition clusters cannot be downgraded to basic version and enhanced specifications.
	SkuCode *string `json:"SkuCode,omitnil,omitempty" name:"SkuCode"`

	// Specifies the registration method for the client certificate.
	// JITP: automatically register.
	// API: register manually through api.
	DeviceCertificateProvisionType *string `json:"DeviceCertificateProvisionType,omitnil,omitempty" name:"DeviceCertificateProvisionType"`

	// Specifies whether to automatically activate the cert after automatic registration.
	AutomaticActivation *bool `json:"AutomaticActivation,omitnil,omitempty" name:"AutomaticActivation"`

	// Authorization policy switch.
	AuthorizationPolicy *bool `json:"AuthorizationPolicy,omitnil,omitempty" name:"AuthorizationPolicy"`

	// Specifies whether to use the default server certificate.
	UseDefaultServerCert *bool `json:"UseDefaultServerCert,omitnil,omitempty" name:"UseDefaultServerCert"`

	// TLS: one-way authentication.
	// mTLS. specifies mutual authentication.
	// BYOC: one device, one certificate.
	X509Mode *string `json:"X509Mode,omitnil,omitempty" name:"X509Mode"`

	// Specifies the speed limit unit for client message send and receive in messages per second.
	MessageRate *int64 `json:"MessageRate,omitnil,omitempty" name:"MessageRate"`
}

func (r *ModifyInstanceRequest) 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 *ModifyInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Name")
	delete(f, "Remark")
	delete(f, "SkuCode")
	delete(f, "DeviceCertificateProvisionType")
	delete(f, "AutomaticActivation")
	delete(f, "AuthorizationPolicy")
	delete(f, "UseDefaultServerCert")
	delete(f, "X509Mode")
	delete(f, "MessageRate")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *ModifyInstanceResponse) 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 *ModifyInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyMessageEnrichmentRuleRequestParams struct {
	// Message enrichment rule ID.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Rule name, which cannot be empty, contains 3 to 64 characters, and supports chinese, letters, digits, "-", and "_".
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Rule matching conditions in JSON format, Base64 encoding is required.
	// Creating a Billing Resource Order
	// {"clientId":"client-1","username":"client-1","topic":"home/room1"}
	// Specifies the Base64-encoded content.
	// eyJjbGllbnRJZCI6ImNsaWVudC0xIiwidXNlcm5hbWUiOiJjbGllbnQtMSIsInRvcGljIjoiaG9tZS9yb29tMSJ9
	Condition *string `json:"Condition,omitnil,omitempty" name:"Condition"`

	// Specifies the action of rule execution in JSON format, which must be Base64 encoded. 
	// Creating a Billing Resource Order
	// {"messageExpiryInterval":360,"responseTopic":"replies/${clientid}","correlationData":"${traceid}","userProperty":[{"key":"trace-id","value":"${traceid}"}]}
	// Specifies the BASE64-encoded string eyJtZXNzYWdlRXhwaXJ5SW50ZXJ2YWwiOjM2MCwicmVzcG9uc2VUb3BpYyI6InJlcGxpZXMvJHtjbGllbnRpZH0iLCJjb3JyZWxhdGlvbkRhdGEiOiIke3RyYWNlaWR9IiwidXNlclByb3BlcnR5IjpbeyJrZXkiOiJ0cmFjZS1pZCIsInZhbHVlIjoiJHt0cmFjZWlkfSJ9XX0=.
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Rule priority. a smaller number indicates a higher priority. high priority overrides low priority. the UserProperty field will be merged.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Rule status. valid values: 0 (undefined), 1 (activate), 2 (deactivate). default: deactivate.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type ModifyMessageEnrichmentRuleRequest struct {
	*tchttp.BaseRequest
	
	// Message enrichment rule ID.
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Rule name, which cannot be empty, contains 3 to 64 characters, and supports chinese, letters, digits, "-", and "_".
	RuleName *string `json:"RuleName,omitnil,omitempty" name:"RuleName"`

	// Rule matching conditions in JSON format, Base64 encoding is required.
	// Creating a Billing Resource Order
	// {"clientId":"client-1","username":"client-1","topic":"home/room1"}
	// Specifies the Base64-encoded content.
	// eyJjbGllbnRJZCI6ImNsaWVudC0xIiwidXNlcm5hbWUiOiJjbGllbnQtMSIsInRvcGljIjoiaG9tZS9yb29tMSJ9
	Condition *string `json:"Condition,omitnil,omitempty" name:"Condition"`

	// Specifies the action of rule execution in JSON format, which must be Base64 encoded. 
	// Creating a Billing Resource Order
	// {"messageExpiryInterval":360,"responseTopic":"replies/${clientid}","correlationData":"${traceid}","userProperty":[{"key":"trace-id","value":"${traceid}"}]}
	// Specifies the BASE64-encoded string eyJtZXNzYWdlRXhwaXJ5SW50ZXJ2YWwiOjM2MCwicmVzcG9uc2VUb3BpYyI6InJlcGxpZXMvJHtjbGllbnRpZH0iLCJjb3JyZWxhdGlvbkRhdGEiOiIke3RyYWNlaWR9IiwidXNlclByb3BlcnR5IjpbeyJrZXkiOiJ0cmFjZS1pZCIsInZhbHVlIjoiJHt0cmFjZWlkfSJ9XX0=.
	Actions *string `json:"Actions,omitnil,omitempty" name:"Actions"`

	// Rule priority. a smaller number indicates a higher priority. high priority overrides low priority. the UserProperty field will be merged.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Rule status. valid values: 0 (undefined), 1 (activate), 2 (deactivate). default: deactivate.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Specifies the remark information with a maximum length of 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *ModifyMessageEnrichmentRuleRequest) 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 *ModifyMessageEnrichmentRuleRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Id")
	delete(f, "InstanceId")
	delete(f, "RuleName")
	delete(f, "Condition")
	delete(f, "Actions")
	delete(f, "Priority")
	delete(f, "Status")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyMessageEnrichmentRuleRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *ModifyMessageEnrichmentRuleResponse) 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 *ModifyMessageEnrichmentRuleResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyUserRequestParams struct {
	// Instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// Specifies the remark with length not exceeding 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type ModifyUserRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

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

	// Specifies the remark with length not exceeding 128 characters.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *ModifyUserRequest) 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 *ModifyUserRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Username")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyUserRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *ModifyUserResponse) 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 *ModifyUserResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type PriceTag struct {
	// Billing name refers to the category of billable items for specifications. The pricing name for specific specifications can be found in the returned results of the DescribeProductSKUList API.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Billing category, pricing name subclass. For the billing category of specific specifications, see the returned results in DescribeProductSKUList API.
	Category *string `json:"Category,omitnil,omitempty" name:"Category"`

	// Billing item tag is a subproject of the billing Category under the pricing Name (Name), representing a specific charge. For the billing item tag of the specification, see 
	// DescribeProductSKUList API returned results.
	Code *string `json:"Code,omitnil,omitempty" name:"Code"`

	// Billing step length indicates the billing quantity of the billing item tag (Code) under the billing category (Category) for the pricing name (Name). For the field value of specific specifications, refer to DescribeProductSKUList API.
	Step *int64 `json:"Step,omitnil,omitempty" name:"Step"`
}

type ProductSkuItem struct {
	// Specification type
	// BASIC: Basic Edition.
	// PRO: Professional Edition
	// PLATINUM: Platinum version
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Specification code
	SkuCode *string `json:"SkuCode,omitnil,omitempty" name:"SkuCode"`

	// whether required or not
	// 1: available for sale
	// 0: unsellable
	OnSale *bool `json:"OnSale,omitnil,omitempty" name:"OnSale"`

	// Limit on the number of topics.
	TopicNumLimit *int64 `json:"TopicNumLimit,omitnil,omitempty" name:"TopicNumLimit"`

	// Sum of the quantity of messages produced and consumed per second in an MQTT cluster.
	TpsLimit *int64 `json:"TpsLimit,omitnil,omitempty" name:"TpsLimit"`

	// Number of client connections
	ClientNumLimit *int64 `json:"ClientNumLimit,omitnil,omitempty" name:"ClientNumLimit"`

	// Maximum number of subscriptions for a single client
	MaxSubscriptionPerClient *int64 `json:"MaxSubscriptionPerClient,omitnil,omitempty" name:"MaxSubscriptionPerClient"`

	// Number of authorization rules
	AuthorizationPolicyLimit *int64 `json:"AuthorizationPolicyLimit,omitnil,omitempty" name:"AuthorizationPolicyLimit"`

	// Billing item information
	PriceTags []*PriceTag `json:"PriceTags,omitnil,omitempty" name:"PriceTags"`
}

type PropagatingProperty struct {
	// propagating properties key
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

	// propagating properties value
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`
}

type SharedGroup struct {
	// Tencent Cloud MQTT instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Shared subscription group name
	SharedName *string `json:"SharedName,omitnil,omitempty" name:"SharedName"`

	// Shared group load balancing strategy 1.RANDOM 2.HASH_PARTITION
	LbStrategy *int64 `json:"LbStrategy,omitnil,omitempty" name:"LbStrategy"`

	// Takes effect under the HASH_PARTITION policy. It indicates the delay time when a Client disconnects or a new Client comes online to join the subscription group for consumption.
	// Range: 0–600 seconds
	ExpiryInterval *int64 `json:"ExpiryInterval,omitnil,omitempty" name:"ExpiryInterval"`

	// Remark, length not exceeding 128 characters.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// createTime, millisecond-level timestamp.
	CreateTime *int64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Last update time, millisecond-level timestamp.
	UpdateTime *int64 `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`
}

type SharedSubscriptionClient struct {
	// Client ID
	ClientId *string `json:"ClientId,omitnil,omitempty" name:"ClientId"`

	// Shared subscription group name
	SharedName *string `json:"SharedName,omitnil,omitempty" name:"SharedName"`

	// Expression list of subscriptions under the shared group
	TopicFilter *string `json:"TopicFilter,omitnil,omitempty" name:"TopicFilter"`

	// Online status
	Online *bool `json:"Online,omitnil,omitempty" name:"Online"`
}

type SubscriptionUserProperty struct {
	// Specifies the key of the UserProperty for subscription.
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

	// Specifies the value of the UserProperty for subscription.
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`
}

type Tag struct {
	// Tag name.
	TagKey *string `json:"TagKey,omitnil,omitempty" name:"TagKey"`

	// Tag value
	TagValue *string `json:"TagValue,omitnil,omitempty" name:"TagValue"`
}

type TagFilter struct {
	// Tag key name
	TagKey *string `json:"TagKey,omitnil,omitempty" name:"TagKey"`

	// Tag key name
	TagValues []*string `json:"TagValues,omitnil,omitempty" name:"TagValues"`
}

// Predefined struct for user
type UpdateAuthorizationPolicyPriorityRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy ID and priority.
	Priorities []*AuthorizationPolicyPriority `json:"Priorities,omitnil,omitempty" name:"Priorities"`
}

type UpdateAuthorizationPolicyPriorityRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy ID and priority.
	Priorities []*AuthorizationPolicyPriority `json:"Priorities,omitnil,omitempty" name:"Priorities"`
}

func (r *UpdateAuthorizationPolicyPriorityRequest) 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 *UpdateAuthorizationPolicyPriorityRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Priorities")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpdateAuthorizationPolicyPriorityRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *UpdateAuthorizationPolicyPriorityResponse) 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 *UpdateAuthorizationPolicyPriorityResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type UpdateMessageEnrichmentRulePriorityRequestParams struct {
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy ID and priority.
	Priorities []*MessageEnrichmentRulePriority `json:"Priorities,omitnil,omitempty" name:"Priorities"`
}

type UpdateMessageEnrichmentRulePriorityRequest struct {
	*tchttp.BaseRequest
	
	// tencent cloud MQTT instance ID, obtained from the [DescribeInstanceList](https://www.tencentcloud.com/document/api/1778/111029?from_cn_redirect=1) api or console.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Policy ID and priority.
	Priorities []*MessageEnrichmentRulePriority `json:"Priorities,omitnil,omitempty" name:"Priorities"`
}

func (r *UpdateMessageEnrichmentRulePriorityRequest) 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 *UpdateMessageEnrichmentRulePriorityRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Priorities")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpdateMessageEnrichmentRulePriorityRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

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

func (r *UpdateMessageEnrichmentRulePriorityResponse) 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 *UpdateMessageEnrichmentRulePriorityResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type UserProperty struct {
	// key
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

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

type VpcInfo struct {
	// VPC ID
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet ID.
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`
}