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

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

// Predefined struct for user
type ApplyPublicIpsRequestParams struct {
	// Public network instance ID (route publishing mode must be STATIC)
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Apply for an Ip quantity, minimum is 1
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Applied Ip type, enumeration value: ipv4, ipv6
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`
}

type ApplyPublicIpsRequest struct {
	*tchttp.BaseRequest
	
	// Public network instance ID (route publishing mode must be STATIC)
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Apply for an Ip quantity, minimum is 1
	Count *int64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Applied Ip type, enumeration value: ipv4, ipv6
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`
}

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

// Predefined struct for user
type ApplyPublicIpsResponseParams struct {
	// Assigned public network IP address list.
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`

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

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

// Predefined struct for user
type CreateInstancesRequestParams struct {
	// Availability zone code, such as ap-guangzhou-1.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Model specifications, such as BMS5.MEDIUM8.
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

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

	// Private network instance ID in the format of net-xxx.
	PrivateNetworkId *string `json:"PrivateNetworkId,omitnil,omitempty" name:"PrivateNetworkId"`

	// Public network instance ID, in the format of net-xxx.
	PublicNetworkId *string `json:"PublicNetworkId,omitnil,omitempty" name:"PublicNetworkId"`

	// Image ID, for example img-centos-7.9.
	ImageId *string `json:"ImageId,omitnil,omitempty" name:"ImageId"`

	// Specify the quantity. Default is 1. Maximum is 50.
	InstanceCount *uint64 `json:"InstanceCount,omitnil,omitempty" name:"InstanceCount"`

	// Image version number. Only public images have the concept of version.
	VersionNumber *string `json:"VersionNumber,omitnil,omitempty" name:"VersionNumber"`

	// Whether to enable public IPv6, default false. Enabled, the system will allocate an additional IPv6 address after assigning an IPv4 address.
	EnableIpv6 *bool `json:"EnableIpv6,omitnil,omitempty" name:"EnableIpv6"`
}

type CreateInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Availability zone code, such as ap-guangzhou-1.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Model specifications, such as BMS5.MEDIUM8.
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

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

	// Private network instance ID in the format of net-xxx.
	PrivateNetworkId *string `json:"PrivateNetworkId,omitnil,omitempty" name:"PrivateNetworkId"`

	// Public network instance ID, in the format of net-xxx.
	PublicNetworkId *string `json:"PublicNetworkId,omitnil,omitempty" name:"PublicNetworkId"`

	// Image ID, for example img-centos-7.9.
	ImageId *string `json:"ImageId,omitnil,omitempty" name:"ImageId"`

	// Specify the quantity. Default is 1. Maximum is 50.
	InstanceCount *uint64 `json:"InstanceCount,omitnil,omitempty" name:"InstanceCount"`

	// Image version number. Only public images have the concept of version.
	VersionNumber *string `json:"VersionNumber,omitnil,omitempty" name:"VersionNumber"`

	// Whether to enable public IPv6, default false. Enabled, the system will allocate an additional IPv6 address after assigning an IPv4 address.
	EnableIpv6 *bool `json:"EnableIpv6,omitnil,omitempty" name:"EnableIpv6"`
}

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

// Predefined struct for user
type CreateInstancesResponseParams struct {
	// List of successfully created instance IDs.
	InstanceIdSet []*string `json:"InstanceIdSet,omitnil,omitempty" name:"InstanceIdSet"`

	// Count of failed instances. This field is returned only when partially failed, not returned when all successful.
	FailedCount *uint64 `json:"FailedCount,omitnil,omitempty" name:"FailedCount"`

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

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

// Predefined struct for user
type CreatePrivateNetworkInstanceRequestParams struct {
	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// The network address (host bits must be all 0s) must fall into one of the following RFC 1918 private ranges: `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`.
	Network *string `json:"Network,omitnil,omitempty" name:"Network"`

	// Mask digits. The upper limit is fixed at `28`, while the lower limit depends on the private segment it belongs to: `10.0.0.0/8` allows `8~28`, `172.16.0.0/12` allows `12~28`, `192.168.0.0/16` allows `16~28`. It must together form a valid network address with Network (host bits all set to 0).
	Mask *int64 `json:"Mask,omitnil,omitempty" name:"Mask"`
}

type CreatePrivateNetworkInstanceRequest struct {
	*tchttp.BaseRequest
	
	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// The network address (host bits must be all 0s) must fall into one of the following RFC 1918 private ranges: `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`.
	Network *string `json:"Network,omitnil,omitempty" name:"Network"`

	// Mask digits. The upper limit is fixed at `28`, while the lower limit depends on the private segment it belongs to: `10.0.0.0/8` allows `8~28`, `172.16.0.0/12` allows `12~28`, `192.168.0.0/16` allows `16~28`. It must together form a valid network address with Network (host bits all set to 0).
	Mask *int64 `json:"Mask,omitnil,omitempty" name:"Mask"`
}

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

// Predefined struct for user
type CreatePrivateNetworkInstanceResponseParams struct {
	// Private network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

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

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

// Predefined struct for user
type CreatePublicNetworkInstanceRequestParams struct {
	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Public network instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Network line
	Line *string `json:"Line,omitnil,omitempty" name:"Line"`

	// Routing mode
	RouteMode *string `json:"RouteMode,omitnil,omitempty" name:"RouteMode"`

	// Public network bandwidth (Mbps)
	Bandwidth *int64 `json:"Bandwidth,omitnil,omitempty" name:"Bandwidth"`
}

type CreatePublicNetworkInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Public network instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Network line
	Line *string `json:"Line,omitnil,omitempty" name:"Line"`

	// Routing mode
	RouteMode *string `json:"RouteMode,omitnil,omitempty" name:"RouteMode"`

	// Public network bandwidth (Mbps)
	Bandwidth *int64 `json:"Bandwidth,omitnil,omitempty" name:"Bandwidth"`
}

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

// Predefined struct for user
type CreatePublicNetworkInstanceResponseParams struct {
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

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

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

// Predefined struct for user
type DeletePrivateNetworkInstanceRequestParams struct {
	// Private network instance Id
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`
}

type DeletePrivateNetworkInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Private network instance Id
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`
}

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

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

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

// Predefined struct for user
type DeletePublicNetworkInstanceRequestParams struct {
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`
}

type DeletePublicNetworkInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`
}

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

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

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

// Predefined struct for user
type DescribeInstanceTypesRequestParams struct {
	// Availability zone code, such as ap-guangzhou-1. If not passed, return models under the account in all AZs.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`
}

type DescribeInstanceTypesRequest struct {
	*tchttp.BaseRequest
	
	// Availability zone code, such as ap-guangzhou-1. If not passed, return models under the account in all AZs.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`
}

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

// Predefined struct for user
type DescribeInstanceTypesResponseParams struct {
	// Model quota list.
	InstanceTypeQuotaSet []*InstanceTypeQuota `json:"InstanceTypeQuotaSet,omitnil,omitempty" name:"InstanceTypeQuotaSet"`

	// Number of returned records.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type DescribeInstanceTypesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeInstanceTypesResponseParams `json:"Response"`
}

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

// Predefined struct for user
type DescribeInstancesRequestParams struct {
	// Instance ID list for filtering by instance ID
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Instance name, supports fuzzy matching
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Availability zone code for filtering instances in the specified availability zone
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Instance status list for status filtering. Available values: allocating, running, isolating, isolated, terminating, error.
	InstanceStatus []*string `json:"InstanceStatus,omitnil,omitempty" name:"InstanceStatus"`

	// Public IPv4 address list, used for filtering instances by public IP address
	PublicIps []*string `json:"PublicIps,omitnil,omitempty" name:"PublicIps"`

	// Offset. Default value: 0
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned results. Default 20. Maximum 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribeInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID list for filtering by instance ID
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Instance name, supports fuzzy matching
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Availability zone code for filtering instances in the specified availability zone
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Instance status list for status filtering. Available values: allocating, running, isolating, isolated, terminating, error.
	InstanceStatus []*string `json:"InstanceStatus,omitnil,omitempty" name:"InstanceStatus"`

	// Public IPv4 address list, used for filtering instances by public IP address
	PublicIps []*string `json:"PublicIps,omitnil,omitempty" name:"PublicIps"`

	// Offset. Default value: 0
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned results. Default 20. Maximum 100.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

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

// Predefined struct for user
type DescribeInstancesResponseParams struct {
	// Instance detail list
	InstanceSet []*Instance `json:"InstanceSet,omitnil,omitempty" name:"InstanceSet"`

	// Number of Eligible Instances
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type DescribeInstancesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeInstancesResponseParams `json:"Response"`
}

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

// Predefined struct for user
type DescribePrivateNetworkInstancesRequestParams struct {
	// Private network instance Id
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

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

	// Number of items per page. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribePrivateNetworkInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Private network instance Id
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

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

	// Number of items per page. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

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

// Predefined struct for user
type DescribePrivateNetworkInstancesResponseParams struct {
	// Total number of private network instances
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Private network instance set
	PrivateNetworkInstanceSet []*PrivateNetworkInstanceInfo `json:"PrivateNetworkInstanceSet,omitnil,omitempty" name:"PrivateNetworkInstanceSet"`

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

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

// Predefined struct for user
type DescribePublicIpsRequestParams struct {
	// Filter by public network instance ID (substring match, union of multiple values)
	NetworkInstanceId []*string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Filter by availability zone/IDC
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Filter by IP (substring match, union of multiple values)
	Ip []*string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Filter by status, available values: `InUse`, `Unbound` (multiple values are combined with OR)
	State []*string `json:"State,omitnil,omitempty" name:"State"`

	// Filter by IP version. Available values: `Ipv4`, `Ipv6` (multiple values are combined).
	Type []*string `json:"Type,omitnil,omitempty" name:"Type"`

	// Sort by creation time, available values: `asc`, `desc` (default `desc`)
	OrderByCreateTime *string `json:"OrderByCreateTime,omitnil,omitempty" name:"OrderByCreateTime"`

	// Sort by update time, available values: `asc`, `desc` (priority is higher than sort by creation time)
	OrderByUpdateTime *string `json:"OrderByUpdateTime,omitnil,omitempty" name:"OrderByUpdateTime"`

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

	// Number of items per page. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribePublicIpsRequest struct {
	*tchttp.BaseRequest
	
	// Filter by public network instance ID (substring match, union of multiple values)
	NetworkInstanceId []*string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Filter by availability zone/IDC
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Filter by IP (substring match, union of multiple values)
	Ip []*string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// Filter by status, available values: `InUse`, `Unbound` (multiple values are combined with OR)
	State []*string `json:"State,omitnil,omitempty" name:"State"`

	// Filter by IP version. Available values: `Ipv4`, `Ipv6` (multiple values are combined).
	Type []*string `json:"Type,omitnil,omitempty" name:"Type"`

	// Sort by creation time, available values: `asc`, `desc` (default `desc`)
	OrderByCreateTime *string `json:"OrderByCreateTime,omitnil,omitempty" name:"OrderByCreateTime"`

	// Sort by update time, available values: `asc`, `desc` (priority is higher than sort by creation time)
	OrderByUpdateTime *string `json:"OrderByUpdateTime,omitnil,omitempty" name:"OrderByUpdateTime"`

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

	// Number of items per page. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

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

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

	// Assigned public network IP address list
	IpInfoSet []*IpInfo `json:"IpInfoSet,omitnil,omitempty" name:"IpInfoSet"`

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

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

// Predefined struct for user
type DescribePublicNetworkInstancesRequestParams struct {
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Public network instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

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

	// Number of items per page. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribePublicNetworkInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Public network instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

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

	// Number of items per page. Default 20. Maximum 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

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

// Predefined struct for user
type DescribePublicNetworkInstancesResponseParams struct {
	// Total number of public network instances
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// public network instance collection
	PublicNetworkInstanceSet []*PublicNetworkInstanceInfo `json:"PublicNetworkInstanceSet,omitnil,omitempty" name:"PublicNetworkInstanceSet"`

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

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

// Predefined struct for user
type DescribeZoneDataRequestParams struct {
	// Availability zone id
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Metric name (inbw: inbound bandwidth, outbw: outbound bandwidth)
	MetricName *string `json:"MetricName,omitnil,omitempty" name:"MetricName"`

	// Start time (UTC time)
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time (UTC time), query up to 2 days.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DescribeZoneDataRequest struct {
	*tchttp.BaseRequest
	
	// Availability zone id
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Metric name (inbw: inbound bandwidth, outbw: outbound bandwidth)
	MetricName *string `json:"MetricName,omitnil,omitempty" name:"MetricName"`

	// Start time (UTC time)
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time (UTC time), query up to 2 days.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

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

// Predefined struct for user
type DescribeZoneDataResponseParams struct {
	// Stats, metrics inbw|outbw in Mbps
	Data []*SwitchData `json:"Data,omitnil,omitempty" name:"Data"`

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

type DescribeZoneDataResponse struct {
	*tchttp.BaseResponse
	Response *DescribeZoneDataResponseParams `json:"Response"`
}

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

// Predefined struct for user
type DescribeZonesRequestParams struct {

}

type DescribeZonesRequest struct {
	*tchttp.BaseRequest
	
}

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

// Predefined struct for user
type DescribeZonesResponseParams struct {
	// Availability zone list of all regions.
	ZoneSet []*ZoneInfo `json:"ZoneSet,omitnil,omitempty" name:"ZoneSet"`

	// Total number of availability zones.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

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

type DescribeZonesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeZonesResponseParams `json:"Response"`
}

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

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

	// Error code.
	ErrorCode *string `json:"ErrorCode,omitnil,omitempty" name:"ErrorCode"`

	// Error message.
	ErrorMessage *string `json:"ErrorMessage,omitnil,omitempty" name:"ErrorMessage"`
}

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

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

	// Bound Physical Machine ID
	MachineId *string `json:"MachineId,omitnil,omitempty" name:"MachineId"`

	// Model specifications
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Availability zone code
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Image ID
	ImageId *string `json:"ImageId,omitnil,omitempty" name:"ImageId"`

	// Image version number
	VersionNumber *string `json:"VersionNumber,omitnil,omitempty" name:"VersionNumber"`

	// Instance status, value range: allocating, running, isolating, isolated, terminating, error.
	InstanceStatus *string `json:"InstanceStatus,omitnil,omitempty" name:"InstanceStatus"`

	// Operation status: normal, starting, stopping, stopped, rebooting.
	OperateStatus *string `json:"OperateStatus,omitnil,omitempty" name:"OperateStatus"`

	// VPC ID
	PrivateNetworkId *string `json:"PrivateNetworkId,omitnil,omitempty" name:"PrivateNetworkId"`

	// private IPv4 address
	PrivateIp *string `json:"PrivateIp,omitnil,omitempty" name:"PrivateIp"`

	// private IPv6 address
	PrivateIpV6 *string `json:"PrivateIpV6,omitnil,omitempty" name:"PrivateIpV6"`

	// Public network ID
	PublicNetworkId *string `json:"PublicNetworkId,omitnil,omitempty" name:"PublicNetworkId"`

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

	// Public IPv6 address
	PublicIpV6 *string `json:"PublicIpV6,omitnil,omitempty" name:"PublicIpV6"`

	// Creation time, expressed according to the ISO8601 standard and using the UTC time. The format is YYYY-MM-DDThh:mm:ssZ.
	CreatedTime *string `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`
}

type InstanceTypeQuota struct {
	// Availability zone code.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Model specifications.
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Model family.
	InstanceFamily *string `json:"InstanceFamily,omitnil,omitempty" name:"InstanceFamily"`

	// Number of CPU cores.
	CpuCores *int64 `json:"CpuCores,omitnil,omitempty" name:"CpuCores"`

	// CPU type.
	CpuType *string `json:"CpuType,omitnil,omitempty" name:"CpuType"`

	// Memory size (GB).
	MemoryGb *int64 `json:"MemoryGb,omitnil,omitempty" name:"MemoryGb"`

	// System disk type.
	SystemDiskType *string `json:"SystemDiskType,omitnil,omitempty" name:"SystemDiskType"`

	// System disk size (GB).
	SystemDiskSize *int64 `json:"SystemDiskSize,omitnil,omitempty" name:"SystemDiskSize"`

	// Number of system disks.
	SystemDiskCount *uint64 `json:"SystemDiskCount,omitnil,omitempty" name:"SystemDiskCount"`

	// Data disk type.
	DataDiskType *string `json:"DataDiskType,omitnil,omitempty" name:"DataDiskType"`

	// Data disk size (GB).
	DataDiskSize *int64 `json:"DataDiskSize,omitnil,omitempty" name:"DataDiskSize"`

	// Number of data disks.
	DataDiskCount *uint64 `json:"DataDiskCount,omitnil,omitempty" name:"DataDiskCount"`

	// Disk description string (backward compatibility).
	DiskType *string `json:"DiskType,omitnil,omitempty" name:"DiskType"`

	// Network interface type.
	NetworkInterfaceType *string `json:"NetworkInterfaceType,omitnil,omitempty" name:"NetworkInterfaceType"`

	// GPU type. Empty string if no GPU is available.
	GpuType *string `json:"GpuType,omitnil,omitempty" name:"GpuType"`

	// Quota quantity. 0 indicates no restriction.
	Quota *uint64 `json:"Quota,omitnil,omitempty" name:"Quota"`
}

type IpInfo struct {
	// 10.100.0.20
	Ip *string `json:"Ip,omitnil,omitempty" name:"Ip"`

	// epn-asdfghjkl
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// epm-asdfghjkl
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Unbound
	State *string `json:"State,omitnil,omitempty" name:"State"`

	// Ipv4
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// 2026-04-07T00:00:00
	CreatedAt *string `json:"CreatedAt,omitnil,omitempty" name:"CreatedAt"`

	// 2026-04-07T00:00:00
	UpdatedAt *string `json:"UpdatedAt,omitnil,omitempty" name:"UpdatedAt"`
}

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

	// New instance name, 1-60 characters. Import at least one with NewPublicIp.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// New public IP address (select from available IP addresses of the public network instance bound to the instance). Provide at least one of this or InstanceName.
	NewPublicIp *string `json:"NewPublicIp,omitnil,omitempty" name:"NewPublicIp"`

	// IP type, ipv4 or ipv6. Default is ipv4. Valid only when NewPublicIp is specified.
	IpType *string `json:"IpType,omitnil,omitempty" name:"IpType"`
}

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

	// New instance name, 1-60 characters. Import at least one with NewPublicIp.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// New public IP address (select from available IP addresses of the public network instance bound to the instance). Provide at least one of this or InstanceName.
	NewPublicIp *string `json:"NewPublicIp,omitnil,omitempty" name:"NewPublicIp"`

	// IP type, ipv4 or ipv6. Default is ipv4. Valid only when NewPublicIp is specified.
	IpType *string `json:"IpType,omitnil,omitempty" name:"IpType"`
}

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

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

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

// Predefined struct for user
type ModifyPrivateNetworkInstanceRequestParams struct {
	// Private network instance Id
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`
}

type ModifyPrivateNetworkInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Private network instance Id
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`
}

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

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

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

// Predefined struct for user
type ModifyPublicNetworkInstanceRequestParams struct {
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`
}

type ModifyPublicNetworkInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// New instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`
}

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

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

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

type PrivateNetworkInstanceInfo struct {
	// Private network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Private network instance name
	NetworkInstanceName *string `json:"NetworkInstanceName,omitnil,omitempty" name:"NetworkInstanceName"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

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

	// Network mask
	Mask *int64 `json:"Mask,omitnil,omitempty" name:"Mask"`

	// Number of associated physical machines
	ServerCount *int64 `json:"ServerCount,omitnil,omitempty" name:"ServerCount"`

	// Available Ip quantity
	AvailableIpCount *int64 `json:"AvailableIpCount,omitnil,omitempty" name:"AvailableIpCount"`

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

	// Update time
	UpdatedAt *string `json:"UpdatedAt,omitnil,omitempty" name:"UpdatedAt"`
}

type PublicNetworkInstanceInfo struct {
	// Public network instance ID
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Availability zone ID.
	ZoneId *string `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

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

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

	// Line information
	Line *string `json:"Line,omitnil,omitempty" name:"Line"`

	// Routing mode, enumeration value: STATIC, BGP, OSPF
	RouteMode *string `json:"RouteMode,omitnil,omitempty" name:"RouteMode"`

	// Number of Associated Physical Servers
	ServerCount *int64 `json:"ServerCount,omitnil,omitempty" name:"ServerCount"`

	// Applied Ipv4 quantity
	Ipv4Count *int64 `json:"Ipv4Count,omitnil,omitempty" name:"Ipv4Count"`

	// Number of applied Ipv6 addresses
	Ipv6Count *int64 `json:"Ipv6Count,omitnil,omitempty" name:"Ipv6Count"`

	// Associated Ipv4 subnet
	// Note: This field may return null, indicating that no valid values can be obtained.
	Ipv4CidrSet []*PublicNetworkSegment `json:"Ipv4CidrSet,omitnil,omitempty" name:"Ipv4CidrSet"`

	// Associated Ipv6 segment
	// Note: This field may return null, indicating that no valid values can be obtained.
	Ipv6CidrSet []*PublicNetworkSegment `json:"Ipv6CidrSet,omitnil,omitempty" name:"Ipv6CidrSet"`

	// Public network instance creation time
	CreatedAt *string `json:"CreatedAt,omitnil,omitempty" name:"CreatedAt"`

	// Public network instance last modified
	UpdatedAt *string `json:"UpdatedAt,omitnil,omitempty" name:"UpdatedAt"`
}

type PublicNetworkSegment struct {
	// Cidr of the subnet
	Cidr *string `json:"Cidr,omitnil,omitempty" name:"Cidr"`

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

// Predefined struct for user
type ReleasePublicIpRequestParams struct {
	// Public network instance ID (route publishing mode is STATIC)
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Ip type to be released, enumeration value: ipv4, ipv6
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// List of Ip addresses to be released
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`
}

type ReleasePublicIpRequest struct {
	*tchttp.BaseRequest
	
	// Public network instance ID (route publishing mode is STATIC)
	NetworkInstanceId *string `json:"NetworkInstanceId,omitnil,omitempty" name:"NetworkInstanceId"`

	// Ip type to be released, enumeration value: ipv4, ipv6
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// List of Ip addresses to be released
	IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"`
}

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

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

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

type SwitchData struct {
	// UTC time
	Time *string `json:"Time,omitnil,omitempty" name:"Time"`

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

// Predefined struct for user
type TerminateInstancesRequestParams struct {
	// Instance ID list. Maximum number of IDs: 100.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

type TerminateInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID list. Maximum number of IDs: 100.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`
}

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

// Predefined struct for user
type TerminateInstancesResponseParams struct {
	// List of instance IDs successfully terminated.
	InstanceIdSet []*string `json:"InstanceIdSet,omitnil,omitempty" name:"InstanceIdSet"`

	// List of instances with termination failed (returned when partially successful).
	// Note: This field may return null, indicating that no valid values can be obtained.
	FailedInstanceSet []*FailedInstance `json:"FailedInstanceSet,omitnil,omitempty" name:"FailedInstanceSet"`

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

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

type ZoneInfo struct {
	// AZ ID.
	ZoneId *int64 `json:"ZoneId,omitnil,omitempty" name:"ZoneId"`

	// Availability zone code.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Chinese Name of Availability Zone.
	ZoneName *string `json:"ZoneName,omitnil,omitempty" name:"ZoneName"`

	// Availability zone English name.
	ZoneNameEn *string `json:"ZoneNameEn,omitnil,omitempty" name:"ZoneNameEn"`

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

	// Area code
	Location *string `json:"Location,omitnil,omitempty" name:"Location"`

	// Zone Name
	LocationName *string `json:"LocationName,omitnil,omitempty" name:"LocationName"`
}