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

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

type ActivateHardware struct {
	// Vendor name
	Vendor *string `json:"Vendor,omitnil,omitempty" name:"Vendor"`

	// Device SN serial number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`

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

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

	// device key
	DataKey *string `json:"DataKey,omitnil,omitempty" name:"DataKey"`

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway is selected. Specific meaning: Public cloud gateway: device can only integrate with public cloud gateway (nearby access). Private gateway: device can only integrate with private gateway that has been launched (nearby access or fixed ip). Public cloud gateway and private gateway: device can also integrate with public cloud gateway and private gateway that has been launched (nearby access or fixed ip).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`

	// When the payer is the tenant, the tenant license payment method is available.
	// Monthly authorization
	// 1: Permanent license
	// If not passed, it defaults to monthly authorization.
	// This parameter is invalid when the manufacturer is the payer.
	LicensePayMode *int64 `json:"LicensePayMode,omitnil,omitempty" name:"LicensePayMode"`

	// device group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Device group name. Reserved parameter. GroupId must be imported when grouping is required.
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// No traffic processing method for the device. 0: pay-as-you-go, 1: truncate and accelerate
	FlowTrunc *int64 `json:"FlowTrunc,omitnil,omitempty" name:"FlowTrunc"`

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

// Predefined struct for user
type ActivateHardwareRequestParams struct {
	// Device list to be activated
	Hardware []*ActivateHardware `json:"Hardware,omitnil,omitempty" name:"Hardware"`
}

type ActivateHardwareRequest struct {
	*tchttp.BaseRequest
	
	// Device list to be activated
	Hardware []*ActivateHardware `json:"Hardware,omitnil,omitempty" name:"Hardware"`
}

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

// Predefined struct for user
type ActivateHardwareResponseParams struct {
	// Device information after activation
	HardwareInfo []*ActivateHardware `json:"HardwareInfo,omitnil,omitempty" name:"HardwareInfo"`

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

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

type ActiveDeviceList struct {
	// Quantity.
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

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

// Predefined struct for user
type AddApplicationRequestParams struct {
	// Application name of the created app
	MpApplicationName *string `json:"MpApplicationName,omitnil,omitempty" name:"MpApplicationName"`

	// Remark of the created device
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// base64 key string of the new application, optional, automatically generated by the system if not filled
	MpApplicationKey *string `json:"MpApplicationKey,omitnil,omitempty" name:"MpApplicationKey"`

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway is selected. Specific meaning: Public cloud gateway: The device can only connect to public cloud gateway (Proximity access). Private gateway: The device can only connect to already launched private gateway (Proximity access or fixed ip access). Public cloud gateway and private gateway: The device can also connect to both public cloud gateway and already launched private gateway (Proximity access or fixed ip access).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`
}

type AddApplicationRequest struct {
	*tchttp.BaseRequest
	
	// Application name of the created app
	MpApplicationName *string `json:"MpApplicationName,omitnil,omitempty" name:"MpApplicationName"`

	// Remark of the created device
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// base64 key string of the new application, optional, automatically generated by the system if not filled
	MpApplicationKey *string `json:"MpApplicationKey,omitnil,omitempty" name:"MpApplicationKey"`

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway is selected. Specific meaning: Public cloud gateway: The device can only connect to public cloud gateway (Proximity access). Private gateway: The device can only connect to already launched private gateway (Proximity access or fixed ip access). Public cloud gateway and private gateway: The device can also connect to both public cloud gateway and already launched private gateway (Proximity access or fixed ip access).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`
}

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

// Predefined struct for user
type AddApplicationResponseParams struct {
	// Application ID
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`

	// base64-format key encrypted with the encryption algorithm
	MpApplicationKey *string `json:"MpApplicationKey,omitnil,omitempty" name:"MpApplicationKey"`

	// Application name
	MpApplicationName *string `json:"MpApplicationName,omitnil,omitempty" name:"MpApplicationName"`

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

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

// Predefined struct for user
type AddDeviceRequestParams struct {
	// Name of the new device
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Remark of the created device
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// base64-encoded key string of the new device, optional. If not filled, automatically generated by the system.
	DataKey *string `json:"DataKey,omitnil,omitempty" name:"DataKey"`

	// Whether to set the preset key.
	// true: set preset key.
	// false: Leave the preset key unset.
	Encrypted *bool `json:"Encrypted,omitnil,omitempty" name:"Encrypted"`

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway.
	// specific meaning
	// Public cloud gateway: The device can only integrate with the public cloud gateway (nearby access).
	// Private gateway: The device can only integrate with the already launched private gateway (nearby access or fixed ip integration).
	// Public cloud gateway and private gateway: The device can also integrate with the public cloud gateway and the already launched private gateway (connected to nearby or fixed ip access).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`

	// license payment method 
	// Monthly authorization 
	// Permanent license 
	// If not specified, it defaults to monthly authorization. To permanently license a device, you need to call the OrderPerLicense API to pay the authorization fee. Otherwise, the device cannot be used.
	LicensePayMode *int64 `json:"LicensePayMode,omitnil,omitempty" name:"LicensePayMode"`

	// Device group name. Optional. Reserved parameter. GroupId must be imported when grouping is required.
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// Device group ID. Optional. If not filled, the default device is not grouped.
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// No traffic processing method for the device. 0: pay-as-you-go, 1: truncate and accelerate
	FlowTrunc *int64 `json:"FlowTrunc,omitnil,omitempty" name:"FlowTrunc"`
}

type AddDeviceRequest struct {
	*tchttp.BaseRequest
	
	// Name of the new device
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Remark of the created device
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// base64-encoded key string of the new device, optional. If not filled, automatically generated by the system.
	DataKey *string `json:"DataKey,omitnil,omitempty" name:"DataKey"`

	// Whether to set the preset key.
	// true: set preset key.
	// false: Leave the preset key unset.
	Encrypted *bool `json:"Encrypted,omitnil,omitempty" name:"Encrypted"`

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway.
	// specific meaning
	// Public cloud gateway: The device can only integrate with the public cloud gateway (nearby access).
	// Private gateway: The device can only integrate with the already launched private gateway (nearby access or fixed ip integration).
	// Public cloud gateway and private gateway: The device can also integrate with the public cloud gateway and the already launched private gateway (connected to nearby or fixed ip access).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`

	// license payment method 
	// Monthly authorization 
	// Permanent license 
	// If not specified, it defaults to monthly authorization. To permanently license a device, you need to call the OrderPerLicense API to pay the authorization fee. Otherwise, the device cannot be used.
	LicensePayMode *int64 `json:"LicensePayMode,omitnil,omitempty" name:"LicensePayMode"`

	// Device group name. Optional. Reserved parameter. GroupId must be imported when grouping is required.
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// Device group ID. Optional. If not filled, the default device is not grouped.
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// No traffic processing method for the device. 0: pay-as-you-go, 1: truncate and accelerate
	FlowTrunc *int64 `json:"FlowTrunc,omitnil,omitempty" name:"FlowTrunc"`
}

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

// Predefined struct for user
type AddDeviceResponseParams struct {
	// base64-format key encrypted by the encryption algorithm
	DataKey *string `json:"DataKey,omitnil,omitempty" name:"DataKey"`

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

	// signature string
	Signature *string `json:"Signature,omitnil,omitempty" name:"Signature"`

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

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

// Predefined struct for user
type AddGroupRequestParams struct {
	// Group name
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// Group description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

type AddGroupRequest struct {
	*tchttp.BaseRequest
	
	// Group name
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// Group description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

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

// Predefined struct for user
type AddGroupResponseParams struct {
	// Unique ID of the group, only for grouping case-sensitive
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

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

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

// Predefined struct for user
type AddHardwareRequestParams struct {
	// List of Hardware
	Hardware []*Hardware `json:"Hardware,omitnil,omitempty" name:"Hardware"`
}

type AddHardwareRequest struct {
	*tchttp.BaseRequest
	
	// List of Hardware
	Hardware []*Hardware `json:"Hardware,omitnil,omitempty" name:"Hardware"`
}

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

// Predefined struct for user
type AddHardwareResponseParams struct {
	// Hardware device
	Hardware []*Hardware `json:"Hardware,omitnil,omitempty" name:"Hardware"`

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

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

// Predefined struct for user
type AddL3ConnRequestParams struct {
	// Set the interconnect CIDR1. Supported ranges: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255.
	Cidr1 *string `json:"Cidr1,omitnil,omitempty" name:"Cidr1"`

	// Set the interconnection CIDR2. Supported ranges: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255.
	Cidr2 *string `json:"Cidr2,omitnil,omitempty" name:"Cidr2"`

	// Device ID corresponding to CIDR1
	DeviceId1 *string `json:"DeviceId1,omitnil,omitempty" name:"DeviceId1"`

	// Device ID corresponding to CIDR2
	DeviceId2 *string `json:"DeviceId2,omitnil,omitempty" name:"DeviceId2"`

	// Rule description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

type AddL3ConnRequest struct {
	*tchttp.BaseRequest
	
	// Set the interconnect CIDR1. Supported ranges: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255.
	Cidr1 *string `json:"Cidr1,omitnil,omitempty" name:"Cidr1"`

	// Set the interconnection CIDR2. Supported ranges: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255.
	Cidr2 *string `json:"Cidr2,omitnil,omitempty" name:"Cidr2"`

	// Device ID corresponding to CIDR1
	DeviceId1 *string `json:"DeviceId1,omitnil,omitempty" name:"DeviceId1"`

	// Device ID corresponding to CIDR2
	DeviceId2 *string `json:"DeviceId2,omitnil,omitempty" name:"DeviceId2"`

	// Rule description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

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

// Predefined struct for user
type AddL3ConnResponseParams struct {
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

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

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

// Predefined struct for user
type CreateEncryptedKeyRequestParams struct {

}

type CreateEncryptedKeyRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type CreateEncryptedKeyResponseParams struct {
	// Preset key
	EncryptedKey *string `json:"EncryptedKey,omitnil,omitempty" name:"EncryptedKey"`

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

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

type DelApplicationList struct {
	// Application ID.
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

// Predefined struct for user
type DeleteApplicationRequestParams struct {
	// Application ID list
	MpApplicationIdList []*DelApplicationList `json:"MpApplicationIdList,omitnil,omitempty" name:"MpApplicationIdList"`
}

type DeleteApplicationRequest struct {
	*tchttp.BaseRequest
	
	// Application ID list
	MpApplicationIdList []*DelApplicationList `json:"MpApplicationIdList,omitnil,omitempty" name:"MpApplicationIdList"`
}

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

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

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

// Predefined struct for user
type DeleteDeviceRequestParams struct {
	// Delete the device unique ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

type DeleteDeviceRequest struct {
	*tchttp.BaseRequest
	
	// Delete the device unique ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

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

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

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

// Predefined struct for user
type DeleteGroupRequestParams struct {
	// Delete the specified group
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`
}

type DeleteGroupRequest struct {
	*tchttp.BaseRequest
	
	// Delete the specified group
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`
}

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

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

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

// Predefined struct for user
type DeleteL3ConnRequestParams struct {
	// List of interconnection rule IDs
	L3ConnIdList []*string `json:"L3ConnIdList,omitnil,omitempty" name:"L3ConnIdList"`
}

type DeleteL3ConnRequest struct {
	*tchttp.BaseRequest
	
	// List of interconnection rule IDs
	L3ConnIdList []*string `json:"L3ConnIdList,omitnil,omitempty" name:"L3ConnIdList"`
}

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

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

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

// Predefined struct for user
type DescribeAccessRegionsRequestParams struct {

}

type DescribeAccessRegionsRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type DescribeAccessRegionsResponseParams struct {
	// <p>Region information list</p>
	RegionList []*RegionInfo `json:"RegionList,omitnil,omitempty" name:"RegionList"`

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

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

type DestIpInfo struct {
	// Time: s
	Time *string `json:"Time,omitnil,omitempty" name:"Time"`

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

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

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

	// Target IP list
	// Note: This field may return null, indicating that no valid values can be obtained.
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`
}

type DeviceBaseInfo struct {
	// <p>Unique ID of the device</p>
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// <p>Device name</p>
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// <p>The time when the device is created, in ms</p>
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// <p>Last online time of the device, in ms</p>
	LastTime *string `json:"LastTime,omitnil,omitempty" name:"LastTime"`

	// <p>Remark of the device</p>
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// <p>Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. Defaults to public cloud gateway. Specific meaning: Public cloud gateway: The device can only access the public cloud gateway (nearby access). Private gateway: The device can only access the already launched private gateway (nearby access or fixed ip access). Public cloud gateway and private gateway: The device can also access both the public cloud gateway and the already launched private gateway (nearby access or fixed ip access).</p>
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`

	// <p>license authorization validity period 0: monthly authorization 1: permanent license</p>
	LicensePayMode *int64 `json:"LicensePayMode,omitnil,omitempty" name:"LicensePayMode"`

	// <p>Payment party 0: Manufacturer pays 1: Customer pays</p>
	Payer *int64 `json:"Payer,omitnil,omitempty" name:"Payer"`

	// <p>device group ID</p>
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// <p>Device group name</p>
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// <p>Device data transfer plan processing method, 0: pay-as-you-go, 1: truncate acceleration</p>
	FlowTrunc *int64 `json:"FlowTrunc,omitnil,omitempty" name:"FlowTrunc"`

	// <p>Device sn</p>
	Sn *string `json:"Sn,omitnil,omitempty" name:"Sn"`

	// <p>Manufacturer</p>
	Vendor *string `json:"Vendor,omitnil,omitempty" name:"Vendor"`

	// <p>Access region list.</p>
	AllowedRegions []*string `json:"AllowedRegions,omitnil,omitempty" name:"AllowedRegions"`
}

type DeviceDetails struct {
	// Device basic info
	DeviceBaseInfo *DeviceBaseInfo `json:"DeviceBaseInfo,omitnil,omitempty" name:"DeviceBaseInfo"`

	// Device network info
	DeviceNetInfo []*DeviceNetInfo `json:"DeviceNetInfo,omitnil,omitempty" name:"DeviceNetInfo"`

	// Aggregate server address
	GatewaySite *string `json:"GatewaySite,omitnil,omitempty" name:"GatewaySite"`

	// Downlink Rate
	BusinessDownRate *float64 `json:"BusinessDownRate,omitnil,omitempty" name:"BusinessDownRate"`

	// Business-wise uplink rate
	BusinessUpRate *float64 `json:"BusinessUpRate,omitnil,omitempty" name:"BusinessUpRate"`
}

type DeviceNetInfo struct {
	// Network type:
	// Data
	// 1:Wi-Fi
	// 2: Wired
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Enable or disable.
	DataEnable *bool `json:"DataEnable,omitnil,omitempty" name:"DataEnable"`

	// Uplink speed limit
	UploadLimit *string `json:"UploadLimit,omitnil,omitempty" name:"UploadLimit"`

	// Downstream speed limit
	DownloadLimit *string `json:"DownloadLimit,omitnil,omitempty" name:"DownloadLimit"`

	// receive real-time speed
	DataRx *uint64 `json:"DataRx,omitnil,omitempty" name:"DataRx"`

	// Send real-time speed
	DataTx *uint64 `json:"DataTx,omitnil,omitempty" name:"DataTx"`

	// Operator type:
	// 1: CMCC;
	// 2: CTCC 
	// 3: CUCC
	Vendor *int64 `json:"Vendor,omitnil,omitempty" name:"Vendor"`

	// Connection status:
	// 0: connectionless
	// 1: Connecting
	// 2: Connected
	State *int64 `json:"State,omitnil,omitempty" name:"State"`

	// Public IP address
	PublicIp *string `json:"PublicIp,omitnil,omitempty" name:"PublicIp"`

	// Signal strength/Measurement unit: dbm
	SignalStrength *int64 `json:"SignalStrength,omitnil,omitempty" name:"SignalStrength"`

	// Data network type:
	// -1: Invalid value.   
	// 2:2G 
	// 3:3G 
	// 4:4G 
	// 5:5G
	Rat *int64 `json:"Rat,omitnil,omitempty" name:"Rat"`

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

	// Downstream real-time rate (floating-point type replaces the integer type of the previous version DataRx).
	DownRate *float64 `json:"DownRate,omitnil,omitempty" name:"DownRate"`

	// Uplink real-time rate (floating-point type replaces the integer of the previous version TxRate)
	UpRate *float64 `json:"UpRate,omitnil,omitempty" name:"UpRate"`
}

type DevicePayModeInfo struct {
	// device ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Payment mode.
	// Prepaid Traffic Package
	// 0: Pay-as-you-go by traffic
	PayMode *int64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Payment mode description.
	PayModeDesc *string `json:"PayModeDesc,omitnil,omitempty" name:"PayModeDesc"`

	// Traffic package ID. Only available when the payment mode is package type.
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`
}

// Predefined struct for user
type DownloadActiveDeviceCountRequestParams struct {
	// Query granularity. Valid values: 0: day, 1: week, 2: month. Default is day.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Start time. In seconds.
	StartTime *int64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time. In seconds.
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// device group, if not passed, query all
	DevGroup *string `json:"DevGroup,omitnil,omitempty" name:"DevGroup"`

	// License type. If not passed, query all. 1: Tenant monthly payment, 2: Manufacturer monthly payment, 3: Permanent license.
	LicenseType *int64 `json:"LicenseType,omitnil,omitempty" name:"LicenseType"`
}

type DownloadActiveDeviceCountRequest struct {
	*tchttp.BaseRequest
	
	// Query granularity. Valid values: 0: day, 1: week, 2: month. Default is day.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Start time. In seconds.
	StartTime *int64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time. In seconds.
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// device group, if not passed, query all
	DevGroup *string `json:"DevGroup,omitnil,omitempty" name:"DevGroup"`

	// License type. If not passed, query all. 1: Tenant monthly payment, 2: Manufacturer monthly payment, 3: Permanent license.
	LicenseType *int64 `json:"LicenseType,omitnil,omitempty" name:"LicenseType"`
}

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

// Predefined struct for user
type DownloadActiveDeviceCountResponseParams struct {
	// URL address
	FilePath *string `json:"FilePath,omitnil,omitempty" name:"FilePath"`

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

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

type FlowDetails struct {
	// Traffic data point
	NetDetails []*NetDetails `json:"NetDetails,omitnil,omitempty" name:"NetDetails"`

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

	// Maximum value of traffic (measurement unit: bytes)
	MaxValue *float64 `json:"MaxValue,omitnil,omitempty" name:"MaxValue"`

	// Average traffic (unit: bytes)
	AvgValue *float64 `json:"AvgValue,omitnil,omitempty" name:"AvgValue"`

	// Total traffic (unit: bytes)
	TotalValue *float64 `json:"TotalValue,omitnil,omitempty" name:"TotalValue"`
}

type FlowPackageInfo struct {
	// Unique resource ID of the data transfer plan
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

	// User AppId belonging to the data transfer plan
	AppId *uint64 `json:"AppId,omitnil,omitempty" name:"AppId"`

	// Traffic package specification type. Values are as follows:
	// DEVICE_1_FLOW_20G,DEVICE_2_FLOW_50G,
	// DEVICE_3_FLOW_100G,
	// DEVICE_5_FLOW_500G represents traffic packages of 20G, 50G, 100G, and 500G gear selection.
	// Gear selection also impacts the bandwidth cap of the data transfer plan.
	// 20G: Bind up to 1 device.
	// 50G: Bind up to 2 devices.
	// 100G: Bind up to 3 devices.
	// 500G: Bind up to 5 devices.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// Traffic packet status. 0: Inactive, 1: Within validity period, 2: Expired.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Purchase time, Unix timestamp format, unit: second
	CreateTime *int64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Effective time, Unix Timestamp Format, unit: second
	ActiveTime *int64 `json:"ActiveTime,omitnil,omitempty" name:"ActiveTime"`

	// Expiration time, Unix Timestamp Format, unit: second
	ExpireTime *int64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Device ID list bound to the data transfer plan
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`

	// Total traffic plan capacity (unit: MB)
	CapacitySize *uint64 `json:"CapacitySize,omitnil,omitempty" name:"CapacitySize"`

	// Remaining data transfer plan, unit: MB
	CapacityRemain *uint64 `json:"CapacityRemain,omitnil,omitempty" name:"CapacityRemain"`

	// Auto-renewal flag. true represents auto-renewal, false represents no auto-renewal.
	RenewFlag *bool `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Resource package change status: 0: No change; 1: Changing; 2: Changed or renewed
	ModifyStatus *int64 `json:"ModifyStatus,omitnil,omitempty" name:"ModifyStatus"`

	// Traffic truncation flag. true to enable traffic truncation, false to disable traffic truncation.
	TruncFlag *bool `json:"TruncFlag,omitnil,omitempty" name:"TruncFlag"`

	// Precise remaining data transfer plan, unit: MB
	CapacityRemainPrecise *uint64 `json:"CapacityRemainPrecise,omitnil,omitempty" name:"CapacityRemainPrecise"`
}

// Predefined struct for user
type GetActiveDeviceCountRequestParams struct {
	// Query granularity. Valid values: 0: day, 1: week, 2: month. Default is day.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Start time. In seconds.
	StartTime *int64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time. In seconds.
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// device group, if not passed, query all
	DevGroup *string `json:"DevGroup,omitnil,omitempty" name:"DevGroup"`

	// License type. If not passed, query all. 1: Tenant monthly payment, 2: Manufacturer monthly payment, 3: Permanent license.
	LicenseType *int64 `json:"LicenseType,omitnil,omitempty" name:"LicenseType"`
}

type GetActiveDeviceCountRequest struct {
	*tchttp.BaseRequest
	
	// Query granularity. Valid values: 0: day, 1: week, 2: month. Default is day.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Start time. In seconds.
	StartTime *int64 `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time. In seconds.
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// device group, if not passed, query all
	DevGroup *string `json:"DevGroup,omitnil,omitempty" name:"DevGroup"`

	// License type. If not passed, query all. 1: Tenant monthly payment, 2: Manufacturer monthly payment, 3: Permanent license.
	LicenseType *int64 `json:"LicenseType,omitnil,omitempty" name:"LicenseType"`
}

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

// Predefined struct for user
type GetActiveDeviceCountResponseParams struct {
	// Activate device statistics
	ActiveDeviceList []*ActiveDeviceList `json:"ActiveDeviceList,omitnil,omitempty" name:"ActiveDeviceList"`

	// Query granularity. Valid values: 0: day, 1: week, 2: month. Default is day.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

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

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

	// device group
	DevGroup *string `json:"DevGroup,omitnil,omitempty" name:"DevGroup"`

	// License type. If not passed, query all. 1: Tenant monthly payment, 2: Manufacturer monthly payment, 3: Permanent license.
	LicenseType *string `json:"LicenseType,omitnil,omitempty" name:"LicenseType"`

	// tenant ID
	AppId *string `json:"AppId,omitnil,omitempty" name:"AppId"`

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

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

// Predefined struct for user
type GetApplicationRequestParams struct {
	// Application ID.
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

type GetApplicationRequest struct {
	*tchttp.BaseRequest
	
	// Application ID.
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

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

// Predefined struct for user
type GetApplicationResponseParams struct {
	// Application ID
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`

	// base64-format key encrypted with the encryption algorithm
	MpApplicationKey *string `json:"MpApplicationKey,omitnil,omitempty" name:"MpApplicationKey"`

	// Application name
	MpApplicationName *string `json:"MpApplicationName,omitnil,omitempty" name:"MpApplicationName"`

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

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway is selected. Specific meaning: Public cloud gateway: The device can only connect to public cloud gateway (Proximity access). Private gateway: The device can only connect to already launched private gateway (Proximity access or fixed ip access). Public cloud gateway and private gateway: The device can also connect to both public cloud gateway and already launched private gateway (Proximity access or fixed ip access).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`

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

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

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

	// Start time.
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

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

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

type GetDestIPByNameRequest struct {
	*tchttp.BaseRequest
	
	// Device name
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Start time.
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

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

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

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

// Predefined struct for user
type GetDestIPByNameResponseParams struct {
	// Target IP info
	// Note: This field may return null, indicating that no valid values can be obtained.
	DestIpInfo []*DestIpInfo `json:"DestIpInfo,omitnil,omitempty" name:"DestIpInfo"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

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

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

// Predefined struct for user
type GetDevicePayModeRequestParams struct {
	// Device ID list
	DeviceIdList []*string `json:"DeviceIdList,omitnil,omitempty" name:"DeviceIdList"`
}

type GetDevicePayModeRequest struct {
	*tchttp.BaseRequest
	
	// Device ID list
	DeviceIdList []*string `json:"DeviceIdList,omitnil,omitempty" name:"DeviceIdList"`
}

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

// Predefined struct for user
type GetDevicePayModeResponseParams struct {
	// Result Information
	Result []*DevicePayModeInfo `json:"Result,omitnil,omitempty" name:"Result"`

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

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

// Predefined struct for user
type GetDeviceRequestParams struct {
	// Search for the id of the specified device
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

type GetDeviceRequest struct {
	*tchttp.BaseRequest
	
	// Search for the id of the specified device
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

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

// Predefined struct for user
type GetDeviceResponseParams struct {
	// device details
	DeviceDetails *DeviceDetails `json:"DeviceDetails,omitnil,omitempty" name:"DeviceDetails"`

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

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

// Predefined struct for user
type GetDevicesRequestParams struct {
	// Display records per page. When both PageSize and PageNumber are -1, match all devices with unlimited entries on one page.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Currently viewed page number. When PageSize and PageNumber are both -1, match all devices with unlimited entries on one page.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search for a device by keyword (ID or device name). Leave it empty to match all devices.
	Keyword *string `json:"Keyword,omitnil,omitempty" name:"Keyword"`

	// DeviceType
	// Leave it blank: Return all devices.
	// 1: Your own equipment;
	// 2: Third-party device
	DeviceType *int64 `json:"DeviceType,omitnil,omitempty" name:"DeviceType"`
}

type GetDevicesRequest struct {
	*tchttp.BaseRequest
	
	// Display records per page. When both PageSize and PageNumber are -1, match all devices with unlimited entries on one page.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Currently viewed page number. When PageSize and PageNumber are both -1, match all devices with unlimited entries on one page.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search for a device by keyword (ID or device name). Leave it empty to match all devices.
	Keyword *string `json:"Keyword,omitnil,omitempty" name:"Keyword"`

	// DeviceType
	// Leave it blank: Return all devices.
	// 1: Your own equipment;
	// 2: Third-party device
	DeviceType *int64 `json:"DeviceType,omitnil,omitempty" name:"DeviceType"`
}

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

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

// Predefined struct for user
type GetDevicesResponseParams struct {
	// List of Device Information
	DeviceInfos []*DeviceBaseInfo `json:"DeviceInfos,omitnil,omitempty" name:"DeviceInfos"`

	// Total number of devices
	Length *int64 `json:"Length,omitnil,omitempty" name:"Length"`

	// Total pages
	TotalPage *int64 `json:"TotalPage,omitnil,omitempty" name:"TotalPage"`

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

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

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

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

// Predefined struct for user
type GetFlowAlarmInfoRequestParams struct {

}

type GetFlowAlarmInfoRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type GetFlowAlarmInfoResponseParams struct {
	// Alarm threshold of the data transfer plan
	AlarmValue *int64 `json:"AlarmValue,omitnil,omitempty" name:"AlarmValue"`

	// Alarm notification callback url
	NotifyUrl *string `json:"NotifyUrl,omitnil,omitempty" name:"NotifyUrl"`

	// Alarm notification callback key
	CallbackKey *string `json:"CallbackKey,omitnil,omitempty" name:"CallbackKey"`

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

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

// Predefined struct for user
type GetFlowPackagesRequestParams struct {
	// Page number, starting from 1.
	PageNumber *uint64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Number of Entry Per Page
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Unique resource ID of the data transfer plan
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

	// Device ID bound to the data transfer plan
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Traffic packet status. 0: Not in effect, 1: Within the validity period, 2: Expired.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type GetFlowPackagesRequest struct {
	*tchttp.BaseRequest
	
	// Page number, starting from 1.
	PageNumber *uint64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Number of Entry Per Page
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Unique resource ID of the data transfer plan
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

	// Device ID bound to the data transfer plan
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Traffic packet status. 0: Not in effect, 1: Within the validity period, 2: Expired.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

// Predefined struct for user
type GetFlowPackagesResponseParams struct {
	// Data Transfer Plan List
	PackageList []*FlowPackageInfo `json:"PackageList,omitnil,omitempty" name:"PackageList"`

	// Total number.
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`

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

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

// Predefined struct for user
type GetFlowStatisticByGroupRequestParams struct {
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Application ID. No need to use when querying group traffic. When querying application traffic, this field is the application ID. Fill "-1" for GroupId.
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

type GetFlowStatisticByGroupRequest struct {
	*tchttp.BaseRequest
	
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Application ID. No need to use when querying group traffic. When querying application traffic, this field is the application ID. Fill "-1" for GroupId.
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

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

// Predefined struct for user
type GetFlowStatisticByGroupResponseParams struct {
	// Traffic details
	NetDetails []*NetDetails `json:"NetDetails,omitnil,omitempty" name:"NetDetails"`

	// Search the maximum value of traffic usage in a time period (measurement unit: byte)
	MaxValue *float64 `json:"MaxValue,omitnil,omitempty" name:"MaxValue"`

	// Search time period traffic usage average (unit: byte)
	AvgValue *float64 `json:"AvgValue,omitnil,omitempty" name:"AvgValue"`

	// Search total traffic usage in the time period (unit: byte)
	TotalValue *float64 `json:"TotalValue,omitnil,omitempty" name:"TotalValue"`

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

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

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

	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device name list. Used for querying traffic volume across devices. When this field is enabled, DeviceId can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

type GetFlowStatisticByNameRequest struct {
	*tchttp.BaseRequest
	
	// Device name.
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device name list. Used for querying traffic volume across devices. When this field is enabled, DeviceId can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

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

// Predefined struct for user
type GetFlowStatisticByNameResponseParams struct {
	// Traffic details
	NetDetails []*NetDetails `json:"NetDetails,omitnil,omitempty" name:"NetDetails"`

	// Search the maximum value of traffic usage in a time period (measurement unit: byte)
	MaxValue *float64 `json:"MaxValue,omitnil,omitempty" name:"MaxValue"`

	// Search time period traffic usage average (unit: byte)
	AvgValue *float64 `json:"AvgValue,omitnil,omitempty" name:"AvgValue"`

	// Search total traffic usage in the time period (unit: byte)
	TotalValue *float64 `json:"TotalValue,omitnil,omitempty" name:"TotalValue"`

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

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

// Predefined struct for user
type GetFlowStatisticByRegionRequestParams struct {
	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Gateway type. 0: public cloud gateway; 1: private gateway.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`
}

type GetFlowStatisticByRegionRequest struct {
	*tchttp.BaseRequest
	
	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Gateway type. 0: public cloud gateway; 1: private gateway.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`
}

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

// Predefined struct for user
type GetFlowStatisticByRegionResponseParams struct {
	// Traffic details
	NetDetails []*NetDetails `json:"NetDetails,omitnil,omitempty" name:"NetDetails"`

	// Search the maximum value of traffic usage in a time period (measurement unit: byte)
	MaxValue *float64 `json:"MaxValue,omitnil,omitempty" name:"MaxValue"`

	// Search time period traffic usage average (unit: byte)
	AvgValue *float64 `json:"AvgValue,omitnil,omitempty" name:"AvgValue"`

	// Search total traffic usage in the time period (unit: byte)
	TotalValue *float64 `json:"TotalValue,omitnil,omitempty" name:"TotalValue"`

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

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

// Predefined struct for user
type GetFlowStatisticRequestParams struct {
	// device ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device ID list. Used for querying traffic volume across devices. When this field is enabled, DeviceId can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

type GetFlowStatisticRequest struct {
	*tchttp.BaseRequest
	
	// device ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Search start time
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// end time
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Time granularity (1: hourly statistics, 2: daily statistics)
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device ID list. Used for querying traffic volume across devices. When this field is enabled, DeviceId can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

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

// Predefined struct for user
type GetFlowStatisticResponseParams struct {
	// Traffic details
	NetDetails []*NetDetails `json:"NetDetails,omitnil,omitempty" name:"NetDetails"`

	// Search the maximum value of traffic usage in a time period (measurement unit: byte)
	MaxValue *float64 `json:"MaxValue,omitnil,omitempty" name:"MaxValue"`

	// Search time period traffic usage average (unit: byte)
	AvgValue *float64 `json:"AvgValue,omitnil,omitempty" name:"AvgValue"`

	// Search total traffic usage in the time period (unit: byte)
	TotalValue *float64 `json:"TotalValue,omitnil,omitempty" name:"TotalValue"`

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

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

// Predefined struct for user
type GetGroupDetailRequestParams struct {
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Display per page number of records. When PageSize and PageNumber are -1, match all devices by 1 page with no limit entries.	
	// Example value: 1.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Number of records displayed per page. When PageSize and PageNumber are both -1, match all devices by 1 page with no limit entries.	
	// Example value: 10.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search Keywords
	KeyWord *string `json:"KeyWord,omitnil,omitempty" name:"KeyWord"`
}

type GetGroupDetailRequest struct {
	*tchttp.BaseRequest
	
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Display per page number of records. When PageSize and PageNumber are -1, match all devices by 1 page with no limit entries.	
	// Example value: 1.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Number of records displayed per page. When PageSize and PageNumber are both -1, match all devices by 1 page with no limit entries.	
	// Example value: 10.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search Keywords
	KeyWord *string `json:"KeyWord,omitnil,omitempty" name:"KeyWord"`
}

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

// Predefined struct for user
type GetGroupDetailResponseParams struct {
	// Group basic info
	GroupInfo *GroupInfo `json:"GroupInfo,omitnil,omitempty" name:"GroupInfo"`

	// Device list grouped in
	DeviceInfos []*DeviceBaseInfo `json:"DeviceInfos,omitnil,omitempty" name:"DeviceInfos"`

	// Total number of devices
	Length *int64 `json:"Length,omitnil,omitempty" name:"Length"`

	// Total pages
	TotalPage *int64 `json:"TotalPage,omitnil,omitempty" name:"TotalPage"`

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

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

// Predefined struct for user
type GetGroupListRequestParams struct {
	// Number of records displayed per page. When both PageSize and PageNumber are -1, match all devices with no limit on a single page.
	// Example value: 10.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Currently viewed page number. When both PageSize and PageNumber are -1, match all devices as one page with no limit on entries.
	// Example value: 1.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search for groups by keyword. Match all groups when empty.
	Keyword *string `json:"Keyword,omitnil,omitempty" name:"Keyword"`
}

type GetGroupListRequest struct {
	*tchttp.BaseRequest
	
	// Number of records displayed per page. When both PageSize and PageNumber are -1, match all devices with no limit on a single page.
	// Example value: 10.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Currently viewed page number. When both PageSize and PageNumber are -1, match all devices as one page with no limit on entries.
	// Example value: 1.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search for groups by keyword. Match all groups when empty.
	Keyword *string `json:"Keyword,omitnil,omitempty" name:"Keyword"`
}

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

// Predefined struct for user
type GetGroupListResponseParams struct {
	// List of Device Information
	GroupInfos []*GroupInfo `json:"GroupInfos,omitnil,omitempty" name:"GroupInfos"`

	// Total number of devices
	Length *int64 `json:"Length,omitnil,omitempty" name:"Length"`

	// Total pages
	TotalPage *int64 `json:"TotalPage,omitnil,omitempty" name:"TotalPage"`

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

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

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

	// Device SN serial number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`
}

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

	// Device SN serial number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`
}

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

// Predefined struct for user
type GetHardwareInfoResponseParams struct {
	// Authorization validity period of license 
	// 0: Monthly authorization 
	// 1: Permanent license 
	// -Unknown
	LicensePayMode *int64 `json:"LicensePayMode,omitnil,omitempty" name:"LicensePayMode"`

	// Payer 0: Customer payment 1: Manufacturer payment
	Payer *int64 `json:"Payer,omitnil,omitempty" name:"Payer"`

	// Hardware Serial Number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`

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

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

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

// Predefined struct for user
type GetHardwareListRequestParams struct {
	// Page number
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Device quantity on the webpage
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

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

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

	// Device quantity on the webpage
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

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

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

// Predefined struct for user
type GetHardwareListResponseParams struct {
	// List of Hardware Information
	HardwareInfos []*HardwareInfo `json:"HardwareInfos,omitnil,omitempty" name:"HardwareInfos"`

	// Total number of hardware
	Length *int64 `json:"Length,omitnil,omitempty" name:"Length"`

	// Total pages
	TotalPage *int64 `json:"TotalPage,omitnil,omitempty" name:"TotalPage"`

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

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

// Predefined struct for user
type GetL3ConnListRequestParams struct {
	// Display records per page. When both PageSize and PageNumber are -1, match all devices with unlimited entries on one page.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Currently viewed page number. When PageSize and PageNumber are both -1, match all devices with unlimited entries on one page.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search for groups by DeviceId. Match all groups when empty.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

type GetL3ConnListRequest struct {
	*tchttp.BaseRequest
	
	// Display records per page. When both PageSize and PageNumber are -1, match all devices with unlimited entries on one page.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Currently viewed page number. When PageSize and PageNumber are both -1, match all devices with unlimited entries on one page.
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Search for groups by DeviceId. Match all groups when empty.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`
}

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

// Predefined struct for user
type GetL3ConnListResponseParams struct {
	// List of interconnection rules
	L3ConnList []*L3ConnInfo `json:"L3ConnList,omitnil,omitempty" name:"L3ConnList"`

	// Total number of devices
	Length *int64 `json:"Length,omitnil,omitempty" name:"Length"`

	// Total pages
	TotalPage *int64 `json:"TotalPage,omitnil,omitempty" name:"TotalPage"`

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

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

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

	// Start time.
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

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

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

type GetMonitorDataByNameRequest struct {
	*tchttp.BaseRequest
	
	// Device name.
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Start time.
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

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

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

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

// Predefined struct for user
type GetMonitorDataByNameResponseParams struct {
	// File download link
	FilePath *string `json:"FilePath,omitnil,omitempty" name:"FilePath"`

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

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

// Predefined struct for user
type GetMultiFlowStatisticRequestParams struct {
	// Device id list, up to 10 devices at a time
	DeviceIds []*string `json:"DeviceIds,omitnil,omitempty" name:"DeviceIds"`

	// 1659514436
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// 1659515000
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Statistics traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Statistical time granularity (1: hourly statistics, 2: daily statistics).
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

type GetMultiFlowStatisticRequest struct {
	*tchttp.BaseRequest
	
	// Device id list, up to 10 devices at a time
	DeviceIds []*string `json:"DeviceIds,omitnil,omitempty" name:"DeviceIds"`

	// 1659514436
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// 1659515000
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Statistics traffic type (1: uplink traffic, 2: downstream traffic, 3: sum of upstream and downstream)
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Statistical time granularity (1: hourly statistics, 2: daily statistics).
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

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

// Predefined struct for user
type GetMultiFlowStatisticResponseParams struct {
	// Batch device traffic information
	FlowDetails []*FlowDetails `json:"FlowDetails,omitnil,omitempty" name:"FlowDetails"`

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

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

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

	// Start time.
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

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

	// Statistical metric (Uplink rate: "TxRate": bit/s, Downstream rate: "RxRate": bit/s, Packet loss: "Loss": %, Latency: "RTT": ms)
	Metrics *string `json:"Metrics,omitnil,omitempty" name:"Metrics"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

type GetNetMonitorByNameRequest struct {
	*tchttp.BaseRequest
	
	// Device name
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Start time.
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

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

	// Statistical metric (Uplink rate: "TxRate": bit/s, Downstream rate: "RxRate": bit/s, Packet loss: "Loss": %, Latency: "RTT": ms)
	Metrics *string `json:"Metrics,omitnil,omitempty" name:"Metrics"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

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

// Predefined struct for user
type GetNetMonitorByNameResponseParams struct {
	// monitoring data
	MonitorData []*MonitorData `json:"MonitorData,omitnil,omitempty" name:"MonitorData"`

	// Access region. Valid values: ['MC','AP','EU','AM'].
	// MC=Chinese mainland
	// AP=Asia Pacific
	// EU=Europe
	// AM=Americas
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

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

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

// Predefined struct for user
type GetNetMonitorRequestParams struct {
	// <p>device id</p>
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// <p>Start time.</p>
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// <p>End time.</p>
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// <p>Statistical metric (Uplink rate: "TxRate": bit/s, Downstream rate: "RxRate": bit/s, Packet Loss: "Loss": %, Latency: "RTT": ms)</p>
	Metrics *string `json:"Metrics,omitnil,omitempty" name:"Metrics"`

	// <p>Gateway type. 0: public cloud gateway; 1: private gateway. Defaults to 0 if not specified.</p>
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

type GetNetMonitorRequest struct {
	*tchttp.BaseRequest
	
	// <p>device id</p>
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// <p>Start time.</p>
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// <p>End time.</p>
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// <p>Statistical metric (Uplink rate: "TxRate": bit/s, Downstream rate: "RxRate": bit/s, Packet Loss: "Loss": %, Latency: "RTT": ms)</p>
	Metrics *string `json:"Metrics,omitnil,omitempty" name:"Metrics"`

	// <p>Gateway type. 0: public cloud gateway; 1: private gateway. Defaults to 0 if not specified.</p>
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`
}

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

// Predefined struct for user
type GetNetMonitorResponseParams struct {
	// <p>Monitoring data.</p>
	MonitorData []*MonitorData `json:"MonitorData,omitnil,omitempty" name:"MonitorData"`

	// <p>Access region. Value ranges from 'MC' to 'AM'<br>MC=Chinese mainland<br>AP=Asia Pacific<br>EU=Europe<br>AM=Americas</p>
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

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

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

// Predefined struct for user
type GetPublicKeyRequestParams struct {

}

type GetPublicKeyRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type GetPublicKeyResponseParams struct {
	// Asymmetric public key
	PublicKey *string `json:"PublicKey,omitnil,omitempty" name:"PublicKey"`

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

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

// Predefined struct for user
type GetStatisticDataByNameRequestParams struct {
	// Device name. If not specified, pass "-1".
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Start time of statistics (seconds).
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// Statistics end time (s).
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Aggregation granularity:
	// Hourly statistics
	// 2: Daily statistics
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device name list. Up to 10 devices. Used when downloading traffic volume of multiple devices. At this point, DeviceName can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`

	// Device group ID. If not specified, do not pass it. Used when downloading data by grouping.
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Application ID. Leave blank if no designated application is specified. Used when downloading data by app.
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

type GetStatisticDataByNameRequest struct {
	*tchttp.BaseRequest
	
	// Device name. If not specified, pass "-1".
	DeviceName *string `json:"DeviceName,omitnil,omitempty" name:"DeviceName"`

	// Start time of statistics (seconds).
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// Statistics end time (s).
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Aggregation granularity:
	// Hourly statistics
	// 2: Daily statistics
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device name list. Up to 10 devices. Used when downloading traffic volume of multiple devices. At this point, DeviceName can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`

	// Device group ID. If not specified, do not pass it. Used when downloading data by grouping.
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Application ID. Leave blank if no designated application is specified. Used when downloading data by app.
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

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

// Predefined struct for user
type GetStatisticDataByNameResponseParams struct {
	// File address url
	FilePath *string `json:"FilePath,omitnil,omitempty" name:"FilePath"`

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

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

// Predefined struct for user
type GetStatisticDataRequestParams struct {
	// Device ID. If not specified, pass "-1".
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time of statistics (seconds).
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// Statistics end time (s).
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Aggregation granularity:
	// Hourly statistics
	// 2: Daily statistics
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device ID list. Up to 10 devices. Used when downloading total traffic of multiple devices. At this point, DeviceId can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`

	// Device group ID. If not specified, do not pass it. Used when downloading data by grouping.
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`
}

type GetStatisticDataRequest struct {
	*tchttp.BaseRequest
	
	// Device ID. If not specified, pass "-1".
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Start time of statistics (seconds).
	BeginTime *int64 `json:"BeginTime,omitnil,omitempty" name:"BeginTime"`

	// Statistics end time (s).
	EndTime *int64 `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Aggregation granularity:
	// Hourly statistics
	// 2: Daily statistics
	TimeGranularity *int64 `json:"TimeGranularity,omitnil,omitempty" name:"TimeGranularity"`

	// Access region. Value ranges from 'MC' to 'AM'. MC=Chinese mainland AP=Asia Pacific EU=Europe AM=Americas. Leave it blank to represent all regions.
	AccessRegion *string `json:"AccessRegion,omitnil,omitempty" name:"AccessRegion"`

	// Gateway type. 0: public cloud gateway; 1: private gateway. Default is 0 if not specified.
	GatewayType *int64 `json:"GatewayType,omitnil,omitempty" name:"GatewayType"`

	// Device ID list. Up to 10 devices. Used when downloading total traffic of multiple devices. At this point, DeviceId can be "-1".
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`

	// Device group ID. If not specified, do not pass it. Used when downloading data by grouping.
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`
}

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

// Predefined struct for user
type GetStatisticDataResponseParams struct {
	// File address url
	FilePath *string `json:"FilePath,omitnil,omitempty" name:"FilePath"`

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

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

// Predefined struct for user
type GetVendorHardwareRequestParams struct {
	// Page number
	PageNumber *int64 `json:"PageNumber,omitnil,omitempty" name:"PageNumber"`

	// Page count
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

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

	// Activation status
	// Empty: All;
	// 1: To be activated.
	// 2: Activated;
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

	// Page count
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

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

	// Activation status
	// Empty: All;
	// 1: To be activated.
	// 2: Activated;
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

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

// Predefined struct for user
type GetVendorHardwareResponseParams struct {
	// List of Hardware Information
	VendorHardware []*VendorHardware `json:"VendorHardware,omitnil,omitempty" name:"VendorHardware"`

	// Total number of devices
	Length *int64 `json:"Length,omitnil,omitempty" name:"Length"`

	// Total pages
	TotalPage *int64 `json:"TotalPage,omitnil,omitempty" name:"TotalPage"`

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

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

// Predefined struct for user
type GroupAddDeviceRequestParams struct {
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Device list to be added
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

type GroupAddDeviceRequest struct {
	*tchttp.BaseRequest
	
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Device list to be added
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

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

// Predefined struct for user
type GroupAddDeviceResponseParams struct {
	// Number of devices grouped in
	DeviceNum *int64 `json:"DeviceNum,omitnil,omitempty" name:"DeviceNum"`

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

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

// Predefined struct for user
type GroupDeleteDeviceRequestParams struct {
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Device list to be deleted
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

type GroupDeleteDeviceRequest struct {
	*tchttp.BaseRequest
	
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Device list to be deleted
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`
}

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

// Predefined struct for user
type GroupDeleteDeviceResponseParams struct {
	// Number of devices grouped in
	DeviceNum *int64 `json:"DeviceNum,omitnil,omitempty" name:"DeviceNum"`

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

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

type GroupInfo struct {
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Group name
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// The time when the group is created, in ms.	
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// The time when the group is updated, in ms.	
	UpdateTime *string `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`

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

	// Number of devices grouped in
	DeviceNum *int64 `json:"DeviceNum,omitnil,omitempty" name:"DeviceNum"`
}

type Hardware struct {
	// Hardware Serial Number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`

	// license billing mode:
	// 1. Tenant payment
	// 2: Manufacturer monthly payment
	// 3: Manufacturer permanent license
	LicenseChargingMode *int64 `json:"LicenseChargingMode,omitnil,omitempty" name:"LicenseChargingMode"`

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

	// Hardware ID. No need to pass as an input parameter.
	HardwareId *string `json:"HardwareId,omitnil,omitempty" name:"HardwareId"`
}

type HardwareInfo struct {
	// device ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

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

	// Activation time
	ActiveTime *string `json:"ActiveTime,omitnil,omitempty" name:"ActiveTime"`

	// Last online time
	LastOnlineTime *string `json:"LastOnlineTime,omitnil,omitempty" name:"LastOnlineTime"`

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

	// vendor remarks
	VendorDescription *string `json:"VendorDescription,omitnil,omitempty" name:"VendorDescription"`

	// License billing mode: 1. Tenant monthly payment 2. Manufacturer monthly payment 3. Permanent license.
	// Note: This parameter will be subsequently deprecated. Please use LicensePayMode and Payer for new access.
	LicenseChargingMode *int64 `json:"LicenseChargingMode,omitnil,omitempty" name:"LicenseChargingMode"`

	// Creation time.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Hardware Serial Number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`

	// Authorization validity period of license 
	// 0: Monthly authorization 
	// 1: Permanent license
	LicensePayMode *int64 `json:"LicensePayMode,omitnil,omitempty" name:"LicensePayMode"`

	// Payer 
	// 0: Customer payment 
	// 1: Manufacturer payment
	Payer *int64 `json:"Payer,omitnil,omitempty" name:"Payer"`

	// device group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Device group name
	GroupName *string `json:"GroupName,omitnil,omitempty" name:"GroupName"`

	// No traffic processing method for the device. 0: pay-as-you-go, 1: truncate and accelerate	
	FlowTrunc *int64 `json:"FlowTrunc,omitnil,omitempty" name:"FlowTrunc"`
}

type L3ConnInfo struct {
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

	// interworking device ID
	DeviceId1 *string `json:"DeviceId1,omitnil,omitempty" name:"DeviceId1"`

	// Interconnection rule CIDR
	Cidr1 *string `json:"Cidr1,omitnil,omitempty" name:"Cidr1"`

	// interworking device ID
	DeviceId2 *string `json:"DeviceId2,omitnil,omitempty" name:"DeviceId2"`

	// Interconnection rule CIDR
	Cidr2 *string `json:"Cidr2,omitnil,omitempty" name:"Cidr2"`

	// Rule Enable Status
	Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"`

	// Interconnection rule description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

// Predefined struct for user
type ModifyDeviceAccessRegionsRequestParams struct {
	// <p>device ID</p>
	DeviceIds []*string `json:"DeviceIds,omitnil,omitempty" name:"DeviceIds"`

	// <p>Access region</p>
	AllowedRegions []*string `json:"AllowedRegions,omitnil,omitempty" name:"AllowedRegions"`
}

type ModifyDeviceAccessRegionsRequest struct {
	*tchttp.BaseRequest
	
	// <p>device ID</p>
	DeviceIds []*string `json:"DeviceIds,omitnil,omitempty" name:"DeviceIds"`

	// <p>Access region</p>
	AllowedRegions []*string `json:"AllowedRegions,omitnil,omitempty" name:"AllowedRegions"`
}

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

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

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

// Predefined struct for user
type ModifyPackageRenewFlagRequestParams struct {
	// Unique resource ID of the data transfer plan
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

	// Auto-renewal flag. true represents auto-renewal, false represents no auto-renewal.
	RenewFlag *bool `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

type ModifyPackageRenewFlagRequest struct {
	*tchttp.BaseRequest
	
	// Unique resource ID of the data transfer plan
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

	// Auto-renewal flag. true represents auto-renewal, false represents no auto-renewal.
	RenewFlag *bool `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

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

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

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

type MonitorData struct {
	// Time point: s
	Time *string `json:"Time,omitnil,omitempty" name:"Time"`

	// Business Metric (bps/ms/%)
	BusinessMetrics *float64 `json:"BusinessMetrics,omitnil,omitempty" name:"BusinessMetrics"`

	// Network interface status info
	SlotNetInfo []*SlotNetInfo `json:"SlotNetInfo,omitnil,omitempty" name:"SlotNetInfo"`
}

type NetDetails struct {
	// Traffic volume (byte)
	Current *float64 `json:"Current,omitnil,omitempty" name:"Current"`

	// Time point, unit: s
	Time *string `json:"Time,omitnil,omitempty" name:"Time"`
}

// Predefined struct for user
type OrderFlowPackageRequestParams struct {
	// Traffic package specification type. Values are as follows:
	// DEVICE_1_FLOW_20G,DEVICE_2_FLOW_50G,
	// DEVICE_3_FLOW_100G,
	// DEVICE_5_FLOW_500G represents traffic packages of 20G, 50G, 100G, and 500G gear selection.
	// Gear selection also impacts the bandwidth cap of the data transfer plan.
	// 20G: Bind up to 1 device.
	// 50G: Bind up to 2 devices.
	// 100G: Bind up to 3 devices.
	// 500G: Bind up to 5 devices.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// Device ID list bound to the data transfer plan. Number of bundled instances depends on the specification tiers of the plan.
	// 20G: Bind up to 1 device.
	// 50G: Bind up to 2 devices.
	// 100G: Bind up to 3 devices.
	// 500G: Bind up to 5 devices.
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`

	// Whether the service is automatically renewed conflicts with traffic truncation. You can only enable one option.
	AutoRenewFlag *bool `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Region flag. 0: Chinese mainland, 1: outside the Chinese mainland
	PackageRegion *int64 `json:"PackageRegion,omitnil,omitempty" name:"PackageRegion"`

	// Whether traffic truncation is enabled. This option conflicts with auto renewal.
	FlowTruncFlag *bool `json:"FlowTruncFlag,omitnil,omitempty" name:"FlowTruncFlag"`

	// Whether to automatically select voucher. Default false.
	// Selection strategy for multiple vouchers: Deduct vouchers by this priority - voucher that can offset the total amount of the Payment Order, voucher with the earliest Expiration, voucher with the maximum deductible amount, voucher with the minimum balance, cash voucher. Only one voucher can be deducted at most.
	AutoVoucher *bool `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Designated voucher ID. This parameter is invalid when selecting voucher automatically. Only one voucher can be input.
	// Note: If the designated voucher does not meet the order deduction conditions, proceed with normal payment without deducting the voucher.
	VoucherIds []*string `json:"VoucherIds,omitnil,omitempty" name:"VoucherIds"`
}

type OrderFlowPackageRequest struct {
	*tchttp.BaseRequest
	
	// Traffic package specification type. Values are as follows:
	// DEVICE_1_FLOW_20G,DEVICE_2_FLOW_50G,
	// DEVICE_3_FLOW_100G,
	// DEVICE_5_FLOW_500G represents traffic packages of 20G, 50G, 100G, and 500G gear selection.
	// Gear selection also impacts the bandwidth cap of the data transfer plan.
	// 20G: Bind up to 1 device.
	// 50G: Bind up to 2 devices.
	// 100G: Bind up to 3 devices.
	// 500G: Bind up to 5 devices.
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// Device ID list bound to the data transfer plan. Number of bundled instances depends on the specification tiers of the plan.
	// 20G: Bind up to 1 device.
	// 50G: Bind up to 2 devices.
	// 100G: Bind up to 3 devices.
	// 500G: Bind up to 5 devices.
	DeviceList []*string `json:"DeviceList,omitnil,omitempty" name:"DeviceList"`

	// Whether the service is automatically renewed conflicts with traffic truncation. You can only enable one option.
	AutoRenewFlag *bool `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Region flag. 0: Chinese mainland, 1: outside the Chinese mainland
	PackageRegion *int64 `json:"PackageRegion,omitnil,omitempty" name:"PackageRegion"`

	// Whether traffic truncation is enabled. This option conflicts with auto renewal.
	FlowTruncFlag *bool `json:"FlowTruncFlag,omitnil,omitempty" name:"FlowTruncFlag"`

	// Whether to automatically select voucher. Default false.
	// Selection strategy for multiple vouchers: Deduct vouchers by this priority - voucher that can offset the total amount of the Payment Order, voucher with the earliest Expiration, voucher with the maximum deductible amount, voucher with the minimum balance, cash voucher. Only one voucher can be deducted at most.
	AutoVoucher *bool `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Designated voucher ID. This parameter is invalid when selecting voucher automatically. Only one voucher can be input.
	// Note: If the designated voucher does not meet the order deduction conditions, proceed with normal payment without deducting the voucher.
	VoucherIds []*string `json:"VoucherIds,omitnil,omitempty" name:"VoucherIds"`
}

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

// Predefined struct for user
type OrderFlowPackageResponseParams struct {
	// Unique resource ID of the data transfer plan
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

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

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

type OrderInfo struct {
	// Account uin of the parent account
	Uin *string `json:"Uin,omitnil,omitempty" name:"Uin"`

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

	// Usage type
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// Order number unique identifier
	OrderId *string `json:"OrderId,omitnil,omitempty" name:"OrderId"`

	// Report month, current month by default
	ReportMonth *string `json:"ReportMonth,omitnil,omitempty" name:"ReportMonth"`

	// Data update time
	Updated *string `json:"Updated,omitnil,omitempty" name:"Updated"`
}

// Predefined struct for user
type OrderPerLicenseRequestParams struct {
	// Device ID for purchasing a permanent License. If it is an unactivated device from the manufacturer, use HardwareId.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Device type. 0: SDK, 1: CPE. Enter 0 when creating or activating a device as a user. Enter 1 when creating a device to be activated as a manufacturer.
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Rollback or not (delete device) after purchase fail, default false. If the device is bound to a currently effective traffic package, rollback is not allowed.
	RollBack *bool `json:"RollBack,omitnil,omitempty" name:"RollBack"`

	// Whether to automatically select voucher. Default false.
	// Selection strategy for multiple vouchers: Deduct vouchers by this priority - voucher that can offset the total amount of the Payment Order, voucher with the earliest Expiration, voucher with the maximum deductible amount, voucher with the minimum balance, cash voucher. Only one voucher can be deducted at most.
	AutoVoucher *bool `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Designated voucher ID. This parameter is invalid when selecting voucher automatically. Only one voucher can be input.
	// Note: If the designated voucher does not meet the order deduction conditions, proceed with normal payment without deducting the voucher.
	VoucherIds []*string `json:"VoucherIds,omitnil,omitempty" name:"VoucherIds"`
}

type OrderPerLicenseRequest struct {
	*tchttp.BaseRequest
	
	// Device ID for purchasing a permanent License. If it is an unactivated device from the manufacturer, use HardwareId.
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

	// Device type. 0: SDK, 1: CPE. Enter 0 when creating or activating a device as a user. Enter 1 when creating a device to be activated as a manufacturer.
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Rollback or not (delete device) after purchase fail, default false. If the device is bound to a currently effective traffic package, rollback is not allowed.
	RollBack *bool `json:"RollBack,omitnil,omitempty" name:"RollBack"`

	// Whether to automatically select voucher. Default false.
	// Selection strategy for multiple vouchers: Deduct vouchers by this priority - voucher that can offset the total amount of the Payment Order, voucher with the earliest Expiration, voucher with the maximum deductible amount, voucher with the minimum balance, cash voucher. Only one voucher can be deducted at most.
	AutoVoucher *bool `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Designated voucher ID. This parameter is invalid when selecting voucher automatically. Only one voucher can be input.
	// Note: If the designated voucher does not meet the order deduction conditions, proceed with normal payment without deducting the voucher.
	VoucherIds []*string `json:"VoucherIds,omitnil,omitempty" name:"VoucherIds"`
}

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

// Predefined struct for user
type OrderPerLicenseResponseParams struct {
	// Resource ID of the single-use License
	ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"`

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

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

type RegionInfo struct {
	// <p>Region ID.</p>
	RegionId *string `json:"RegionId,omitnil,omitempty" name:"RegionId"`

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

	// <p>English abbreviation of the region.</p>
	RegionAbbr *string `json:"RegionAbbr,omitnil,omitempty" name:"RegionAbbr"`
}

// Predefined struct for user
type ReportOrderRequestParams struct {
	// Order number unique identifier
	OrderId *string `json:"OrderId,omitnil,omitempty" name:"OrderId"`

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

	// Usage type
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// Report month, current month by default
	ReportMonth *string `json:"ReportMonth,omitnil,omitempty" name:"ReportMonth"`
}

type ReportOrderRequest struct {
	*tchttp.BaseRequest
	
	// Order number unique identifier
	OrderId *string `json:"OrderId,omitnil,omitempty" name:"OrderId"`

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

	// Usage type
	PackageType *string `json:"PackageType,omitnil,omitempty" name:"PackageType"`

	// Report month, current month by default
	ReportMonth *string `json:"ReportMonth,omitnil,omitempty" name:"ReportMonth"`
}

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

// Predefined struct for user
type ReportOrderResponseParams struct {
	// Order information
	OrderInfo *OrderInfo `json:"OrderInfo,omitnil,omitempty" name:"OrderInfo"`

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

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

// Predefined struct for user
type SetNotifyUrlRequestParams struct {
	// Alarm notification callback url
	NotifyUrl *string `json:"NotifyUrl,omitnil,omitempty" name:"NotifyUrl"`

	// Alarm notification callback key
	CallbackKey *string `json:"CallbackKey,omitnil,omitempty" name:"CallbackKey"`

	// Alarm threshold of the data transfer plan
	AlarmValue *int64 `json:"AlarmValue,omitnil,omitempty" name:"AlarmValue"`
}

type SetNotifyUrlRequest struct {
	*tchttp.BaseRequest
	
	// Alarm notification callback url
	NotifyUrl *string `json:"NotifyUrl,omitnil,omitempty" name:"NotifyUrl"`

	// Alarm notification callback key
	CallbackKey *string `json:"CallbackKey,omitnil,omitempty" name:"CallbackKey"`

	// Alarm threshold of the data transfer plan
	AlarmValue *int64 `json:"AlarmValue,omitnil,omitempty" name:"AlarmValue"`
}

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

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

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

type SlotNetInfo struct {
	// NIC Name
	NetInfoName *string `json:"NetInfoName,omitnil,omitempty" name:"NetInfoName"`

	// Public IP address
	PublicIP *string `json:"PublicIP,omitnil,omitempty" name:"PublicIP"`

	// Metric data (bps/ms/%)
	Current *float64 `json:"Current,omitnil,omitempty" name:"Current"`
}

// Predefined struct for user
type UpdateApplicationInfoRequestParams struct {
	// Application ID
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`

	// Application name of the created app
	MpApplicationName *string `json:"MpApplicationName,omitnil,omitempty" name:"MpApplicationName"`

	// Remark of the created device
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway is selected. Specific meaning: Public cloud gateway: The device can only connect to public cloud gateway (Proximity access). Private gateway: The device can only connect to already launched private gateway (Proximity access or fixed ip access). Public cloud gateway and private gateway: The device can also connect to both public cloud gateway and already launched private gateway (Proximity access or fixed ip access).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`
}

type UpdateApplicationInfoRequest struct {
	*tchttp.BaseRequest
	
	// Application ID
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`

	// Application name of the created app
	MpApplicationName *string `json:"MpApplicationName,omitnil,omitempty" name:"MpApplicationName"`

	// Remark of the created device
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Access environment. 0: public cloud gateway; 1: private gateway; 2: public cloud gateway and private gateway. By default if left blank, public cloud gateway is selected. Specific meaning: Public cloud gateway: The device can only connect to public cloud gateway (Proximity access). Private gateway: The device can only connect to already launched private gateway (Proximity access or fixed ip access). Public cloud gateway and private gateway: The device can also connect to both public cloud gateway and already launched private gateway (Proximity access or fixed ip access).
	AccessScope *int64 `json:"AccessScope,omitnil,omitempty" name:"AccessScope"`
}

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

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

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

// Predefined struct for user
type UpdateApplicationKeyRequestParams struct {
	// base64 key string of the application
	MpApplicationKey *string `json:"MpApplicationKey,omitnil,omitempty" name:"MpApplicationKey"`

	// Application ID
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

type UpdateApplicationKeyRequest struct {
	*tchttp.BaseRequest
	
	// base64 key string of the application
	MpApplicationKey *string `json:"MpApplicationKey,omitnil,omitempty" name:"MpApplicationKey"`

	// Application ID
	MpApplicationId *string `json:"MpApplicationId,omitnil,omitempty" name:"MpApplicationId"`
}

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

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

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

// Predefined struct for user
type UpdateDeviceRequestParams struct {
	// Device ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

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

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

	// Update device network info
	UpdateNetInfo []*UpdateNetInfo `json:"UpdateNetInfo,omitnil,omitempty" name:"UpdateNetInfo"`

	// No traffic processing method for the device. 0: pay-as-you-go, 1: truncate and accelerate
	FlowTrunc *int64 `json:"FlowTrunc,omitnil,omitempty" name:"FlowTrunc"`
}

type UpdateDeviceRequest struct {
	*tchttp.BaseRequest
	
	// Device ID
	DeviceId *string `json:"DeviceId,omitnil,omitempty" name:"DeviceId"`

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

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

	// Update device network info
	UpdateNetInfo []*UpdateNetInfo `json:"UpdateNetInfo,omitnil,omitempty" name:"UpdateNetInfo"`

	// No traffic processing method for the device. 0: pay-as-you-go, 1: truncate and accelerate
	FlowTrunc *int64 `json:"FlowTrunc,omitnil,omitempty" name:"FlowTrunc"`
}

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

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

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

// Predefined struct for user
type UpdateGroupRequestParams struct {
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Group remark
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

type UpdateGroupRequest struct {
	*tchttp.BaseRequest
	
	// group ID
	GroupId *string `json:"GroupId,omitnil,omitempty" name:"GroupId"`

	// Group remark
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

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

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

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

// Predefined struct for user
type UpdateHardwareRequestParams struct {
	// Hardware ID
	HardwareId *string `json:"HardwareId,omitnil,omitempty" name:"HardwareId"`

	// Hardware Serial Number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`

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

type UpdateHardwareRequest struct {
	*tchttp.BaseRequest
	
	// Hardware ID
	HardwareId *string `json:"HardwareId,omitnil,omitempty" name:"HardwareId"`

	// Hardware Serial Number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`

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

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

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

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

// Predefined struct for user
type UpdateL3CidrRequestParams struct {
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

	// Interconnection rule CIDR
	Cidr1 *string `json:"Cidr1,omitnil,omitempty" name:"Cidr1"`

	// interworking device ID
	DeviceId1 *string `json:"DeviceId1,omitnil,omitempty" name:"DeviceId1"`

	// interworking device ID
	DeviceId2 *string `json:"DeviceId2,omitnil,omitempty" name:"DeviceId2"`

	// Interconnection rule CIDR
	Cidr2 *string `json:"Cidr2,omitnil,omitempty" name:"Cidr2"`
}

type UpdateL3CidrRequest struct {
	*tchttp.BaseRequest
	
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

	// Interconnection rule CIDR
	Cidr1 *string `json:"Cidr1,omitnil,omitempty" name:"Cidr1"`

	// interworking device ID
	DeviceId1 *string `json:"DeviceId1,omitnil,omitempty" name:"DeviceId1"`

	// interworking device ID
	DeviceId2 *string `json:"DeviceId2,omitnil,omitempty" name:"DeviceId2"`

	// Interconnection rule CIDR
	Cidr2 *string `json:"Cidr2,omitnil,omitempty" name:"Cidr2"`
}

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

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

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

// Predefined struct for user
type UpdateL3ConnRequestParams struct {
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

	// Interconnection rule remark
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

type UpdateL3ConnRequest struct {
	*tchttp.BaseRequest
	
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

	// Interconnection rule remark
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`
}

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

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

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

// Predefined struct for user
type UpdateL3SwitchRequestParams struct {
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

	// Interconnection rule switch
	Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"`
}

type UpdateL3SwitchRequest struct {
	*tchttp.BaseRequest
	
	// Interconnection rule ID
	L3ConnId *string `json:"L3ConnId,omitnil,omitempty" name:"L3ConnId"`

	// Interconnection rule switch
	Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"`
}

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

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

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

type UpdateNetInfo struct {
	// Network type:
	// Data
	// 1:Wi-Fi
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Enable or disable.
	DataEnable *bool `json:"DataEnable,omitnil,omitempty" name:"DataEnable"`

	// Uplink speed limit: bit
	UploadLimit *uint64 `json:"UploadLimit,omitnil,omitempty" name:"UploadLimit"`

	// Downstream speed limit: bit.
	DownloadLimit *uint64 `json:"DownloadLimit,omitnil,omitempty" name:"DownloadLimit"`

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

type VendorHardware struct {
	// Hardware id
	HardwareId *string `json:"HardwareId,omitnil,omitempty" name:"HardwareId"`

	// Hardware Serial Number
	SN *string `json:"SN,omitnil,omitempty" name:"SN"`

	// Creation time.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Activation status, empty: all; 1: to be activated; 2: activated
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Activation time
	ActiveTime *string `json:"ActiveTime,omitnil,omitempty" name:"ActiveTime"`

	// vendor remarks
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

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

	// License billing mode: 1. Tenant monthly payment 2. Manufacturer monthly payment 3. Permanent license.
	// Note: When the device is paid by the tenant and inactive (not selected for monthly or permanent payment), this parameter returns 1, indicating only that the tenant has paid. This parameter will be subsequently deprecated. For new access, please use LicensePayMode and Payer.
	LicenseChargingMode *int64 `json:"LicenseChargingMode,omitnil,omitempty" name:"LicenseChargingMode"`

	// Last online time
	LastOnlineTime *string `json:"LastOnlineTime,omitnil,omitempty" name:"LastOnlineTime"`

	// Authorization validity period
	// 0: Monthly authorization
	// 1: Permanent license
	// -1: Unknown
	LicensePayMode *int64 `json:"LicensePayMode,omitnil,omitempty" name:"LicensePayMode"`

	// Payer
	// 0: Customer payment
	// 1: Manufacturer payment
	Payer *int64 `json:"Payer,omitnil,omitempty" name:"Payer"`
}