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

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 ActionSummaryOverviewItem struct {
	// Transaction type code.
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Transaction type name.
	ActionTypeName *string `json:"ActionTypeName,omitnil,omitempty" name:"ActionTypeName"`

	// Actual total consumption, up to 8 decimal places.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

	// Voucher payment amount, up to 8 decimal places.
	VoucherPayAmount *string `json:"VoucherPayAmount,omitnil,omitempty" name:"VoucherPayAmount"`

	// Total consumption, up to 8 decimal places.
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`
}

// Predefined struct for user
type AllocateCreditPoolRequestParams struct {
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

	// Allocated amount.
	Credit *float64 `json:"Credit,omitnil,omitempty" name:"Credit"`
}

type AllocateCreditPoolRequest struct {
	*tchttp.BaseRequest
	
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

	// Allocated amount.
	Credit *float64 `json:"Credit,omitnil,omitempty" name:"Credit"`
}

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

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

// Predefined struct for user
type AllocateCreditPoolResponseParams struct {
	// Current total remaining quota.
	RemainingCredit *float64 `json:"RemainingCredit,omitnil,omitempty" name:"RemainingCredit"`

	// Total allocated quota.
	TotalCredit *float64 `json:"TotalCredit,omitnil,omitempty" name:"TotalCredit"`

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

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

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

// Predefined struct for user
type AllocateCustomerCreditRequestParams struct {
	// Specific value of the credit allocated to the customer
	AddedCredit *float64 `json:"AddedCredit,omitnil,omitempty" name:"AddedCredit"`

	// Customer UIN
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

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

type AllocateCustomerCreditRequest struct {
	*tchttp.BaseRequest
	
	// Specific value of the credit allocated to the customer
	AddedCredit *float64 `json:"AddedCredit,omitnil,omitempty" name:"AddedCredit"`

	// Customer UIN
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

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

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

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

// Predefined struct for user
type AllocateCustomerCreditResponseParams struct {
	// The updated total credit
	TotalCredit *float64 `json:"TotalCredit,omitnil,omitempty" name:"TotalCredit"`

	// The updated available credit
	RemainingCredit *float64 `json:"RemainingCredit,omitnil,omitempty" name:"RemainingCredit"`

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

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

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

// Predefined struct for user
type ApproveClientApplyRequestParams struct {
	// Sub-customer uin.
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// Approval type. only supports pass and reject.
	ApproveType *string `json:"ApproveType,omitnil,omitempty" name:"ApproveType"`

	// Reason for rejection. required only when approvetype is reject.
	RejectReason *string `json:"RejectReason,omitnil,omitempty" name:"RejectReason"`
}

type ApproveClientApplyRequest struct {
	*tchttp.BaseRequest
	
	// Sub-customer uin.
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// Approval type. only supports pass and reject.
	ApproveType *string `json:"ApproveType,omitnil,omitempty" name:"ApproveType"`

	// Reason for rejection. required only when approvetype is reject.
	RejectReason *string `json:"RejectReason,omitnil,omitempty" name:"RejectReason"`
}

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

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

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

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

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

// Predefined struct for user
type ApproveSubAgentApplyRequestParams struct {
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

	// Approval type. Only pass and reject are supported.
	ApproveType *string `json:"ApproveType,omitnil,omitempty" name:"ApproveType"`

	// Reason for rejection. Fill in only when ApproveType is reject.
	RejectReason *string `json:"RejectReason,omitnil,omitempty" name:"RejectReason"`
}

type ApproveSubAgentApplyRequest struct {
	*tchttp.BaseRequest
	
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

	// Approval type. Only pass and reject are supported.
	ApproveType *string `json:"ApproveType,omitnil,omitempty" name:"ApproveType"`

	// Reason for rejection. Fill in only when ApproveType is reject.
	RejectReason *string `json:"RejectReason,omitnil,omitempty" name:"RejectReason"`
}

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

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

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

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

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

type BillDetailData struct {
	// reseller account.
	PayerAccountId *int64 `json:"PayerAccountId,omitnil,omitempty" name:"PayerAccountId"`

	// Subaccount.
	OwnerAccountId *int64 `json:"OwnerAccountId,omitnil,omitempty" name:"OwnerAccountId"`

	// Operator account.
	OperatorAccountId *int64 `json:"OperatorAccountId,omitnil,omitempty" name:"OperatorAccountId"`

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

	// Billing mode
	// .
	// Monthly subscription (annual and monthly).
	// Pay-As-You-Go resources.
	// Standard ri reserved instance.
	BillingMode *string `json:"BillingMode,omitnil,omitempty" name:"BillingMode"`

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

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

	// Resource available zone.
	AvailabilityZone *string `json:"AvailabilityZone,omitnil,omitempty" name:"AvailabilityZone"`

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

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

	// Sub-Product name
	// .
	SubProductName *string `json:"SubProductName,omitnil,omitempty" name:"SubProductName"`

	// Settlement type.
	TransactionType *string `json:"TransactionType,omitnil,omitempty" name:"TransactionType"`

	// <Transaction id>.
	TransactionId *string `json:"TransactionId,omitnil,omitempty" name:"TransactionId"`

	// Settlement time.
	TransactionTime *string `json:"TransactionTime,omitnil,omitempty" name:"TransactionTime"`

	// <Resource start time>.
	UsageStartTime *string `json:"UsageStartTime,omitnil,omitempty" name:"UsageStartTime"`

	// <Resource end usage time>.
	UsageEndTime *string `json:"UsageEndTime,omitnil,omitempty" name:"UsageEndTime"`

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

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

	// Component list price.
	ComponentListPrice *string `json:"ComponentListPrice,omitnil,omitempty" name:"ComponentListPrice"`

	// Price unit.
	ComponentPriceMeasurementUnit *string `json:"ComponentPriceMeasurementUnit,omitnil,omitempty" name:"ComponentPriceMeasurementUnit"`

	// Component usage.
	ComponentUsage *string `json:"ComponentUsage,omitnil,omitempty" name:"ComponentUsage"`

	// Component usage unit.
	ComponentUsageUnit *string `json:"ComponentUsageUnit,omitnil,omitempty" name:"ComponentUsageUnit"`

	// Resource usage duration.
	UsageDuration *string `json:"UsageDuration,omitnil,omitempty" name:"UsageDuration"`

	// duration unit.
	DurationUnit *string `json:"DurationUnit,omitnil,omitempty" name:"DurationUnit"`

	// Total original price.
	// Original cost = component list price * component usage * usage duration.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

	// Discount (default is 1) - abandoned.
	DiscountRate *string `json:"DiscountRate,omitnil,omitempty" name:"DiscountRate"`

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

	// Total cost after discount.
	TotalAmountAfterDiscount *string `json:"TotalAmountAfterDiscount,omitnil,omitempty" name:"TotalAmountAfterDiscount"`

	// Voucher deduction amount.
	VoucherDeduction *string `json:"VoucherDeduction,omitnil,omitempty" name:"VoucherDeduction"`

	// = Total Amount After Discount - Voucher Deduction
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`

	// Identifier (id).
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

	// customer discount rate. The discount rate applied to the reseller's customer, which set by reseller, default value equal to 1.
	CustomerDiscountRate *string `json:"CustomerDiscountRate,omitnil,omitempty" name:"CustomerDiscountRate"`
}

type BillQueryFilterMsg struct {
	// <p>Query condition key: various codes</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

	// <p>Query condition value: Display name</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`
}

type BusinessInfo struct {
	// Product name.
	BusinessCodeName *string `json:"BusinessCodeName,omitnil,omitempty" name:"BusinessCodeName"`

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

	// Original price.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

	// Voucher amount.
	VoucherPayAmount *string `json:"VoucherPayAmount,omitnil,omitempty" name:"VoucherPayAmount"`

	// RI deduction.
	RICost *string `json:"RICost,omitnil,omitempty" name:"RICost"`

	// Total amount.
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`
}

type BusinessSummaryOverviewItem struct {
	// Product code.
	BusinessCode *string `json:"BusinessCode,omitnil,omitempty" name:"BusinessCode"`

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

	// List price, keep 8 decimal places.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

	// Voucher payment amount, keep 8 decimal places.
	VoucherPayAmount *string `json:"VoucherPayAmount,omitnil,omitempty" name:"VoucherPayAmount"`

	// Consumption amount, keep 8 decimal places.
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`
}

type CostAnalyzeDimensionData struct {
	// <p>Total number of entries by dimension statistics</p>
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// <p>Sum value</p>
	SumCost *string `json:"SumCost,omitnil,omitempty" name:"SumCost"`

	// <p>Total amount by date dimension</p>
	PeriodItemDetail []*PeriodItemDetail `json:"PeriodItemDetail,omitnil,omitempty" name:"PeriodItemDetail"`
}

type CostAnalyzeFilter struct {
	// <p>Contains product code</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	BusinessIn []*string `json:"BusinessIn,omitnil,omitempty" name:"BusinessIn"`

	// <p>Contains sub-product code</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	ProductIn []*string `json:"ProductIn,omitnil,omitempty" name:"ProductIn"`

	// <p>Contains region id</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	RegionIn []*string `json:"RegionIn,omitnil,omitempty" name:"RegionIn"`

	// <p>Contains transaction type</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	ActionTypeIn []*string `json:"ActionTypeIn,omitnil,omitempty" name:"ActionTypeIn"`

	// <p>Includes payment mode</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	PayModeIn []*string `json:"PayModeIn,omitnil,omitempty" name:"PayModeIn"`

	// <p>Include project name</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	ProjectIn []*string `json:"ProjectIn,omitnil,omitempty" name:"ProjectIn"`

	// <p>Contains payer uin</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	PayerUinIn []*string `json:"PayerUinIn,omitnil,omitempty" name:"PayerUinIn"`

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

	// <p>Tag value list</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	TagIn []*string `json:"TagIn,omitnil,omitempty" name:"TagIn"`

	// <p>Contains availability zones</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	ZoneIn []*string `json:"ZoneIn,omitnil,omitempty" name:"ZoneIn"`

	// <p>Owner uin</p>
	OwnerUinIn []*string `json:"OwnerUinIn,omitnil,omitempty" name:"OwnerUinIn"`

	// <p>Component type info</p>
	ComponentIn []*string `json:"ComponentIn,omitnil,omitempty" name:"ComponentIn"`

	// <p>Component name</p>
	ItemIn []*string `json:"ItemIn,omitnil,omitempty" name:"ItemIn"`

	// <p>Resource id information</p>
	ResourceIn []*string `json:"ResourceIn,omitnil,omitempty" name:"ResourceIn"`
}

type CostAnalyzeFilterDetail struct {
	// <p>Product key-value pair.</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Business []*BillQueryFilterMsg `json:"Business,omitnil,omitempty" name:"Business"`

	// <p>Region key-value pair</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Region []*BillQueryFilterMsg `json:"Region,omitnil,omitempty" name:"Region"`

	// <p>Availability zone key-value pair</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Zone []*BillQueryFilterMsg `json:"Zone,omitnil,omitempty" name:"Zone"`

	// <p>Transaction type key-value pair</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	ActionType []*BillQueryFilterMsg `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// <p>Key-value pair of payment mode</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	PayMode []*BillQueryFilterMsg `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// <p>Project key-value pair</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	Project []*BillQueryFilterMsg `json:"Project,omitnil,omitempty" name:"Project"`

	// <p>Payer uin information</p>
	// Note: This field may return null, indicating that no valid values can be obtained.
	PayerUin []*BillQueryFilterMsg `json:"PayerUin,omitnil,omitempty" name:"PayerUin"`

	// <p>Sub-account uin information</p>
	OwnerUin []*BillQueryFilterMsg `json:"OwnerUin,omitnil,omitempty" name:"OwnerUin"`
}

type CountryCodeItem struct {
	// Country/region name in English
	EnName *string `json:"EnName,omitnil,omitempty" name:"EnName"`

	// Country/region name in Chinese
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// ISO2 standard country/region code
	IOS2 *string `json:"IOS2,omitnil,omitempty" name:"IOS2"`

	// ISO3 standard country/region code
	IOS3 *string `json:"IOS3,omitnil,omitempty" name:"IOS3"`

	// International dialing code
	Code *string `json:"Code,omitnil,omitempty" name:"Code"`
}

// Predefined struct for user
type CreateAccountRequestParams struct {
	// Account type of a new customer.
	// Valid values: `personal`, `company`.
	AccountType *string `json:"AccountType,omitnil,omitempty" name:"AccountType"`

	// Registered email address, which should be valid and correct.
	// such as "account@qq.com"
	Mail *string `json:"Mail,omitnil,omitempty" name:"Mail"`

	// Account password.
	// Length limit: 8-20 characters
	// A password must contain numbers, letters, and symbols (!@#$%^&*()). Space is not allowed.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// The confirmed password, which must be the same as that entered in the `Password` field.
	ConfirmPassword *string `json:"ConfirmPassword,omitnil,omitempty" name:"ConfirmPassword"`

	// Customer's mobile number.
	// The caller needs to ensure the validity and correctness of the mobile number. A global mobile number within a range of 1-32 digits is allowed.
	// The system will perform binding limit verification of the mobile number you provide, allowing a maximum of 5 accounts per mobile number.
	PhoneNum *string `json:"PhoneNum,omitnil,omitempty" name:"PhoneNum"`

	// Customer's country/region code, which can be obtained via the  [GetCountryCodes API](https://www.tencentcloud.com/document/product/1085/51416), such as "852".
	// Parameter value is not allowed to be 7,380,86.
	CountryCode *string `json:"CountryCode,omitnil,omitempty" name:"CountryCode"`

	// Customer's ISO2 standard country/region code, which can be obtained via the [GetCountryCodes API](https://www.tencentcloud.com/document/product/1085/51416). It should correspond to the `CountryCode` field, such as `HK`.
	Area *string `json:"Area,omitnil,omitempty" name:"Area"`

	// VerifyCode. This parameter is required. 
	// Use the [SendVerifyCode API](https://www.tencentcloud.com/document/product/1085/65907) to obtain the verifycode.The SendVerifyCode API sends a 6-digit verifycode to your specified mobile number via SMS. After receiving it, you need to pass it along with other parameters.
	VerifyCode *string `json:"VerifyCode,omitnil,omitempty" name:"VerifyCode"`

	// Layer-1 industry id. This is a required item and can be obtained via the [ GetTradeConfigList  API](https://www.tencentcloud.com/zh/document/product/1085/68181),
	// such as "kghy_01".
	TradeOne *string `json:"TradeOne,omitnil,omitempty" name:"TradeOne"`

	// Layer-2 industry id. This is a required item and can be obtained via the [ GetTradeConfigList API](https://www.tencentcloud.com/zh/document/product/1085/68181),
	// such as "kghy_0101"
	TradeTwo *string `json:"TradeTwo,omitnil,omitempty" name:"TradeTwo"`

	// Extension field, which is left empty by default.
	Extended *string `json:"Extended,omitnil,omitempty" name:"Extended"`

	// For individual customers, fill in the name. for corporate customers, fill in the full company name.Constraints:
	// 1. Length: 2~200 characters
	// 2. Customer name cannot be pure numbers
	CustomerName *string `json:"CustomerName,omitnil,omitempty" name:"CustomerName"`
}

type CreateAccountRequest struct {
	*tchttp.BaseRequest
	
	// Account type of a new customer.
	// Valid values: `personal`, `company`.
	AccountType *string `json:"AccountType,omitnil,omitempty" name:"AccountType"`

	// Registered email address, which should be valid and correct.
	// such as "account@qq.com"
	Mail *string `json:"Mail,omitnil,omitempty" name:"Mail"`

	// Account password.
	// Length limit: 8-20 characters
	// A password must contain numbers, letters, and symbols (!@#$%^&*()). Space is not allowed.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// The confirmed password, which must be the same as that entered in the `Password` field.
	ConfirmPassword *string `json:"ConfirmPassword,omitnil,omitempty" name:"ConfirmPassword"`

	// Customer's mobile number.
	// The caller needs to ensure the validity and correctness of the mobile number. A global mobile number within a range of 1-32 digits is allowed.
	// The system will perform binding limit verification of the mobile number you provide, allowing a maximum of 5 accounts per mobile number.
	PhoneNum *string `json:"PhoneNum,omitnil,omitempty" name:"PhoneNum"`

	// Customer's country/region code, which can be obtained via the  [GetCountryCodes API](https://www.tencentcloud.com/document/product/1085/51416), such as "852".
	// Parameter value is not allowed to be 7,380,86.
	CountryCode *string `json:"CountryCode,omitnil,omitempty" name:"CountryCode"`

	// Customer's ISO2 standard country/region code, which can be obtained via the [GetCountryCodes API](https://www.tencentcloud.com/document/product/1085/51416). It should correspond to the `CountryCode` field, such as `HK`.
	Area *string `json:"Area,omitnil,omitempty" name:"Area"`

	// VerifyCode. This parameter is required. 
	// Use the [SendVerifyCode API](https://www.tencentcloud.com/document/product/1085/65907) to obtain the verifycode.The SendVerifyCode API sends a 6-digit verifycode to your specified mobile number via SMS. After receiving it, you need to pass it along with other parameters.
	VerifyCode *string `json:"VerifyCode,omitnil,omitempty" name:"VerifyCode"`

	// Layer-1 industry id. This is a required item and can be obtained via the [ GetTradeConfigList  API](https://www.tencentcloud.com/zh/document/product/1085/68181),
	// such as "kghy_01".
	TradeOne *string `json:"TradeOne,omitnil,omitempty" name:"TradeOne"`

	// Layer-2 industry id. This is a required item and can be obtained via the [ GetTradeConfigList API](https://www.tencentcloud.com/zh/document/product/1085/68181),
	// such as "kghy_0101"
	TradeTwo *string `json:"TradeTwo,omitnil,omitempty" name:"TradeTwo"`

	// Extension field, which is left empty by default.
	Extended *string `json:"Extended,omitnil,omitempty" name:"Extended"`

	// For individual customers, fill in the name. for corporate customers, fill in the full company name.Constraints:
	// 1. Length: 2~200 characters
	// 2. Customer name cannot be pure numbers
	CustomerName *string `json:"CustomerName,omitnil,omitempty" name:"CustomerName"`
}

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

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

// Predefined struct for user
type CreateAccountResponseParams struct {
	// Account UIN
	Uin *string `json:"Uin,omitnil,omitempty" name:"Uin"`

	// Binding Results
	Reason *string `json:"Reason,omitnil,omitempty" name:"Reason"`

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

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

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

// Predefined struct for user
type CreateAndSendClientInvitationMailRequestParams struct {
	// Email address that receives the customer invitation link.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// Invite a role.
	// Note: if no value is passed, it defaults to the sub - customer.
	// Client: customer.
	// SubAgent: second-level reseller.
	InvitationRole *string `json:"InvitationRole,omitnil,omitempty" name:"InvitationRole"`

	// Specifies the application material.
	// Note: this field takes effect only in the scenario of inviting a second-level reseller.
	MaterialUrl *string `json:"MaterialUrl,omitnil,omitempty" name:"MaterialUrl"`
}

type CreateAndSendClientInvitationMailRequest struct {
	*tchttp.BaseRequest
	
	// Email address that receives the customer invitation link.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// Invite a role.
	// Note: if no value is passed, it defaults to the sub - customer.
	// Client: customer.
	// SubAgent: second-level reseller.
	InvitationRole *string `json:"InvitationRole,omitnil,omitempty" name:"InvitationRole"`

	// Specifies the application material.
	// Note: this field takes effect only in the scenario of inviting a second-level reseller.
	MaterialUrl *string `json:"MaterialUrl,omitnil,omitempty" name:"MaterialUrl"`
}

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

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

// Predefined struct for user
type CreateAndSendClientInvitationMailResponseParams struct {
	// Specifies the invitation link for the customer.
	InvitationLink *string `json:"InvitationLink,omitnil,omitempty" name:"InvitationLink"`

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

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

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

type CustomerBillDetailData struct {
	// Distributor account.
	PayerAccountId *int64 `json:"PayerAccountId,omitnil,omitempty" name:"PayerAccountId"`

	// Sub-Customer account.
	OwnerAccountId *int64 `json:"OwnerAccountId,omitnil,omitempty" name:"OwnerAccountId"`

	// Operator account.
	OperatorAccountId *int64 `json:"OperatorAccountId,omitnil,omitempty" name:"OperatorAccountId"`

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

	// Billing mode
	// .
	// Monthly subscription.
	// Pay-As-You-Go resources.
	// Standard ri reserved instances.
	BillingMode *string `json:"BillingMode,omitnil,omitempty" name:"BillingMode"`

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

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

	// Resource availability zone.
	AvailabilityZone *string `json:"AvailabilityZone,omitnil,omitempty" name:"AvailabilityZone"`

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

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

	// Sub-Product name
	// .
	SubProductName *string `json:"SubProductName,omitnil,omitempty" name:"SubProductName"`

	// Settlement type.
	TransactionType *string `json:"TransactionType,omitnil,omitempty" name:"TransactionType"`

	// Transaction flow id.
	TransactionId *string `json:"TransactionId,omitnil,omitempty" name:"TransactionId"`

	// Settlement time.
	TransactionTime *string `json:"TransactionTime,omitnil,omitempty" name:"TransactionTime"`

	// Resource start time.
	UsageStartTime *string `json:"UsageStartTime,omitnil,omitempty" name:"UsageStartTime"`

	// Resource end time.
	UsageEndTime *string `json:"UsageEndTime,omitnil,omitempty" name:"UsageEndTime"`

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

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

	// Component list price.
	ComponentListPrice *string `json:"ComponentListPrice,omitnil,omitempty" name:"ComponentListPrice"`

	// Price unit.
	ComponentPriceMeasurementUnit *string `json:"ComponentPriceMeasurementUnit,omitnil,omitempty" name:"ComponentPriceMeasurementUnit"`

	// Component usage.
	ComponentUsage *string `json:"ComponentUsage,omitnil,omitempty" name:"ComponentUsage"`

	// Component usage unit.
	ComponentUsageUnit *string `json:"ComponentUsageUnit,omitnil,omitempty" name:"ComponentUsageUnit"`

	// Resource usage duration.
	UsageDuration *string `json:"UsageDuration,omitnil,omitempty" name:"UsageDuration"`

	// duration unit.
	DurationUnit *string `json:"DurationUnit,omitnil,omitempty" name:"DurationUnit"`

	// Total original price.
	// Original cost = component list price * component usage * usage duration.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

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

	// = Total Amount After Discount - Voucher Deduction
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`

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

	// Tag information.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`
}

// Predefined struct for user
type DescribeBillDetailRequestParams struct {
	// Inquiry month, in the format of YYYY-MM, such as 2023-01
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Page parameter: number of entries per page. Value range: [1, 200]
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Page parameter: current page number. The minimum value is 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Billing mode. Valid values: prePay (Monthly subscription) and postPay (Pay-As-You-Go resources)
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Transaction type. Valid values: prepay_purchase (Purchase), prepay_renew (Renewal), prepay_modify (Upgrade/Downgrade), prepay_return ( Monthly subscription refund), postpay_deduct (Pay-as-you-go), postpay_deduct_h (Hourly settlement), postpay_deduct_d (Daily settlement), postpay_deduct_m (Monthly settlement), offline_deduct (Offline project deduction), online_deduct (Offline product deduction), recon_deduct (Adjustment - deduction), recon_increase (Adjustment - compensation), ripay_purchase (One-off RI Fee), postpay_deduct_s (Spot), ri_hour_pay (Hourly RI fee), prePurchase (New monthly subscription), preRenew (Monthly subscription renewal), preUpgrade (Upgrade/Downgrade), preDowngrade (Upgrade/Downgrade), svp_hour_pay (Hourly Savings Plan fee), recon_guarantee (Minimum spend deduction), pre_purchase (New monthly subscription), pre_renew (Monthly subscription renewal), pre_upgrade (Upgrade/Downgrade), pre_downgrade (Upgrade/Downgrade)
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`
}

type DescribeBillDetailRequest struct {
	*tchttp.BaseRequest
	
	// Inquiry month, in the format of YYYY-MM, such as 2023-01
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Page parameter: number of entries per page. Value range: [1, 200]
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Page parameter: current page number. The minimum value is 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Billing mode. Valid values: prePay (Monthly subscription) and postPay (Pay-As-You-Go resources)
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Transaction type. Valid values: prepay_purchase (Purchase), prepay_renew (Renewal), prepay_modify (Upgrade/Downgrade), prepay_return ( Monthly subscription refund), postpay_deduct (Pay-as-you-go), postpay_deduct_h (Hourly settlement), postpay_deduct_d (Daily settlement), postpay_deduct_m (Monthly settlement), offline_deduct (Offline project deduction), online_deduct (Offline product deduction), recon_deduct (Adjustment - deduction), recon_increase (Adjustment - compensation), ripay_purchase (One-off RI Fee), postpay_deduct_s (Spot), ri_hour_pay (Hourly RI fee), prePurchase (New monthly subscription), preRenew (Monthly subscription renewal), preUpgrade (Upgrade/Downgrade), preDowngrade (Upgrade/Downgrade), svp_hour_pay (Hourly Savings Plan fee), recon_guarantee (Minimum spend deduction), pre_purchase (New monthly subscription), pre_renew (Monthly subscription renewal), pre_upgrade (Upgrade/Downgrade), pre_downgrade (Upgrade/Downgrade)
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`
}

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

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

// Predefined struct for user
type DescribeBillDetailResponseParams struct {
	// Data details.
	DetailSet []*CustomerBillDetailData `json:"DetailSet,omitnil,omitempty" name:"DetailSet"`

	// Total number of entries.
	Total *int64 `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 DescribeBillDetailResponse struct {
	*tchttp.BaseResponse
	Response *DescribeBillDetailResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeBillDownloadUrlRequestParams struct {
	// The month to which the bill belongs, formatted as YYYY-MM; the earliest month available for query is June, 2022. Current month's billing data may be inaccurate; please download the current month's bill after it is generated at 1:00 on the 5th of the next month.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Type of bill. Valid values: L2 or L3
	FileType *string `json:"FileType,omitnil,omitempty" name:"FileType"`
}

type DescribeBillDownloadUrlRequest struct {
	*tchttp.BaseRequest
	
	// The month to which the bill belongs, formatted as YYYY-MM; the earliest month available for query is June, 2022. Current month's billing data may be inaccurate; please download the current month's bill after it is generated at 1:00 on the 5th of the next month.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Type of bill. Valid values: L2 or L3
	FileType *string `json:"FileType,omitnil,omitempty" name:"FileType"`
}

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

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

// Predefined struct for user
type DescribeBillDownloadUrlResponseParams struct {
	// File download link, with a file validity period of 1 hour
	DownloadUrl *string `json:"DownloadUrl,omitnil,omitempty" name:"DownloadUrl"`

	// File generation status. 0: generating; 1: generated.
	Ready *int64 `json:"Ready,omitnil,omitempty" name:"Ready"`

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

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

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

// Predefined struct for user
type DescribeBillSummaryByPayModeRequestParams struct {
	// Bill month in the format of "yyyy-MM"
	BillMonth *string `json:"BillMonth,omitnil,omitempty" name:"BillMonth"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

type DescribeBillSummaryByPayModeRequest struct {
	*tchttp.BaseRequest
	
	// Bill month in the format of "yyyy-MM"
	BillMonth *string `json:"BillMonth,omitnil,omitempty" name:"BillMonth"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

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

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

// Predefined struct for user
type DescribeBillSummaryByPayModeResponseParams struct {
	// Get the payment mode details of the sub-customer bill summary through the api.
	SummaryOverview []*PayModeSummaryOverviewItem `json:"SummaryOverview,omitnil,omitempty" name:"SummaryOverview"`

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

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

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

// Predefined struct for user
type DescribeBillSummaryByProductRequestParams struct {
	// Bill month in the format of "yyyy-MM"
	BillMonth *string `json:"BillMonth,omitnil,omitempty" name:"BillMonth"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

type DescribeBillSummaryByProductRequest struct {
	*tchttp.BaseRequest
	
	// Bill month in the format of "yyyy-MM"
	BillMonth *string `json:"BillMonth,omitnil,omitempty" name:"BillMonth"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

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

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

// Predefined struct for user
type DescribeBillSummaryByProductResponseParams struct {
	// Detailed information of product dimension.
	SummaryOverview []*BusinessSummaryOverviewItem `json:"SummaryOverview,omitnil,omitempty" name:"SummaryOverview"`

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

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

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

// Predefined struct for user
type DescribeBillSummaryByRegionRequestParams struct {
	// Bill month in the format of "yyyy-MM"
	BillMonth *string `json:"BillMonth,omitnil,omitempty" name:"BillMonth"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

type DescribeBillSummaryByRegionRequest struct {
	*tchttp.BaseRequest
	
	// Bill month in the format of "yyyy-MM"
	BillMonth *string `json:"BillMonth,omitnil,omitempty" name:"BillMonth"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

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

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

// Predefined struct for user
type DescribeBillSummaryByRegionResponseParams struct {
	// Get the region details of the customer bill data totaled by region through the api.
	SummaryOverview []*RegionSummaryOverviewItem `json:"SummaryOverview,omitnil,omitempty" name:"SummaryOverview"`

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

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

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

// Predefined struct for user
type DescribeBillSummaryRequestParams struct {
	// The month to which the bill belongs, formatted as YYYY-MM.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Billing dimension. Optional parameters: product, project, tag
	GroupType *string `json:"GroupType,omitnil,omitempty" name:"GroupType"`

	// Tag value list
	TagKey []*string `json:"TagKey,omitnil,omitempty" name:"TagKey"`
}

type DescribeBillSummaryRequest struct {
	*tchttp.BaseRequest
	
	// The month to which the bill belongs, formatted as YYYY-MM.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Billing dimension. Optional parameters: product, project, tag
	GroupType *string `json:"GroupType,omitnil,omitempty" name:"GroupType"`

	// Tag value list
	TagKey []*string `json:"TagKey,omitnil,omitempty" name:"TagKey"`
}

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

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

// Predefined struct for user
type DescribeBillSummaryResponseParams struct {
	// Detailed summary by billing dimension.
	SummaryDetail []*SummaryDetails `json:"SummaryDetail,omitnil,omitempty" name:"SummaryDetail"`

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

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

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

// Predefined struct for user
type DescribeCustomerBillDetailByDayRequestParams struct {
	// Sub-account UIN.
	// Such as "10000000001"
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Date.
	// Such as" 2025-06-25".
	// Please note: Historical daily bill dated before "2025-06-01",cannot be queried.
	Date *string `json:"Date,omitnil,omitempty" name:"Date"`
}

type DescribeCustomerBillDetailByDayRequest struct {
	*tchttp.BaseRequest
	
	// Sub-account UIN.
	// Such as "10000000001"
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Date.
	// Such as" 2025-06-25".
	// Please note: Historical daily bill dated before "2025-06-01",cannot be queried.
	Date *string `json:"Date,omitnil,omitempty" name:"Date"`
}

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

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

// Predefined struct for user
type DescribeCustomerBillDetailByDayResponseParams struct {
	// Total spending.
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`

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

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

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

// Predefined struct for user
type DescribeCustomerBillDetailRequestParams struct {
	// Sub-account UIN.
	CustomerUin *uint64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Inquiry month, in the format of YYYY-MM, such as 2023-01.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Page parameter: number of entries per page. Value range: [1, 200]
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Page parameter: current page number. The minimum value is 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Billing mode. Valid values:
	// prePay (Monthly subscription)
	// postPay (Pay-As-You-Go resources)
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Transaction type. Valid values:
	// prepay_purchase (Purchase)
	// prepay_renew (Renewal)
	// prepay_modify (Upgrade/Downgrade)
	// prepay_return ( Monthly subscription refund)
	// postpay_deduct (Pay-as-you-go)
	// postpay_deduct_h (Hourly settlement)
	// postpay_deduct_d (Daily settlement)
	// postpay_deduct_m (Monthly settlement)
	// offline_deduct (Offline project deduction)
	// online_deduct (Offline product deduction)
	// recon_deduct (Adjustment - deduction)
	// recon_increase (Adjustment - compensation)
	// ripay_purchase (One-off RI Fee)
	// postpay_deduct_s (Spot)
	// ri_hour_pay (Hourly RI fee)
	// prePurchase (New monthly subscription)
	// preRenew (Monthly subscription renewal)
	// preUpgrade (Upgrade/Downgrade)
	// preDowngrade (Upgrade/Downgrade)
	// svp_hour_pay (Hourly Savings Plan fee)
	// recon_guarantee (Minimum spend deduction)
	// pre_purchase (New monthly subscription)
	// pre_renew (Monthly subscription renewal)
	// pre_upgrade (Upgrade/Downgrade)
	// pre_downgrade (Upgrade/Downgrade)
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Payment status
	// 0: not distinguished
	// 1: paid
	// 2: unpaid
	IsConfirmed *string `json:"IsConfirmed,omitnil,omitempty" name:"IsConfirmed"`
}

type DescribeCustomerBillDetailRequest struct {
	*tchttp.BaseRequest
	
	// Sub-account UIN.
	CustomerUin *uint64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Inquiry month, in the format of YYYY-MM, such as 2023-01.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Page parameter: number of entries per page. Value range: [1, 200]
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Page parameter: current page number. The minimum value is 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Billing mode. Valid values:
	// prePay (Monthly subscription)
	// postPay (Pay-As-You-Go resources)
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Transaction type. Valid values:
	// prepay_purchase (Purchase)
	// prepay_renew (Renewal)
	// prepay_modify (Upgrade/Downgrade)
	// prepay_return ( Monthly subscription refund)
	// postpay_deduct (Pay-as-you-go)
	// postpay_deduct_h (Hourly settlement)
	// postpay_deduct_d (Daily settlement)
	// postpay_deduct_m (Monthly settlement)
	// offline_deduct (Offline project deduction)
	// online_deduct (Offline product deduction)
	// recon_deduct (Adjustment - deduction)
	// recon_increase (Adjustment - compensation)
	// ripay_purchase (One-off RI Fee)
	// postpay_deduct_s (Spot)
	// ri_hour_pay (Hourly RI fee)
	// prePurchase (New monthly subscription)
	// preRenew (Monthly subscription renewal)
	// preUpgrade (Upgrade/Downgrade)
	// preDowngrade (Upgrade/Downgrade)
	// svp_hour_pay (Hourly Savings Plan fee)
	// recon_guarantee (Minimum spend deduction)
	// pre_purchase (New monthly subscription)
	// pre_renew (Monthly subscription renewal)
	// pre_upgrade (Upgrade/Downgrade)
	// pre_downgrade (Upgrade/Downgrade)
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Payment status
	// 0: not distinguished
	// 1: paid
	// 2: unpaid
	IsConfirmed *string `json:"IsConfirmed,omitnil,omitempty" name:"IsConfirmed"`
}

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

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

// Predefined struct for user
type DescribeCustomerBillDetailResponseParams struct {
	// Total number of data entries
	Total *int64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Data detailsNote: This field may return null, indicating that no valid values can be obtained.
	DetailSet []*BillDetailData `json:"DetailSet,omitnil,omitempty" name:"DetailSet"`

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

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

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

// Predefined struct for user
type DescribeCustomerBillDownloadUrlRequestParams struct {
	// The month to which the bill belongs, formatted as yyyy-mm; the earliest month available for query is june, 2022. current month's billing data may be inaccurate; please download the current month's bill after it is generated at 1:00 on the 5th of the next month.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Bill type. valid values: [billResource, billDetail, billResourcePack, billDetailPack]. `billResource`: resource bill; `billDetail`: detailed bill; `billResourcePack`: resource bill package; `billDetailPack`: detailed bill package.
	FileType *string `json:"FileType,omitnil,omitempty" name:"FileType"`

	// Customer type. valid values: [Customer, Reseller, ResellerCustomer]. `Customer`: direct customer; `Reseller`: secondary reseller; `ResellerCustomer`: reseller's customers
	CustomerUinType *string `json:"CustomerUinType,omitnil,omitempty" name:"CustomerUinType"`

	// Language. valid values: [zh_cn, en]. default is `en` (english).
	FileLanguage *string `json:"FileLanguage,omitnil,omitempty" name:"FileLanguage"`

	// Customer uin. when downloading the bill package (FileType is billResourcePack or billDetailPack), CustomerUin is not passed
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

type DescribeCustomerBillDownloadUrlRequest struct {
	*tchttp.BaseRequest
	
	// The month to which the bill belongs, formatted as yyyy-mm; the earliest month available for query is june, 2022. current month's billing data may be inaccurate; please download the current month's bill after it is generated at 1:00 on the 5th of the next month.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Bill type. valid values: [billResource, billDetail, billResourcePack, billDetailPack]. `billResource`: resource bill; `billDetail`: detailed bill; `billResourcePack`: resource bill package; `billDetailPack`: detailed bill package.
	FileType *string `json:"FileType,omitnil,omitempty" name:"FileType"`

	// Customer type. valid values: [Customer, Reseller, ResellerCustomer]. `Customer`: direct customer; `Reseller`: secondary reseller; `ResellerCustomer`: reseller's customers
	CustomerUinType *string `json:"CustomerUinType,omitnil,omitempty" name:"CustomerUinType"`

	// Language. valid values: [zh_cn, en]. default is `en` (english).
	FileLanguage *string `json:"FileLanguage,omitnil,omitempty" name:"FileLanguage"`

	// Customer uin. when downloading the bill package (FileType is billResourcePack or billDetailPack), CustomerUin is not passed
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

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

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

// Predefined struct for user
type DescribeCustomerBillDownloadUrlResponseParams struct {
	// File download link, with a file validity period of 1 hour.
	DownloadUrl *string `json:"DownloadUrl,omitnil,omitempty" name:"DownloadUrl"`

	// File generation status. 0: generating; 1: generated.
	Ready *int64 `json:"Ready,omitnil,omitempty" name:"Ready"`

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

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

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

// Predefined struct for user
type DescribeCustomerBillSummaryRequestParams struct {
	// Customer UIN
	CustomerUin *uint64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// The queried month in "YYYY-MM" format, such as 2023-01.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Billing mode. Valid values:
	// `prePay` (Monthly subscription)
	// `postPay` (Pay-as-you-go)
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Transaction type. Valid values:
	// `prepay_purchase` (Purchase)
	// `prepay_renew` (Renewal)
	// `prepay_modify` (Upgrade/Downgrade)
	// `prepay_return` (Monthly subscription refund)
	// `postpay_deduct` (Pay-as-you-go)
	// `postpay_deduct_h` (Hourly settlement)
	// `postpay_deduct_d` (Daily settlement)
	// `postpay_deduct_m` (Monthly settlement)
	// `offline_deduct` (Offline project deduction)
	// `online_deduct` (Offline product deduction)
	// `recon_deduct` (Adjustment - deduction)
	// `recon_increase` (Adjustment - compensation)
	// `ripay_purchase` (One-off RI Fee)
	// `postpay_deduct_s` (Spot)
	// `ri_hour_pay` (Hourly RI fee)
	// `prePurchase` (New monthly subscription)
	// `preRenew` (Monthly subscription renewal)
	// `preUpgrade` (Upgrade/Downgrade)
	// `preDowngrade` (Upgrade/Downgrade)
	// `svp_hour_pay` (Hourly Savings Plan fee)
	// `recon_guarantee` (Minimum spend deduction)
	// `pre_purchase` (New monthly subscription)
	// `pre_renew` (Monthly subscription renewal)
	// `pre_upgrade` (Upgrade/Downgrade)
	// `pre_downgrade` (Upgrade/Downgrade)
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Payment status
	// `0`: N/A
	// `1`: Paid
	// `2`: Unpaid
	IsConfirmed *string `json:"IsConfirmed,omitnil,omitempty" name:"IsConfirmed"`
}

type DescribeCustomerBillSummaryRequest struct {
	*tchttp.BaseRequest
	
	// Customer UIN
	CustomerUin *uint64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// The queried month in "YYYY-MM" format, such as 2023-01.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Billing mode. Valid values:
	// `prePay` (Monthly subscription)
	// `postPay` (Pay-as-you-go)
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Transaction type. Valid values:
	// `prepay_purchase` (Purchase)
	// `prepay_renew` (Renewal)
	// `prepay_modify` (Upgrade/Downgrade)
	// `prepay_return` (Monthly subscription refund)
	// `postpay_deduct` (Pay-as-you-go)
	// `postpay_deduct_h` (Hourly settlement)
	// `postpay_deduct_d` (Daily settlement)
	// `postpay_deduct_m` (Monthly settlement)
	// `offline_deduct` (Offline project deduction)
	// `online_deduct` (Offline product deduction)
	// `recon_deduct` (Adjustment - deduction)
	// `recon_increase` (Adjustment - compensation)
	// `ripay_purchase` (One-off RI Fee)
	// `postpay_deduct_s` (Spot)
	// `ri_hour_pay` (Hourly RI fee)
	// `prePurchase` (New monthly subscription)
	// `preRenew` (Monthly subscription renewal)
	// `preUpgrade` (Upgrade/Downgrade)
	// `preDowngrade` (Upgrade/Downgrade)
	// `svp_hour_pay` (Hourly Savings Plan fee)
	// `recon_guarantee` (Minimum spend deduction)
	// `pre_purchase` (New monthly subscription)
	// `pre_renew` (Monthly subscription renewal)
	// `pre_upgrade` (Upgrade/Downgrade)
	// `pre_downgrade` (Upgrade/Downgrade)
	ActionType *string `json:"ActionType,omitnil,omitempty" name:"ActionType"`

	// Payment status
	// `0`: N/A
	// `1`: Paid
	// `2`: Unpaid
	IsConfirmed *string `json:"IsConfirmed,omitnil,omitempty" name:"IsConfirmed"`
}

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

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

// Predefined struct for user
type DescribeCustomerBillSummaryResponseParams struct {
	// Total amount
	TotalCost *float64 `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`

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

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

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

type DescribeCustomerInfoData struct {
	// Sub-Account uin.
	CustomerUin *string `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Contact email.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// Contact phone number.
	Phone *string `json:"Phone,omitnil,omitempty" name:"Phone"`

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

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

	// Binding time.
	BindTime *string `json:"BindTime,omitnil,omitempty" name:"BindTime"`

	// Account status.
	// 0: normal.
	// 1: forcibly mandatory (this function is not supported yet).
	// 2: mandatory arrears. 
	AccountStatus *string `json:"AccountStatus,omitnil,omitempty" name:"AccountStatus"`

	// Specifies the identity verification status.
	// -999: account information not found.
	// -1: file not uploaded.
	// 0: pending review.
	// Under review.
	// Error in review: 2.
	// 3: pass review.
	AuthStatus *string `json:"AuthStatus,omitnil,omitempty" name:"AuthStatus"`

	// Real-Name type.
	// -1: default value. no such information. 
	// 0: personal type. 
	// 1: enterprise type.
	AuthType *int64 `json:"AuthType,omitnil,omitempty" name:"AuthType"`

	// Specifies the registration time of the cid.
	CidRegisterTime *string `json:"CidRegisterTime,omitnil,omitempty" name:"CidRegisterTime"`

	// Specifies the registration time of the uin.
	UinRegisterTime *string `json:"UinRegisterTime,omitnil,omitempty" name:"UinRegisterTime"`

	// Time when real-name authentication passed.
	AuthPassTime *string `json:"AuthPassTime,omitnil,omitempty" name:"AuthPassTime"`

	// Whether there is consumption.
	// 0: no consumption; 1: consumption.
	HasExpense *int64 `json:"HasExpense,omitnil,omitempty" name:"HasExpense"`
}

// Predefined struct for user
type DescribeCustomerInfoRequestParams struct {
	// List of customer UIN. Array length value: 1-20.
	CustomerUin []*int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

type DescribeCustomerInfoRequest struct {
	*tchttp.BaseRequest
	
	// List of customer UIN. Array length value: 1-20.
	CustomerUin []*int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

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

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

// Predefined struct for user
type DescribeCustomerInfoResponseParams struct {
	// Sub-Customer information.
	Data []*DescribeCustomerInfoData `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 DescribeCustomerInfoResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomerInfoResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeCustomerOwnCostExplorerFilterRequestParams struct {
	// <p>Start time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months. When PeriodType is day, the time range is 2 calendar months;</p>
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// <p>End time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months. When PeriodType is day, the time range is 2 calendar months.</p>
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// <p>Date type</p><p>Enumeration value:</p><ul><li>day: By day</li><li>month: Monthly</li></ul>
	PeriodType *string `json:"PeriodType,omitnil,omitempty" name:"PeriodType"`
}

type DescribeCustomerOwnCostExplorerFilterRequest struct {
	*tchttp.BaseRequest
	
	// <p>Start time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months. When PeriodType is day, the time range is 2 calendar months;</p>
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// <p>End time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months. When PeriodType is day, the time range is 2 calendar months.</p>
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// <p>Date type</p><p>Enumeration value:</p><ul><li>day: By day</li><li>month: Monthly</li></ul>
	PeriodType *string `json:"PeriodType,omitnil,omitempty" name:"PeriodType"`
}

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

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

// Predefined struct for user
type DescribeCustomerOwnCostExplorerFilterResponseParams struct {
	// <p>Filter information</p>
	Data *CostAnalyzeFilterDetail `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 DescribeCustomerOwnCostExplorerFilterResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomerOwnCostExplorerFilterResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeCustomerOwnCostExplorerSummaryRequestParams struct {
	// <p>Classification dimension</p><p>Enumeration value:</p><ul><li>Default: Default dimension</li><li>Business: Product</li><li>Product: Subproduct</li><li>Region: Region</li><li>Zone: Availability zone</li><li>ActionType: Transaction type</li><li>PayMode: Payment mode</li><li>Project: Project</li><li>PayerUin: Payer uin</li><li>OwnerUin: Owner uin</li><li>Tag: Tag</li></ul>
	Dimension *string `json:"Dimension,omitnil,omitempty" name:"Dimension"`

	// <p>Fee type</p><p>Enumeration value:</p><ul><li>originalCost: Original Cost</li><li>totalCost: Total Cost</li></ul>
	FeeType *string `json:"FeeType,omitnil,omitempty" name:"FeeType"`

	// <p>Billing mode</p><p>Enumeration value:</p><ul><li>1: Billing statement</li></ul>
	BillType *int64 `json:"BillType,omitnil,omitempty" name:"BillType"`

	// <p>Start time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months; when PeriodType is day, the time range is 2 calendar months;</p>
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// <p>End time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months. When PeriodType is day, the time range is 2 calendar months.</p>
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// <p>Time type</p><p>Enumeration value:</p><ul><li>day: By day</li><li>month: By month</li></ul>
	PeriodType *string `json:"PeriodType,omitnil,omitempty" name:"PeriodType"`

	// <p>Page number</p><p>Value range: [1, 10000]</p>
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// <p>Page size</p><p>Value range: [1, 200]</p>
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// <p>Tag key of the statistical dimension. When Dimension is Tag, TagKey is required.</p>
	TagKey *string `json:"TagKey,omitnil,omitempty" name:"TagKey"`

	// Filter
	// 
	// You can pass the data returned by [DescribeCustomerOwnCostExplorerFilter](https://www.tencentcloud.com/document/product/1085/80125) as a parameter to filter the data.
	Filter *CostAnalyzeFilter `json:"Filter,omitnil,omitempty" name:"Filter"`
}

type DescribeCustomerOwnCostExplorerSummaryRequest struct {
	*tchttp.BaseRequest
	
	// <p>Classification dimension</p><p>Enumeration value:</p><ul><li>Default: Default dimension</li><li>Business: Product</li><li>Product: Subproduct</li><li>Region: Region</li><li>Zone: Availability zone</li><li>ActionType: Transaction type</li><li>PayMode: Payment mode</li><li>Project: Project</li><li>PayerUin: Payer uin</li><li>OwnerUin: Owner uin</li><li>Tag: Tag</li></ul>
	Dimension *string `json:"Dimension,omitnil,omitempty" name:"Dimension"`

	// <p>Fee type</p><p>Enumeration value:</p><ul><li>originalCost: Original Cost</li><li>totalCost: Total Cost</li></ul>
	FeeType *string `json:"FeeType,omitnil,omitempty" name:"FeeType"`

	// <p>Billing mode</p><p>Enumeration value:</p><ul><li>1: Billing statement</li></ul>
	BillType *int64 `json:"BillType,omitnil,omitempty" name:"BillType"`

	// <p>Start time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months; when PeriodType is day, the time range is 2 calendar months;</p>
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// <p>End time</p><p>Parameter format: YYYY-MM-DD hh:mm:ss, for example 2006-01-02 00:00:00</p><p>Input limit: When PeriodType is month, the time range is 6 calendar months. When PeriodType is day, the time range is 2 calendar months.</p>
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// <p>Time type</p><p>Enumeration value:</p><ul><li>day: By day</li><li>month: By month</li></ul>
	PeriodType *string `json:"PeriodType,omitnil,omitempty" name:"PeriodType"`

	// <p>Page number</p><p>Value range: [1, 10000]</p>
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// <p>Page size</p><p>Value range: [1, 200]</p>
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// <p>Tag key of the statistical dimension. When Dimension is Tag, TagKey is required.</p>
	TagKey *string `json:"TagKey,omitnil,omitempty" name:"TagKey"`

	// Filter
	// 
	// You can pass the data returned by [DescribeCustomerOwnCostExplorerFilter](https://www.tencentcloud.com/document/product/1085/80125) as a parameter to filter the data.
	Filter *CostAnalyzeFilter `json:"Filter,omitnil,omitempty" name:"Filter"`
}

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

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

// Predefined struct for user
type DescribeCustomerOwnCostExplorerSummaryResponseParams struct {
	// <p>Classification dimension</p>
	DimensionName *string `json:"DimensionName,omitnil,omitempty" name:"DimensionName"`

	// <p>Details</p>
	Detail []*DimensionPeriodData `json:"Detail,omitnil,omitempty" name:"Detail"`

	// <p>Classification dimension statistics</p>
	TotalDetail *CostAnalyzeDimensionData `json:"TotalDetail,omitnil,omitempty" name:"TotalDetail"`

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

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

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

type DescribeCustomerOwnVoucherItem struct {
	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Sub-account UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Voucher status: Issued/Used/Expired/Invalidated.
	VoucherStatus *string `json:"VoucherStatus,omitnil,omitempty" name:"VoucherStatus"`

	// Remaining amount.
	RemainingAmount *float64 `json:"RemainingAmount,omitnil,omitempty" name:"RemainingAmount"`

	// Denomination.
	TotalAmount *float64 `json:"TotalAmount,omitnil,omitempty" name:"TotalAmount"`

	// Payment mode. valid values: AllPayment, Prepaid, and Postpaid.
	PaymentMode *string `json:"PaymentMode,omitnil,omitempty" name:"PaymentMode"`

	// Applicable product: AllProducts/SpecifyProducts/SpecifyProductsBlacklist.
	ProductScope *string `json:"ProductScope,omitnil,omitempty" name:"ProductScope"`

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

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

// Predefined struct for user
type DescribeCustomerOwnVoucherListRequestParams struct {
	// Page number, starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page. value range: 1-100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Voucher status. valid values: Issued, Used, Expired, Invalidated.
	VoucherStatus *string `json:"VoucherStatus,omitnil,omitempty" name:"VoucherStatus"`

	// Payment mode. valid values: AllPayment, Prepaid, Postpaid.
	PaymentMode *string `json:"PaymentMode,omitnil,omitempty" name:"PaymentMode"`

	// Applicable product. valid values: AllProducts, SpecifyProducts, SpecifyProductsBlacklist.
	ProductScope *string `json:"ProductScope,omitnil,omitempty" name:"ProductScope"`

	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`
}

type DescribeCustomerOwnVoucherListRequest struct {
	*tchttp.BaseRequest
	
	// Page number, starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page. value range: 1-100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Voucher status. valid values: Issued, Used, Expired, Invalidated.
	VoucherStatus *string `json:"VoucherStatus,omitnil,omitempty" name:"VoucherStatus"`

	// Payment mode. valid values: AllPayment, Prepaid, Postpaid.
	PaymentMode *string `json:"PaymentMode,omitnil,omitempty" name:"PaymentMode"`

	// Applicable product. valid values: AllProducts, SpecifyProducts, SpecifyProductsBlacklist.
	ProductScope *string `json:"ProductScope,omitnil,omitempty" name:"ProductScope"`

	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`
}

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

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

// Predefined struct for user
type DescribeCustomerOwnVoucherListResponseParams struct {
	// Total number of the list.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Voucher information description.
	Data []*DescribeCustomerOwnVoucherItem `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 DescribeCustomerOwnVoucherListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomerOwnVoucherListResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeCustomerOwnVoucherUsageDetailsRequestParams struct {
	// Page number, starting from 1
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page, range 1-100
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Voucher ID
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Voucher usage month
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`
}

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

	// Number of items per page, range 1-100
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Voucher ID
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Voucher usage month
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`
}

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

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

// Predefined struct for user
type DescribeCustomerOwnVoucherUsageDetailsResponseParams struct {
	// Voucher information details
	Data []*UsageDetail `json:"Data,omitnil,omitempty" name:"Data"`

	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Total voucher amount
	TotalAmount *float64 `json:"TotalAmount,omitnil,omitempty" name:"TotalAmount"`

	// Voucher balance
	RemainAmount *float64 `json:"RemainAmount,omitnil,omitempty" name:"RemainAmount"`

	// Total number of records
	TotalRecordsCount *int64 `json:"TotalRecordsCount,omitnil,omitempty" name:"TotalRecordsCount"`

	// Voucher Usage Month
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Number of records in the current month
	RecordsCountByMonth *int64 `json:"RecordsCountByMonth,omitnil,omitempty" name:"RecordsCountByMonth"`

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

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

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

type DescribeCustomerUinData struct {
	// Customer UIN Note: This field may return null, indicating that no valid values can be obtained.
	CustomerUin *string `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`
}

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

	// Number of data entries per page
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

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

	// Number of data entries per page
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

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

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

// Predefined struct for user
type DescribeCustomerUinResponseParams struct {
	// List of customer UINs Note: This field may return null, indicating that no valid values can be obtained.
	Data []*DescribeCustomerUinData `json:"Data,omitnil,omitempty" name:"Data"`

	// The number of customers
	Total *string `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 DescribeCustomerUinResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomerUinResponseParams `json:"Response"`
}

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

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

type DescribeCustomerVoucherItem struct {
	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Sub-account UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Voucher status: Issued/Used/Expired/Invalidated.
	VoucherStatus *string `json:"VoucherStatus,omitnil,omitempty" name:"VoucherStatus"`

	// Remaining amount.
	RemainingAmount *float64 `json:"RemainingAmount,omitnil,omitempty" name:"RemainingAmount"`

	// Denomination.
	TotalAmount *float64 `json:"TotalAmount,omitnil,omitempty" name:"TotalAmount"`

	// Purpose: ProductTrial/CustomerOffer.
	Usage *string `json:"Usage,omitnil,omitempty" name:"Usage"`

	// Payment mode. valid values: AllPayment, Prepaid, and Postpaid.
	PaymentMode *string `json:"PaymentMode,omitnil,omitempty" name:"PaymentMode"`

	// Applicable product: AllProducts/SpecifyProducts/SpecifyProductsBlacklist.
	ProductScope *string `json:"ProductScope,omitnil,omitempty" name:"ProductScope"`

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

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

	// Application notes
	ApplyReason *string `json:"ApplyReason,omitnil,omitempty" name:"ApplyReason"`
}

// Predefined struct for user
type DescribeCustomerVoucherListRequestParams struct {
	// Page number, starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page. value range: 1-100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Customer UIN.
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Voucher status. valid values: Issued, Used, Expired, Invalidated.
	VoucherStatus *string `json:"VoucherStatus,omitnil,omitempty" name:"VoucherStatus"`

	// Payment mode. valid values: AllPayment, Prepaid, Postpaid.
	PaymentMode *string `json:"PaymentMode,omitnil,omitempty" name:"PaymentMode"`

	// valid values: ProductTrial, CustomerOffer.
	Usage *string `json:"Usage,omitnil,omitempty" name:"Usage"`

	// Applicable product. valid values: AllProducts, SpecifyProducts, SpecifyProductsBlacklist.
	ProductScope *string `json:"ProductScope,omitnil,omitempty" name:"ProductScope"`

	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`
}

type DescribeCustomerVoucherListRequest struct {
	*tchttp.BaseRequest
	
	// Page number, starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page. value range: 1-100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Customer UIN.
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Voucher status. valid values: Issued, Used, Expired, Invalidated.
	VoucherStatus *string `json:"VoucherStatus,omitnil,omitempty" name:"VoucherStatus"`

	// Payment mode. valid values: AllPayment, Prepaid, Postpaid.
	PaymentMode *string `json:"PaymentMode,omitnil,omitempty" name:"PaymentMode"`

	// valid values: ProductTrial, CustomerOffer.
	Usage *string `json:"Usage,omitnil,omitempty" name:"Usage"`

	// Applicable product. valid values: AllProducts, SpecifyProducts, SpecifyProductsBlacklist.
	ProductScope *string `json:"ProductScope,omitnil,omitempty" name:"ProductScope"`

	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`
}

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

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

// Predefined struct for user
type DescribeCustomerVoucherListResponseParams struct {
	// Total number of the list.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Voucher information description.
	Data []*DescribeCustomerVoucherItem `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 DescribeCustomerVoucherListResponse struct {
	*tchttp.BaseResponse
	Response *DescribeCustomerVoucherListResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type DescribeCustomerVoucherUsageDetailsRequestParams struct {
	// Page number, starting from 1
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page, range 1-100
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Voucher ID
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Voucher Usage Month
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`
}

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

	// Number of items per page, range 1-100
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Voucher ID
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Voucher Usage Month
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`
}

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

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

// Predefined struct for user
type DescribeCustomerVoucherUsageDetailsResponseParams struct {
	// Voucher information details
	Data []*UsageDetail `json:"Data,omitnil,omitempty" name:"Data"`

	// Customer UIN
	CustomerUin *int64 `json:"CustomerUin,omitnil,omitempty" name:"CustomerUin"`

	// Voucher ID.
	VoucherId *int64 `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Total voucher amount
	TotalAmount *float64 `json:"TotalAmount,omitnil,omitempty" name:"TotalAmount"`

	// Voucher balance
	RemainAmount *float64 `json:"RemainAmount,omitnil,omitempty" name:"RemainAmount"`

	// Total number of records
	TotalRecordsCount *int64 `json:"TotalRecordsCount,omitnil,omitempty" name:"TotalRecordsCount"`

	// Voucher Usage Month
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Number of records in the current month
	RecordsCountByMonth *int64 `json:"RecordsCountByMonth,omitnil,omitempty" name:"RecordsCountByMonth"`

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

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

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

// Predefined struct for user
type DescribeRebateDownloadUrlRequestParams struct {
	// Month of the commission bill. Format: YYYY-MM.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Bill file type. Valid value: CommissionDetail.
	FileType *string `json:"FileType,omitnil,omitempty" name:"FileType"`
}

type DescribeRebateDownloadUrlRequest struct {
	*tchttp.BaseRequest
	
	// Month of the commission bill. Format: YYYY-MM.
	Month *string `json:"Month,omitnil,omitempty" name:"Month"`

	// Bill file type. Valid value: CommissionDetail.
	FileType *string `json:"FileType,omitnil,omitempty" name:"FileType"`
}

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

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

// Predefined struct for user
type DescribeRebateDownloadUrlResponseParams struct {
	// File download link, with a file validity period of 1 hour.
	DownloadUrl *string `json:"DownloadUrl,omitnil,omitempty" name:"DownloadUrl"`

	// File generation status. 0: generating; 1: generated.
	Ready *int64 `json:"Ready,omitnil,omitempty" name:"Ready"`

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

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

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

type DimensionPeriodData struct {
	// <p>Function name by dimensional classification</p>
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// <p>code corresponding to the function name after dimensional classification</p>
	Code *string `json:"Code,omitnil,omitempty" name:"Code"`

	// <p>Sum value of the current group</p>
	SumCost *string `json:"SumCost,omitnil,omitempty" name:"SumCost"`

	// <p>Amount statistics by date grouping</p>
	ItemDetail []*PeriodItemDetail `json:"ItemDetail,omitnil,omitempty" name:"ItemDetail"`
}

// Predefined struct for user
type ForceQNRequestParams struct {
	// Sub-account UIN
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// 0: Normal  2: Forced service suspension
	Type *uint64 `json:"Type,omitnil,omitempty" name:"Type"`
}

type ForceQNRequest struct {
	*tchttp.BaseRequest
	
	// Sub-account UIN
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// 0: Normal  2: Forced service suspension
	Type *uint64 `json:"Type,omitnil,omitempty" name:"Type"`
}

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

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

// Predefined struct for user
type ForceQNResponseParams struct {
	// Status (deprecated).
	//
	// Deprecated: C is deprecated.
	C *int64 `json:"C,omitnil,omitempty" name:"C"`

	// Msg (deprecated).
	//
	// Deprecated: M is deprecated.
	M *string `json:"M,omitnil,omitempty" name:"M"`

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

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

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

// Predefined struct for user
type GetCountryCodesRequestParams struct {

}

type GetCountryCodesRequest struct {
	*tchttp.BaseRequest
	
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *GetCountryCodesRequest) 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", "GetCountryCodesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type GetCountryCodesResponseParams struct {
	// List of country/region codes
	Data []*CountryCodeItem `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 GetCountryCodesResponse struct {
	*tchttp.BaseResponse
	Response *GetCountryCodesResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type GetTradeConfigListRequestParams struct {

}

type GetTradeConfigListRequest struct {
	*tchttp.BaseRequest
	
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *GetTradeConfigListRequest) 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", "GetTradeConfigListRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type GetTradeConfigListResponseParams struct {
	// Industry information.
	TradeList []*TradeOneNode `json:"TradeList,omitnil,omitempty" name:"TradeList"`

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

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

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

// Predefined struct for user
type ModifyClientRemarkRequestParams struct {
	// Customer UIN
	ClientUin *string `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// New customer remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type ModifyClientRemarkRequest struct {
	*tchttp.BaseRequest
	
	// Customer UIN
	ClientUin *string `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// New customer remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

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

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

// Predefined struct for user
type ModifyClientRemarkResponseParams struct {
	// If successful, returns the new customer remarks
	ClientRemark *string `json:"ClientRemark,omitnil,omitempty" name:"ClientRemark"`

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

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

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

type PayModeSummaryOverviewItem struct {
	// Payment mode.
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

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

	// Actual total consumption, up to 8 decimal places.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

	// Bill details in each payment mode.
	Detail []*ActionSummaryOverviewItem `json:"Detail,omitnil,omitempty" name:"Detail"`

	// Voucher payment amount, up to 8 decimal places.
	VoucherPayAmount *string `json:"VoucherPayAmount,omitnil,omitempty" name:"VoucherPayAmount"`

	// Total consumption, up to 8 decimal places.
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`
}

type PeriodItemDetail struct {
	// <p>Date</p>
	Period *string `json:"Period,omitnil,omitempty" name:"Period"`

	// <p>Fee</p>
	Cost *string `json:"Cost,omitnil,omitempty" name:"Cost"`
}

type PolicyProductList struct {
	//  Policy code.
	PolicyCode *string `json:"PolicyCode,omitnil,omitempty" name:"PolicyCode"`

	// The code of the ProductName field in the  bill data. If the return value is *, any item at this level is included in the policy product range.
	ProductCode *string `json:"ProductCode,omitnil,omitempty" name:"ProductCode"`

	// The ProductName field value in the billing data. If the return value is *, any item at this level is included in the policy product range.
	ProductName *string `json:"ProductName,omitnil,omitempty" name:"ProductName"`

	// The code of the SubProduct field in the  bill data. If the return value is *, any item at this level is included in the policy product range.
	SubProductCode *string `json:"SubProductCode,omitnil,omitempty" name:"SubProductCode"`

	// The SubProduct field value in the billing data. If the return value is *, any item at this level is included in the policy product range.
	SubProductName *string `json:"SubProductName,omitnil,omitempty" name:"SubProductName"`

	// The code of the ComponentType field in the  bill data. If the return value is *, any item at this level is included in the policy product range.
	ComponentTypeCode *string `json:"ComponentTypeCode,omitnil,omitempty" name:"ComponentTypeCode"`

	// The ComponentType field value in the billing data. If the return value is *, any item at this level is included in the policy product range.
	ComponentTypeName *string `json:"ComponentTypeName,omitnil,omitempty" name:"ComponentTypeName"`

	// The code of the Component field in the  bill data. If the return value is *, any item at this level is included in the policy product range.
	ComponentCode *string `json:"ComponentCode,omitnil,omitempty" name:"ComponentCode"`

	// The Component field value in the billing data. If the return value is *, any item at this level is included in the policy product range.
	ComponentName *string `json:"ComponentName,omitnil,omitempty" name:"ComponentName"`

	// Policy effective time.
	StartDate *string `json:"StartDate,omitnil,omitempty" name:"StartDate"`

	// Policy expiration time.
	EndDate *string `json:"EndDate,omitnil,omitempty" name:"EndDate"`
}

// Predefined struct for user
type QueryAccountVerificationStatusRequestParams struct {
	// Customer UIN
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`
}

type QueryAccountVerificationStatusRequest struct {
	*tchttp.BaseRequest
	
	// Customer UIN
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`
}

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

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

// Predefined struct for user
type QueryAccountVerificationStatusResponseParams struct {
	// Account verification status
	AccountStatus *bool `json:"AccountStatus,omitnil,omitempty" name:"AccountStatus"`

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

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

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

type QueryCreditAllocationHistoryData struct {
	// Allocation time
	AllocatedTime *string `json:"AllocatedTime,omitnil,omitempty" name:"AllocatedTime"`

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

	// Allocated credit value
	Credit *float64 `json:"Credit,omitnil,omitempty" name:"Credit"`

	// The allocated total credit
	AllocatedCredit *float64 `json:"AllocatedCredit,omitnil,omitempty" name:"AllocatedCredit"`

	// Available credits after allocation.
	ClientCreditAfter *float64 `json:"ClientCreditAfter,omitnil,omitempty" name:"ClientCreditAfter"`

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

// Predefined struct for user
type QueryCreditAllocationHistoryRequestParams struct {
	// Customer UIN
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

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

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

type QueryCreditAllocationHistoryRequest struct {
	*tchttp.BaseRequest
	
	// Customer UIN
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

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

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

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

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

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

	// Detailed list of historical information.
	History []*QueryCreditAllocationHistoryData `json:"History,omitnil,omitempty" name:"History"`

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

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

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

// Predefined struct for user
type QueryCreditByUinListRequestParams struct {
	// List of user. Array length value: 1-50.
	UinList []*uint64 `json:"UinList,omitnil,omitempty" name:"UinList"`
}

type QueryCreditByUinListRequest struct {
	*tchttp.BaseRequest
	
	// List of user. Array length value: 1-50.
	UinList []*uint64 `json:"UinList,omitnil,omitempty" name:"UinList"`
}

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

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

// Predefined struct for user
type QueryCreditByUinListResponseParams struct {
	// User information list
	Data []*QueryDirectCustomersCreditData `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 QueryCreditByUinListResponse struct {
	*tchttp.BaseResponse
	Response *QueryCreditByUinListResponseParams `json:"Response"`
}

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

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

type QueryCustomerBillingQuotaData struct {
	// Total credit limit (unit: usd), accurate down to two decimal places.
	TotalCredit *float64 `json:"TotalCredit,omitnil,omitempty" name:"TotalCredit"`

	// Remaining credit limit (unit: usd), accurate down to two decimal places.
	RemainingCredit *float64 `json:"RemainingCredit,omitnil,omitempty" name:"RemainingCredit"`

	// Remaining total voucher amount (unit: usd), accurate down to two decimal places.
	RemainingVoucher *float64 `json:"RemainingVoucher,omitnil,omitempty" name:"RemainingVoucher"`

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

	// Prepaid frozen amount.
	PrepayFrozen *float64 `json:"PrepayFrozen,omitnil,omitempty" name:"PrepayFrozen"`

	// Postpaid frozen amount.
	PostpayFrozen *float64 `json:"PostpayFrozen,omitnil,omitempty" name:"PostpayFrozen"`
}

// Predefined struct for user
type QueryCustomerBillingQuotaRequestParams struct {
	// Event id, used to tag the request event, usually a random number.
	//
	// Deprecated: EventId is deprecated.
	EventId *int64 `json:"EventId,omitnil,omitempty" name:"EventId"`

	// Source of the request.
	//
	// Deprecated: ComponentName is deprecated.
	ComponentName *string `json:"ComponentName,omitnil,omitempty" name:"ComponentName"`
}

type QueryCustomerBillingQuotaRequest struct {
	*tchttp.BaseRequest
	
	// Event id, used to tag the request event, usually a random number.
	EventId *int64 `json:"EventId,omitnil,omitempty" name:"EventId"`

	// Source of the request.
	ComponentName *string `json:"ComponentName,omitnil,omitempty" name:"ComponentName"`
}

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

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

// Predefined struct for user
type QueryCustomerBillingQuotaResponseParams struct {
	// Limit data.
	Data *QueryCustomerBillingQuotaData `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 QueryCustomerBillingQuotaResponse struct {
	*tchttp.BaseResponse
	Response *QueryCustomerBillingQuotaResponseParams `json:"Response"`
}

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

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

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

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

	// Mobile number
	Mobile *string `json:"Mobile,omitnil,omitempty" name:"Mobile"`

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

	// Overdue payment flag
	Arrears *string `json:"Arrears,omitnil,omitempty" name:"Arrears"`

	// Binding time
	AssociationTime *string `json:"AssociationTime,omitnil,omitempty" name:"AssociationTime"`

	// Expiration time
	RecentExpiry *string `json:"RecentExpiry,omitnil,omitempty" name:"RecentExpiry"`

	// Customer UIN
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// Credit allocated to a customer
	Credit *float64 `json:"Credit,omitnil,omitempty" name:"Credit"`

	// The remaining credit of a customer
	RemainingCredit *float64 `json:"RemainingCredit,omitnil,omitempty" name:"RemainingCredit"`

	// `0`: Identity not verified; `1`: Individual identity verified; `2`: Enterprise identity verified.
	IdentifyType *uint64 `json:"IdentifyType,omitnil,omitempty" name:"IdentifyType"`

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

	// Forced status
	Force *int64 `json:"Force,omitnil,omitempty" name:"Force"`
}

// Predefined struct for user
type QueryCustomersCreditRequestParams struct {
	// Search condition type. You can only search by ClientUin, Name, Remark, or Email.
	FilterType *string `json:"FilterType,omitnil,omitempty" name:"FilterType"`

	// Search condition
	Filter *string `json:"Filter,omitnil,omitempty" name:"Filter"`

	// A pagination parameter that specifies the current page number, with a value starting from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// A pagination parameter that specifies the number of entries per page.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// A sort parameter that specifies the sort order. Valid values: `desc` (descending order), or `asc` (ascending order) based on `AssociationTime`. The value will be `desc` if left empty.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

type QueryCustomersCreditRequest struct {
	*tchttp.BaseRequest
	
	// Search condition type. You can only search by ClientUin, Name, Remark, or Email.
	FilterType *string `json:"FilterType,omitnil,omitempty" name:"FilterType"`

	// Search condition
	Filter *string `json:"Filter,omitnil,omitempty" name:"Filter"`

	// A pagination parameter that specifies the current page number, with a value starting from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// A pagination parameter that specifies the number of entries per page.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// A sort parameter that specifies the sort order. Valid values: `desc` (descending order), or `asc` (ascending order) based on `AssociationTime`. The value will be `desc` if left empty.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

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

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

// Predefined struct for user
type QueryCustomersCreditResponseParams struct {
	// Queries the list of customers.
	Data []*QueryCustomersCreditData `json:"Data,omitnil,omitempty" name:"Data"`

	// Number of customers
	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 QueryCustomersCreditResponse struct {
	*tchttp.BaseResponse
	Response *QueryCustomersCreditResponseParams `json:"Response"`
}

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

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

type QueryDirectCustomersCreditData struct {
	// User UIN
	Uin *uint64 `json:"Uin,omitnil,omitempty" name:"Uin"`

	// Total credit
	TotalCredit *float64 `json:"TotalCredit,omitnil,omitempty" name:"TotalCredit"`

	// Remaining credit
	RemainingCredit *float64 `json:"RemainingCredit,omitnil,omitempty" name:"RemainingCredit"`
}

// Predefined struct for user
type QueryDirectCustomersCreditRequestParams struct {

}

type QueryDirectCustomersCreditRequest struct {
	*tchttp.BaseRequest
	
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *QueryDirectCustomersCreditRequest) 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", "QueryDirectCustomersCreditRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type QueryDirectCustomersCreditResponseParams struct {
	// Direct customer information list
	Data []*QueryDirectCustomersCreditData `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 QueryDirectCustomersCreditResponse struct {
	*tchttp.BaseResponse
	Response *QueryDirectCustomersCreditResponseParams `json:"Response"`
}

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

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

type QueryInvitationInfoData struct {
	// Invitation link token.
	InvitationToken *string `json:"InvitationToken,omitnil,omitempty" name:"InvitationToken"`

	// Creation time of the invitation link.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Invite link status.
	// 1: Unused.
	// 2: Used.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Indicates the usage time of the invitation link.
	UseTime *string `json:"UseTime,omitnil,omitempty" name:"UseTime"`

	// Customer uin.
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// Customer mailbox.
	ClientMail *string `json:"ClientMail,omitnil,omitempty" name:"ClientMail"`

	// Customer type.
	// 1: Second-Level reseller.
	// 2: Sub-Customer.
	ClientType *int64 `json:"ClientType,omitnil,omitempty" name:"ClientType"`

	// The binding time of the customer.
	BindTime *string `json:"BindTime,omitnil,omitempty" name:"BindTime"`
}

// Predefined struct for user
type QueryInvitationInfoRequestParams struct {
	// Invite token. array member quantity value: [1, 100].
	InvitationToken []*string `json:"InvitationToken,omitnil,omitempty" name:"InvitationToken"`
}

type QueryInvitationInfoRequest struct {
	*tchttp.BaseRequest
	
	// Invite token. array member quantity value: [1, 100].
	InvitationToken []*string `json:"InvitationToken,omitnil,omitempty" name:"InvitationToken"`
}

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

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

// Predefined struct for user
type QueryInvitationInfoResponseParams struct {
	// Invitation link information.
	InvitationInfo []*QueryInvitationInfoData `json:"InvitationInfo,omitnil,omitempty" name:"InvitationInfo"`

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

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

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

// Predefined struct for user
type QueryPartnerCreditRequestParams struct {

}

type QueryPartnerCreditRequest struct {
	*tchttp.BaseRequest
	
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *QueryPartnerCreditRequest) 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", "QueryPartnerCreditRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type QueryPartnerCreditResponseParams struct {
	// Allocated credit
	AllocatedCredit *float64 `json:"AllocatedCredit,omitnil,omitempty" name:"AllocatedCredit"`

	// Total credit
	TotalCredit *float64 `json:"TotalCredit,omitnil,omitempty" name:"TotalCredit"`

	// Remaining credit
	RemainingCredit *float64 `json:"RemainingCredit,omitnil,omitempty" name:"RemainingCredit"`

	// Allocated quota for the client
	CustomerTotalCredit *float64 `json:"CustomerTotalCredit,omitnil,omitempty" name:"CustomerTotalCredit"`

	// Remaining quota for the client
	CustomerRemainingCredit *float64 `json:"CustomerRemainingCredit,omitnil,omitempty" name:"CustomerRemainingCredit"`

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

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

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

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

	// Quantity. page size [1-100].
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

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

	// Quantity. page size [1-100].
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

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

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

// Predefined struct for user
type QueryPendingClientsV2ResponseParams struct {
	// Details of customers in application.
	Data []*QueryPendingCustomersItem `json:"Data,omitnil,omitempty" name:"Data"`

	// Total number of customers in application.
	Total *int64 `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 QueryPendingClientsV2Response struct {
	*tchttp.BaseResponse
	Response *QueryPendingClientsV2ResponseParams `json:"Response"`
}

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

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

type QueryPendingCustomersItem struct {
	// Application time.
	ApplyTime *string `json:"ApplyTime,omitnil,omitempty" name:"ApplyTime"`

	// Sub-Account uin.
	ClientUin *uint64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

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

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

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

	// Approval status.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Sub-Customer type.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`
}

// Predefined struct for user
type QueryPendingSubAgentsV2RequestParams struct {
	// Page number. starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Specifies the number of items per page. value range: supports up to 100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

type QueryPendingSubAgentsV2Request struct {
	*tchttp.BaseRequest
	
	// Page number. starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Specifies the number of items per page. value range: supports up to 100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

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

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

// Predefined struct for user
type QueryPendingSubAgentsV2ResponseParams struct {
	// Application in progress second-level reseller information.
	Data []*QueryPendingSubAgentsV2ResponseData `json:"Data,omitnil,omitempty" name:"Data"`

	// Number of second-level resellers in application.
	Total *int64 `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 QueryPendingSubAgentsV2Response struct {
	*tchttp.BaseResponse
	Response *QueryPendingSubAgentsV2ResponseParams `json:"Response"`
}

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

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

type QueryPendingSubAgentsV2ResponseData struct {
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

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

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

	// Specifies the mailbox.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

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

	// Approval status
	// 
	// {Reviewing: pending review}.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Application material.
	MaterialUrl *string `json:"MaterialUrl,omitnil,omitempty" name:"MaterialUrl"`

	// Identity verification status -1: file not uploaded 0: pending review 1: under review; 2: review error; 3: approved.
	AuthState *int64 `json:"AuthState,omitnil,omitempty" name:"AuthState"`
}

// Predefined struct for user
type QueryPolicyProductListByCodeRequestParams struct {
	// Policy code.
	PolicyCode *string `json:"PolicyCode,omitnil,omitempty" name:"PolicyCode"`

	// The code of the ProductName field in the  bill data.
	ProductCode *string `json:"ProductCode,omitnil,omitempty" name:"ProductCode"`

	// The ProductName field value in the billing data.
	ProductName *string `json:"ProductName,omitnil,omitempty" name:"ProductName"`

	// The code of the SubProductName field in the  bill data.
	SubProductCode *string `json:"SubProductCode,omitnil,omitempty" name:"SubProductCode"`

	// The SubProductName field value in the billing data.
	SubProductName *string `json:"SubProductName,omitnil,omitempty" name:"SubProductName"`

	// Page parameter: current page number. The minimum value is 1.
	Page *uint64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Page parameter: Indicates the number of entries per page. Value range: [1, 200], default is 200.
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

type QueryPolicyProductListByCodeRequest struct {
	*tchttp.BaseRequest
	
	// Policy code.
	PolicyCode *string `json:"PolicyCode,omitnil,omitempty" name:"PolicyCode"`

	// The code of the ProductName field in the  bill data.
	ProductCode *string `json:"ProductCode,omitnil,omitempty" name:"ProductCode"`

	// The ProductName field value in the billing data.
	ProductName *string `json:"ProductName,omitnil,omitempty" name:"ProductName"`

	// The code of the SubProductName field in the  bill data.
	SubProductCode *string `json:"SubProductCode,omitnil,omitempty" name:"SubProductCode"`

	// The SubProductName field value in the billing data.
	SubProductName *string `json:"SubProductName,omitnil,omitempty" name:"SubProductName"`

	// Page parameter: current page number. The minimum value is 1.
	Page *uint64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Page parameter: Indicates the number of entries per page. Value range: [1, 200], default is 200.
	PageSize *uint64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

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

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

// Predefined struct for user
type QueryPolicyProductListByCodeResponseParams struct {
	// policy product list.
	ProductList []*PolicyProductList `json:"ProductList,omitnil,omitempty" name:"ProductList"`

	// Total number of data entries
	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 QueryPolicyProductListByCodeResponse struct {
	*tchttp.BaseResponse
	Response *QueryPolicyProductListByCodeResponseParams `json:"Response"`
}

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

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

// Predefined struct for user
type QuerySubAgentsDetailV2RequestParams struct {
	// Page number. starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page. supports up to 100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Filter criteria, support the following filter parameters.
	// Note: Email, SubAgentUin, and ClientUin only support exact search. other conditions support fuzzy retrieval.The following are the definitions of filtering  items:
	// 
	// Name: specifies second-level reseller name.
	// SubAgentUin: specifies the uin of the second-level reseller.
	// Remark: specifies remark.
	// Mobile: specifies the mobile number.
	// Email: specifies email address.
	// ClientUin: specifies the Indirect customer uin.
	FilterType *string `json:"FilterType,omitnil,omitempty" name:"FilterType"`

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

	// Sorting method. sorts by binding time in ascending or descending order. defaults to descending order if not specified.
	// Desc: descending order.
	// acs: ascending.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

type QuerySubAgentsDetailV2Request struct {
	*tchttp.BaseRequest
	
	// Page number. starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Number of items per page. supports up to 100.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`

	// Filter criteria, support the following filter parameters.
	// Note: Email, SubAgentUin, and ClientUin only support exact search. other conditions support fuzzy retrieval.The following are the definitions of filtering  items:
	// 
	// Name: specifies second-level reseller name.
	// SubAgentUin: specifies the uin of the second-level reseller.
	// Remark: specifies remark.
	// Mobile: specifies the mobile number.
	// Email: specifies email address.
	// ClientUin: specifies the Indirect customer uin.
	FilterType *string `json:"FilterType,omitnil,omitempty" name:"FilterType"`

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

	// Sorting method. sorts by binding time in ascending or descending order. defaults to descending order if not specified.
	// Desc: descending order.
	// acs: ascending.
	Order *string `json:"Order,omitnil,omitempty" name:"Order"`
}

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

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

// Predefined struct for user
type QuerySubAgentsDetailV2ResponseParams struct {
	// Number of second-level resellers.
	Total *int64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Second-Level reseller information.
	Data []*QuerySubAgentsDetailV2ResponseData `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 QuerySubAgentsDetailV2Response struct {
	*tchttp.BaseResponse
	Response *QuerySubAgentsDetailV2ResponseParams `json:"Response"`
}

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

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

type QuerySubAgentsDetailV2ResponseData struct {
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

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

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

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

	// Specifies the mailbox.
	Email *string `json:"Email,omitnil,omitempty" name:"Email"`

	// Number of secondary dealer sub-customers.
	CountOfCustomers *int64 `json:"CountOfCustomers,omitnil,omitempty" name:"CountOfCustomers"`

	// Binding time.
	BindTime *string `json:"BindTime,omitnil,omitempty" name:"BindTime"`

	// Credit limit pool of second-level reseller.
	Credit *float64 `json:"Credit,omitnil,omitempty" name:"Credit"`

	// Value pool of unconsumed credit limit for second-level reseller.
	RemainingCredit *float64 `json:"RemainingCredit,omitnil,omitempty" name:"RemainingCredit"`

	// Cash coupon quota pool for second-level reseller.
	Voucher *float64 `json:"Voucher,omitnil,omitempty" name:"Voucher"`

	// Balance of cash coupon quota pool for second-level reseller.
	RemainingVoucher *float64 `json:"RemainingVoucher,omitnil,omitempty" name:"RemainingVoucher"`
}

// Predefined struct for user
type QueryT1IndirectCustomersDetailRequestParams struct {
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

	// Pagination parameter: current page number. it starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Pagination parameter, indicates the number of entries per page. supports [1, 100] data entries per request.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

type QueryT1IndirectCustomersDetailRequest struct {
	*tchttp.BaseRequest
	
	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

	// Pagination parameter: current page number. it starts from 1.
	Page *int64 `json:"Page,omitnil,omitempty" name:"Page"`

	// Pagination parameter, indicates the number of entries per page. supports [1, 100] data entries per request.
	PageSize *int64 `json:"PageSize,omitnil,omitempty" name:"PageSize"`
}

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

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

// Predefined struct for user
type QueryT1IndirectCustomersDetailResponseParams struct {
	// The number of indirect sub-customers of a distributor.
	Total *int64 `json:"Total,omitnil,omitempty" name:"Total"`

	// Second-level reseller UIN.
	SubAgentUin *int64 `json:"SubAgentUin,omitnil,omitempty" name:"SubAgentUin"`

	// Second-Level reseller name.
	SubAgentName *string `json:"SubAgentName,omitnil,omitempty" name:"SubAgentName"`

	// Indirect sub-customer information.
	Data []*QueryT1IndirectCustomersDetailResponseData `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 QueryT1IndirectCustomersDetailResponse struct {
	*tchttp.BaseResponse
	Response *QueryT1IndirectCustomersDetailResponseParams `json:"Response"`
}

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

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

type QueryT1IndirectCustomersDetailResponseData struct {
	// Customer uin.
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

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

	// The time when a sub-customer binds a second-level reseller, time zone: UTC+08:00.
	ClientBindTime *string `json:"ClientBindTime,omitnil,omitempty" name:"ClientBindTime"`
}

type QueryVoucherAmountByUinItem struct {
	// Customer UIN
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// Voucher quota
	TotalAmount *float64 `json:"TotalAmount,omitnil,omitempty" name:"TotalAmount"`

	// Voucher amount
	RemainAmount *float64 `json:"RemainAmount,omitnil,omitempty" name:"RemainAmount"`
}

// Predefined struct for user
type QueryVoucherAmountByUinRequestParams struct {
	// Customer UIN list. Array length value: 1-20.
	ClientUins []*uint64 `json:"ClientUins,omitnil,omitempty" name:"ClientUins"`
}

type QueryVoucherAmountByUinRequest struct {
	*tchttp.BaseRequest
	
	// Customer UIN list. Array length value: 1-20.
	ClientUins []*uint64 `json:"ClientUins,omitnil,omitempty" name:"ClientUins"`
}

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

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

// Predefined struct for user
type QueryVoucherAmountByUinResponseParams struct {
	// Customer voucher quota information
	Data []*QueryVoucherAmountByUinItem `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 QueryVoucherAmountByUinResponse struct {
	*tchttp.BaseResponse
	Response *QueryVoucherAmountByUinResponseParams `json:"Response"`
}

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

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

type QueryVoucherListByUinItem struct {
	// Customer UIN
	ClientUin *int64 `json:"ClientUin,omitnil,omitempty" name:"ClientUin"`

	// The total number of vouchers
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Voucher details
	Data []*QueryVoucherListByUinVoucherItem `json:"Data,omitnil,omitempty" name:"Data"`
}

// Predefined struct for user
type QueryVoucherListByUinRequestParams struct {
	// Customer UIN list. Array length value: 1-20.
	ClientUins []*uint64 `json:"ClientUins,omitnil,omitempty" name:"ClientUins"`

	// Voucher status. If this parameter is not passed in, all status will be queried by default. Valid values: `Unused`, `Used`, `Expired`.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`
}

type QueryVoucherListByUinRequest struct {
	*tchttp.BaseRequest
	
	// Customer UIN list. Array length value: 1-20.
	ClientUins []*uint64 `json:"ClientUins,omitnil,omitempty" name:"ClientUins"`

	// Voucher status. If this parameter is not passed in, all status will be queried by default. Valid values: `Unused`, `Used`, `Expired`.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`
}

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

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

// Predefined struct for user
type QueryVoucherListByUinResponseParams struct {
	// Customer voucher information
	Data []*QueryVoucherListByUinItem `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 QueryVoucherListByUinResponse struct {
	*tchttp.BaseResponse
	Response *QueryVoucherListByUinResponseParams `json:"Response"`
}

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

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

type QueryVoucherListByUinVoucherItem struct {
	// Voucher ID
	VoucherId *string `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Voucher status
	VoucherStatus *string `json:"VoucherStatus,omitnil,omitempty" name:"VoucherStatus"`

	// Voucher value
	TotalAmount *float64 `json:"TotalAmount,omitnil,omitempty" name:"TotalAmount"`

	// Balance
	RemainAmount *float64 `json:"RemainAmount,omitnil,omitempty" name:"RemainAmount"`
}

// Predefined struct for user
type QueryVoucherPoolRequestParams struct {

}

type QueryVoucherPoolRequest struct {
	*tchttp.BaseRequest
	
}

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

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *QueryVoucherPoolRequest) 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", "QueryVoucherPoolRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type QueryVoucherPoolResponseParams struct {
	// Reseller name
	AgentName *string `json:"AgentName,omitnil,omitempty" name:"AgentName"`

	// Reseller role type (1: Reseller; 2: Distributor; 3: Second-level reseller)
	AccountType *int64 `json:"AccountType,omitnil,omitempty" name:"AccountType"`

	// Total quota
	TotalQuota *float64 `json:"TotalQuota,omitnil,omitempty" name:"TotalQuota"`

	// Remaining quota
	RemainingQuota *float64 `json:"RemainingQuota,omitnil,omitempty" name:"RemainingQuota"`

	// The number of issued vouchers
	IssuedNum *int64 `json:"IssuedNum,omitnil,omitempty" name:"IssuedNum"`

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

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

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

type RegionSummaryOverviewItem struct {
	// Region id.
	RegionId *string `json:"RegionId,omitnil,omitempty" name:"RegionId"`

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

	// Actual total consumption, up to 8 decimal places.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

	// Voucher payment amount, up to 8 decimal places.
	VoucherPayAmount *string `json:"VoucherPayAmount,omitnil,omitempty" name:"VoucherPayAmount"`

	// Total consumption, up to 8 decimal places.
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`
}

// Predefined struct for user
type SendVerifyCodeRequestParams struct {
	// Country code.
	// Parameter value is not allowed to be 7,380,86.
	CountryCode *string `json:"CountryCode,omitnil,omitempty" name:"CountryCode"`

	// Mobile number.
	// The caller needs to ensure the validity and correctness of the mobile number. A global mobile number within a range of 1-32 digits is allowed.No need to add CountryCode before mobile number.
	PhoneNum *string `json:"PhoneNum,omitnil,omitempty" name:"PhoneNum"`
}

type SendVerifyCodeRequest struct {
	*tchttp.BaseRequest
	
	// Country code.
	// Parameter value is not allowed to be 7,380,86.
	CountryCode *string `json:"CountryCode,omitnil,omitempty" name:"CountryCode"`

	// Mobile number.
	// The caller needs to ensure the validity and correctness of the mobile number. A global mobile number within a range of 1-32 digits is allowed.No need to add CountryCode before mobile number.
	PhoneNum *string `json:"PhoneNum,omitnil,omitempty" name:"PhoneNum"`
}

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

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

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

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

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

type SummaryDetails struct {
	// Product information list.
	Business []*BusinessInfo `json:"Business,omitnil,omitempty" name:"Business"`

	// Original price.
	OriginalCost *string `json:"OriginalCost,omitnil,omitempty" name:"OriginalCost"`

	// Voucher amount.
	VoucherPayAmount *string `json:"VoucherPayAmount,omitnil,omitempty" name:"VoucherPayAmount"`

	// RI deduction.
	RICost *string `json:"RICost,omitnil,omitempty" name:"RICost"`

	// <TOTAL_AMOUNT>.
	TotalCost *string `json:"TotalCost,omitnil,omitempty" name:"TotalCost"`

	// Classification dimension summary key.
	GroupKey *string `json:"GroupKey,omitnil,omitempty" name:"GroupKey"`

	// Summary value by classification dimension.
	GroupValue *string `json:"GroupValue,omitnil,omitempty" name:"GroupValue"`
}

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

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

type TradeOneNode struct {
	// Layer-1 industry id.
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

	// Layer-1 industry name.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Layer-2 industries corresponding to the layer-1 industry.
	Children []*TradeTwoNode `json:"Children,omitnil,omitempty" name:"Children"`
}

type TradeTwoNode struct {
	// Secondary industry id.
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

	// Secondary industry name.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Industry information.
	TradeInfo *string `json:"TradeInfo,omitnil,omitempty" name:"TradeInfo"`
}

type UsageDetail struct {
	// Voucher log ID
	Id *int64 `json:"Id,omitnil,omitempty" name:"Id"`

	// Voucher ID.
	VoucherId *string `json:"VoucherId,omitnil,omitempty" name:"VoucherId"`

	// Order ID
	DealName *string `json:"DealName,omitnil,omitempty" name:"DealName"`

	// Billing ID
	BillId *string `json:"BillId,omitnil,omitempty" name:"BillId"`

	// Amount
	Amount *float64 `json:"Amount,omitnil,omitempty" name:"Amount"`

	// Payment mode
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Order product code
	ProductCode *string `json:"ProductCode,omitnil,omitempty" name:"ProductCode"`

	// Sub-product code
	SubProductCode *string `json:"SubProductCode,omitnil,omitempty" name:"SubProductCode"`

	// Product name of the order
	ProductCodeName *string `json:"ProductCodeName,omitnil,omitempty" name:"ProductCodeName"`

	// Subproduct name of the order
	SubProductCodeName *string `json:"SubProductCodeName,omitnil,omitempty" name:"SubProductCodeName"`

	// Order payment time
	PayTime *string `json:"PayTime,omitnil,omitempty" name:"PayTime"`

	// Order completion time
	CompletionTime *string `json:"CompletionTime,omitnil,omitempty" name:"CompletionTime"`

	// Order owner uin
	OwnerUin *int64 `json:"OwnerUin,omitnil,omitempty" name:"OwnerUin"`
}