// 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 (
    "context"
    "errors"
    "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common"
    tchttp "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/http"
    "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/profile"
)

const APIVersion = "2022-09-28"

type Client struct {
    common.Client
}

// Deprecated
func NewClientWithSecretId(secretId, secretKey, region string) (client *Client, err error) {
    cpf := profile.NewClientProfile()
    client = &Client{}
    client.Init(region).WithSecretId(secretId, secretKey).WithProfile(cpf)
    return
}

func NewClient(credential common.CredentialIface, region string, clientProfile *profile.ClientProfile) (client *Client, err error) {
    client = &Client{}
    client.Init(region).
        WithCredential(credential).
        WithProfile(clientProfile)
    return
}


func NewAllocateCreditPoolRequest() (request *AllocateCreditPoolRequest) {
    request = &AllocateCreditPoolRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "AllocateCreditPool")
    
    
    return
}

func NewAllocateCreditPoolResponse() (response *AllocateCreditPoolResponse) {
    response = &AllocateCreditPoolResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// AllocateCreditPool
// This API is used to allocate credit pools to second-level resellers by distributors.
//
// Callable roles: Distributor
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_VOUCHERAMOUNTOUTOFRANGE = "InvalidParameterValue.VoucherAmountOutOfRange"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) AllocateCreditPool(request *AllocateCreditPoolRequest) (response *AllocateCreditPoolResponse, err error) {
    return c.AllocateCreditPoolWithContext(context.Background(), request)
}

// AllocateCreditPool
// This API is used to allocate credit pools to second-level resellers by distributors.
//
// Callable roles: Distributor
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_VOUCHERAMOUNTOUTOFRANGE = "InvalidParameterValue.VoucherAmountOutOfRange"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) AllocateCreditPoolWithContext(ctx context.Context, request *AllocateCreditPoolRequest) (response *AllocateCreditPoolResponse, err error) {
    if request == nil {
        request = NewAllocateCreditPoolRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "AllocateCreditPool")
    
    if c.GetCredential() == nil {
        return nil, errors.New("AllocateCreditPool require credential")
    }

    request.SetContext(ctx)
    
    response = NewAllocateCreditPoolResponse()
    err = c.Send(request, response)
    return
}

func NewAllocateCustomerCreditRequest() (request *AllocateCustomerCreditRequest) {
    request = &AllocateCustomerCreditRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "AllocateCustomerCredit")
    
    
    return
}

func NewAllocateCustomerCreditResponse() (response *AllocateCustomerCreditResponse) {
    response = &AllocateCustomerCreditResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// AllocateCustomerCredit
// This API is used for a partner to set credit for a customer, such as increasing or lowering the credit and setting it to 0.
//
// 1. The credit is valid permanently and will not be zeroed regularly.
//
// 2. The customer's service will be suspended when its available credit is set to 0, so caution should be exercised with this operation.
//
// 3. To prevent the customer from making new purchases without affecting their use of previously purchased products, the partner can set their available credit to 0 after obtaining the non-stop feature privilege from the channel manager.
//
// 4. The set credit is an increment of the current available credit and cannot exceed the remaining allocable credit. Setting the credit to a negative value indicates that it will be repossessed. The available credit can be set to 0 at the minimum.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  FAILEDOPERATION_BALANCEINSUFFICIENT = "FailedOperation.BalanceInsufficient"
//  INVALIDPARAMETERVALUE_CREDITAMOUNTOUTOFRANGE = "InvalidParameterValue.CreditAmountOutOfRange"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) AllocateCustomerCredit(request *AllocateCustomerCreditRequest) (response *AllocateCustomerCreditResponse, err error) {
    return c.AllocateCustomerCreditWithContext(context.Background(), request)
}

// AllocateCustomerCredit
// This API is used for a partner to set credit for a customer, such as increasing or lowering the credit and setting it to 0.
//
// 1. The credit is valid permanently and will not be zeroed regularly.
//
// 2. The customer's service will be suspended when its available credit is set to 0, so caution should be exercised with this operation.
//
// 3. To prevent the customer from making new purchases without affecting their use of previously purchased products, the partner can set their available credit to 0 after obtaining the non-stop feature privilege from the channel manager.
//
// 4. The set credit is an increment of the current available credit and cannot exceed the remaining allocable credit. Setting the credit to a negative value indicates that it will be repossessed. The available credit can be set to 0 at the minimum.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  FAILEDOPERATION_BALANCEINSUFFICIENT = "FailedOperation.BalanceInsufficient"
//  INVALIDPARAMETERVALUE_CREDITAMOUNTOUTOFRANGE = "InvalidParameterValue.CreditAmountOutOfRange"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) AllocateCustomerCreditWithContext(ctx context.Context, request *AllocateCustomerCreditRequest) (response *AllocateCustomerCreditResponse, err error) {
    if request == nil {
        request = NewAllocateCustomerCreditRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "AllocateCustomerCredit")
    
    if c.GetCredential() == nil {
        return nil, errors.New("AllocateCustomerCredit require credential")
    }

    request.SetContext(ctx)
    
    response = NewAllocateCustomerCreditResponse()
    err = c.Send(request, response)
    return
}

func NewApproveClientApplyRequest() (request *ApproveClientApplyRequest) {
    request = &ApproveClientApplyRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "ApproveClientApply")
    
    
    return
}

func NewApproveClientApplyResponse() (response *ApproveClientApplyResponse) {
    response = &ApproveClientApplyResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// ApproveClientApply
// Description: This API is used by resellers to review applications to become sub-customers. Note: This API is used to apply for the allowlist. If needed, please contact your business representative.
//
// 
//
// Callable roles: Reseller, Distributer, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_BINDORGANIZATIONACCOUNT = "FailedOperation.BindOrganizationAccount"
//  FAILEDOPERATION_CLIENTBALANCEISLESSOREQUALZERO = "FailedOperation.ClientBalanceIsLessOrEqualZero"
//  FAILEDOPERATION_CLIENTBUYSP = "FailedOperation.ClientBuySP"
//  FAILEDOPERATION_CLIENTCREATESHAREUNIT = "FailedOperation.ClientCreateShareUnit"
//  FAILEDOPERATION_CLIENTJOINSHAREUNIT = "FailedOperation.ClientJoinShareUnit"
//  FAILEDOPERATION_CLIENTNOTAPPLY = "FailedOperation.ClientNotApply"
//  FAILEDOPERATION_EXCEEDMAXBINDCOUNT = "FailedOperation.ExceedMaxBindCount"
//  FAILEDOPERATION_UINALREADYKA = "FailedOperation.UinAlreadyKA"
//  FAILEDOPERATION_UINNOTRESELLER = "FailedOperation.UinNotReseller"
//  INVALIDPARAMETERVALUE_INVALIDUIN = "InvalidParameterValue.InvalidUin"
//  INVALIDPARAMETERVALUE_UINALREADYCLIENT = "InvalidParameterValue.UinAlreadyClient"
//  INVALIDPARAMETERVALUE_UINISSUBACCOUNT = "InvalidParameterValue.UinIsSubAccount"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) ApproveClientApply(request *ApproveClientApplyRequest) (response *ApproveClientApplyResponse, err error) {
    return c.ApproveClientApplyWithContext(context.Background(), request)
}

// ApproveClientApply
// Description: This API is used by resellers to review applications to become sub-customers. Note: This API is used to apply for the allowlist. If needed, please contact your business representative.
//
// 
//
// Callable roles: Reseller, Distributer, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_BINDORGANIZATIONACCOUNT = "FailedOperation.BindOrganizationAccount"
//  FAILEDOPERATION_CLIENTBALANCEISLESSOREQUALZERO = "FailedOperation.ClientBalanceIsLessOrEqualZero"
//  FAILEDOPERATION_CLIENTBUYSP = "FailedOperation.ClientBuySP"
//  FAILEDOPERATION_CLIENTCREATESHAREUNIT = "FailedOperation.ClientCreateShareUnit"
//  FAILEDOPERATION_CLIENTJOINSHAREUNIT = "FailedOperation.ClientJoinShareUnit"
//  FAILEDOPERATION_CLIENTNOTAPPLY = "FailedOperation.ClientNotApply"
//  FAILEDOPERATION_EXCEEDMAXBINDCOUNT = "FailedOperation.ExceedMaxBindCount"
//  FAILEDOPERATION_UINALREADYKA = "FailedOperation.UinAlreadyKA"
//  FAILEDOPERATION_UINNOTRESELLER = "FailedOperation.UinNotReseller"
//  INVALIDPARAMETERVALUE_INVALIDUIN = "InvalidParameterValue.InvalidUin"
//  INVALIDPARAMETERVALUE_UINALREADYCLIENT = "InvalidParameterValue.UinAlreadyClient"
//  INVALIDPARAMETERVALUE_UINISSUBACCOUNT = "InvalidParameterValue.UinIsSubAccount"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) ApproveClientApplyWithContext(ctx context.Context, request *ApproveClientApplyRequest) (response *ApproveClientApplyResponse, err error) {
    if request == nil {
        request = NewApproveClientApplyRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "ApproveClientApply")
    
    if c.GetCredential() == nil {
        return nil, errors.New("ApproveClientApply require credential")
    }

    request.SetContext(ctx)
    
    response = NewApproveClientApplyResponse()
    err = c.Send(request, response)
    return
}

func NewApproveSubAgentApplyRequest() (request *ApproveSubAgentApplyRequest) {
    request = &ApproveSubAgentApplyRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "ApproveSubAgentApply")
    
    
    return
}

func NewApproveSubAgentApplyResponse() (response *ApproveSubAgentApplyResponse) {
    response = &ApproveSubAgentApplyResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// ApproveSubAgentApply
// This API is used to approve applications for second-level resellers.
//
// Invocation Role: Distributor.
//
// error code that may be returned:
//  FAILEDOPERATION_ACCOUNTTYPENOTCOMPANY = "FailedOperation.AccountTypeNotCompany"
//  FAILEDOPERATION_BINDORGANIZATIONACCOUNT = "FailedOperation.BindOrganizationAccount"
//  FAILEDOPERATION_CLIENTBALANCEISLESSOREQUALZERO = "FailedOperation.ClientBalanceIsLessOrEqualZero"
//  FAILEDOPERATION_CLIENTBUYSP = "FailedOperation.ClientBuySP"
//  FAILEDOPERATION_CLIENTCREATESHAREUNIT = "FailedOperation.ClientCreateShareUnit"
//  FAILEDOPERATION_CLIENTJOINSHAREUNIT = "FailedOperation.ClientJoinShareUnit"
//  FAILEDOPERATION_EXCEEDMAXBINDCOUNT = "FailedOperation.ExceedMaxBindCount"
//  FAILEDOPERATION_REALNAMEINAPPROVAL = "FailedOperation.RealNameInApproval"
//  FAILEDOPERATION_REALNAMENOTCOMPLETED = "FailedOperation.RealNameNotCompleted"
//  FAILEDOPERATION_REALNAMEREJECT = "FailedOperation.RealNameReject"
//  FAILEDOPERATION_REALNAMETYPEILLEGAL = "FailedOperation.RealNameTypeIllegal"
//  FAILEDOPERATION_RESELLERNOTAPPLY = "FailedOperation.ResellerNotApply"
//  FAILEDOPERATION_UINALREADYKA = "FailedOperation.UinAlreadyKA"
//  FAILEDOPERATION_UINAPPLIEDAGENT = "FailedOperation.UinAppliedAgent"
//  FAILEDOPERATION_UINNOTRESELLER = "FailedOperation.UinNotReseller"
//  INVALIDPARAMETERVALUE_UINALREADYAPPLIEDCLIENT = "InvalidParameterValue.UinAlreadyAppliedClient"
//  INVALIDPARAMETERVALUE_UINALREADYCLIENT = "InvalidParameterValue.UinAlreadyClient"
//  INVALIDPARAMETERVALUE_UINALREADYRESELLER = "InvalidParameterValue.UinAlreadyReseller"
//  INVALIDPARAMETERVALUE_UINISSUBACCOUNT = "InvalidParameterValue.UinIsSubAccount"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) ApproveSubAgentApply(request *ApproveSubAgentApplyRequest) (response *ApproveSubAgentApplyResponse, err error) {
    return c.ApproveSubAgentApplyWithContext(context.Background(), request)
}

// ApproveSubAgentApply
// This API is used to approve applications for second-level resellers.
//
// Invocation Role: Distributor.
//
// error code that may be returned:
//  FAILEDOPERATION_ACCOUNTTYPENOTCOMPANY = "FailedOperation.AccountTypeNotCompany"
//  FAILEDOPERATION_BINDORGANIZATIONACCOUNT = "FailedOperation.BindOrganizationAccount"
//  FAILEDOPERATION_CLIENTBALANCEISLESSOREQUALZERO = "FailedOperation.ClientBalanceIsLessOrEqualZero"
//  FAILEDOPERATION_CLIENTBUYSP = "FailedOperation.ClientBuySP"
//  FAILEDOPERATION_CLIENTCREATESHAREUNIT = "FailedOperation.ClientCreateShareUnit"
//  FAILEDOPERATION_CLIENTJOINSHAREUNIT = "FailedOperation.ClientJoinShareUnit"
//  FAILEDOPERATION_EXCEEDMAXBINDCOUNT = "FailedOperation.ExceedMaxBindCount"
//  FAILEDOPERATION_REALNAMEINAPPROVAL = "FailedOperation.RealNameInApproval"
//  FAILEDOPERATION_REALNAMENOTCOMPLETED = "FailedOperation.RealNameNotCompleted"
//  FAILEDOPERATION_REALNAMEREJECT = "FailedOperation.RealNameReject"
//  FAILEDOPERATION_REALNAMETYPEILLEGAL = "FailedOperation.RealNameTypeIllegal"
//  FAILEDOPERATION_RESELLERNOTAPPLY = "FailedOperation.ResellerNotApply"
//  FAILEDOPERATION_UINALREADYKA = "FailedOperation.UinAlreadyKA"
//  FAILEDOPERATION_UINAPPLIEDAGENT = "FailedOperation.UinAppliedAgent"
//  FAILEDOPERATION_UINNOTRESELLER = "FailedOperation.UinNotReseller"
//  INVALIDPARAMETERVALUE_UINALREADYAPPLIEDCLIENT = "InvalidParameterValue.UinAlreadyAppliedClient"
//  INVALIDPARAMETERVALUE_UINALREADYCLIENT = "InvalidParameterValue.UinAlreadyClient"
//  INVALIDPARAMETERVALUE_UINALREADYRESELLER = "InvalidParameterValue.UinAlreadyReseller"
//  INVALIDPARAMETERVALUE_UINISSUBACCOUNT = "InvalidParameterValue.UinIsSubAccount"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) ApproveSubAgentApplyWithContext(ctx context.Context, request *ApproveSubAgentApplyRequest) (response *ApproveSubAgentApplyResponse, err error) {
    if request == nil {
        request = NewApproveSubAgentApplyRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "ApproveSubAgentApply")
    
    if c.GetCredential() == nil {
        return nil, errors.New("ApproveSubAgentApply require credential")
    }

    request.SetContext(ctx)
    
    response = NewApproveSubAgentApplyResponse()
    err = c.Send(request, response)
    return
}

func NewCreateAccountRequest() (request *CreateAccountRequest) {
    request = &CreateAccountRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "CreateAccount")
    
    
    return
}

func NewCreateAccountResponse() (response *CreateAccountResponse) {
    response = &CreateAccountResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// CreateAccount
// This API is used to create Tencent Cloud customer accounts for distributor/second-level resellers.After the account is created, it will be automatically bound to the partner account.Note:
//
// 1. Create a Tencent Cloud account. The entered email address and mobile phone number need to be verified by the partner for validity.
//
// 2. Customers need to add personal information when logging in for the first time.
//
// 3. This interface needs to be applied for allowlist usage. Please contact the channel manager to initiate the application process.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  AUTHFAILURE = "AuthFailure"
//  FAILEDOPERATION_EXCEEDMAXBINDCOUNT = "FailedOperation.ExceedMaxBindCount"
//  FAILEDOPERATION_MAILISREGISTERED = "FailedOperation.MailIsRegistered"
//  FAILEDOPERATION_PHONEBINDUPPER = "FailedOperation.PhoneBindUpper"
//  FAILEDOPERATION_TRADEINFOINCORRECT = "FailedOperation.TradeInfoIncorrect"
//  FAILEDOPERATION_VERIFICATIONCODEILLEGAL = "FailedOperation.VerificationCodeIllegal"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER_ACCOUNTTYPECONTENTINCORRECT = "InvalidParameter.AccountTypeContentIncorrect"
//  INVALIDPARAMETER_AREACONTENTINCORRECT = "InvalidParameter.AreaContentIncorrect"
//  INVALIDPARAMETER_AREAFORMATINCORRECT = "InvalidParameter.AreaFormatIncorrect"
//  INVALIDPARAMETER_CONFIRMPASSWORDCONTENTINCORRECT = "InvalidParameter.ConfirmPasswordContentIncorrect"
//  INVALIDPARAMETER_COUNTRYCODECONTENTINCORRECT = "InvalidParameter.CountryCodeContentIncorrect"
//  INVALIDPARAMETER_COUNTRYCODEFORMATINCORRECT = "InvalidParameter.CountryCodeFormatIncorrect"
//  INVALIDPARAMETER_MAILFORMATINCORRECT = "InvalidParameter.MailFormatIncorrect"
//  INVALIDPARAMETER_PASSWORDCONTENTINCORRECT = "InvalidParameter.PasswordContentIncorrect"
//  INVALIDPARAMETER_PASSWORDFORMATINCORRECT = "InvalidParameter.PasswordFormatIncorrect"
//  INVALIDPARAMETER_PHONENUMFORMATINCORRECT = "InvalidParameter.PhoneNumFormatIncorrect"
//  INVALIDPARAMETERVALUE_ACCOUNTTYPEEMPTY = "InvalidParameterValue.AccountTypeEmpty"
//  INVALIDPARAMETERVALUE_AREAEMPTY = "InvalidParameterValue.AreaEmpty"
//  INVALIDPARAMETERVALUE_COUNTRYCODEEMPTY = "InvalidParameterValue.CountryCodeEmpty"
//  INVALIDPARAMETERVALUE_MAILEMPTY = "InvalidParameterValue.MailEmpty"
//  INVALIDPARAMETERVALUE_PASSWORDEMPTY = "InvalidParameterValue.PasswordEmpty"
//  INVALIDPARAMETERVALUE_PHONENUMEMPTY = "InvalidParameterValue.PhoneNumEmpty"
//  INVALIDPARAMETERVALUE_TRADEINFOEMPTY = "InvalidParameterValue.TradeInfoEmpty"
//  INVALIDPARAMETERVALUE_UNSUPPORTAREA = "InvalidParameterValue.UnSupportArea"
//  UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
func (c *Client) CreateAccount(request *CreateAccountRequest) (response *CreateAccountResponse, err error) {
    return c.CreateAccountWithContext(context.Background(), request)
}

// CreateAccount
// This API is used to create Tencent Cloud customer accounts for distributor/second-level resellers.After the account is created, it will be automatically bound to the partner account.Note:
//
// 1. Create a Tencent Cloud account. The entered email address and mobile phone number need to be verified by the partner for validity.
//
// 2. Customers need to add personal information when logging in for the first time.
//
// 3. This interface needs to be applied for allowlist usage. Please contact the channel manager to initiate the application process.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  AUTHFAILURE = "AuthFailure"
//  FAILEDOPERATION_EXCEEDMAXBINDCOUNT = "FailedOperation.ExceedMaxBindCount"
//  FAILEDOPERATION_MAILISREGISTERED = "FailedOperation.MailIsRegistered"
//  FAILEDOPERATION_PHONEBINDUPPER = "FailedOperation.PhoneBindUpper"
//  FAILEDOPERATION_TRADEINFOINCORRECT = "FailedOperation.TradeInfoIncorrect"
//  FAILEDOPERATION_VERIFICATIONCODEILLEGAL = "FailedOperation.VerificationCodeIllegal"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER_ACCOUNTTYPECONTENTINCORRECT = "InvalidParameter.AccountTypeContentIncorrect"
//  INVALIDPARAMETER_AREACONTENTINCORRECT = "InvalidParameter.AreaContentIncorrect"
//  INVALIDPARAMETER_AREAFORMATINCORRECT = "InvalidParameter.AreaFormatIncorrect"
//  INVALIDPARAMETER_CONFIRMPASSWORDCONTENTINCORRECT = "InvalidParameter.ConfirmPasswordContentIncorrect"
//  INVALIDPARAMETER_COUNTRYCODECONTENTINCORRECT = "InvalidParameter.CountryCodeContentIncorrect"
//  INVALIDPARAMETER_COUNTRYCODEFORMATINCORRECT = "InvalidParameter.CountryCodeFormatIncorrect"
//  INVALIDPARAMETER_MAILFORMATINCORRECT = "InvalidParameter.MailFormatIncorrect"
//  INVALIDPARAMETER_PASSWORDCONTENTINCORRECT = "InvalidParameter.PasswordContentIncorrect"
//  INVALIDPARAMETER_PASSWORDFORMATINCORRECT = "InvalidParameter.PasswordFormatIncorrect"
//  INVALIDPARAMETER_PHONENUMFORMATINCORRECT = "InvalidParameter.PhoneNumFormatIncorrect"
//  INVALIDPARAMETERVALUE_ACCOUNTTYPEEMPTY = "InvalidParameterValue.AccountTypeEmpty"
//  INVALIDPARAMETERVALUE_AREAEMPTY = "InvalidParameterValue.AreaEmpty"
//  INVALIDPARAMETERVALUE_COUNTRYCODEEMPTY = "InvalidParameterValue.CountryCodeEmpty"
//  INVALIDPARAMETERVALUE_MAILEMPTY = "InvalidParameterValue.MailEmpty"
//  INVALIDPARAMETERVALUE_PASSWORDEMPTY = "InvalidParameterValue.PasswordEmpty"
//  INVALIDPARAMETERVALUE_PHONENUMEMPTY = "InvalidParameterValue.PhoneNumEmpty"
//  INVALIDPARAMETERVALUE_TRADEINFOEMPTY = "InvalidParameterValue.TradeInfoEmpty"
//  INVALIDPARAMETERVALUE_UNSUPPORTAREA = "InvalidParameterValue.UnSupportArea"
//  UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
func (c *Client) CreateAccountWithContext(ctx context.Context, request *CreateAccountRequest) (response *CreateAccountResponse, err error) {
    if request == nil {
        request = NewCreateAccountRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "CreateAccount")
    
    if c.GetCredential() == nil {
        return nil, errors.New("CreateAccount require credential")
    }

    request.SetContext(ctx)
    
    response = NewCreateAccountResponse()
    err = c.Send(request, response)
    return
}

func NewCreateAndSendClientInvitationMailRequest() (request *CreateAndSendClientInvitationMailRequest) {
    request = &CreateAndSendClientInvitationMailRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "CreateAndSendClientInvitationMail")
    
    
    return
}

func NewCreateAndSendClientInvitationMailResponse() (response *CreateAndSendClientInvitationMailResponse) {
    response = &CreateAndSendClientInvitationMailResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// CreateAndSendClientInvitationMail
// This API is used to perform operations. Application for allowlist is required before usage. If needed, contact your business representative to request allowlisting. The specific usage process is as follows;.
//
// This API is used to create an invitation link. You can send the invitation link to your designated email address.
//
// 2. Customers need to click the invitation link in the mailbox, fill in and submit relevant information.
//
// 3. After customer submission, you can view the application of this sub-customer on the customer management page and review it.
//
// 
//
// This API is used to handle cases where if the designated mailbox does not receive the invitation link, you can send the invitation link returned by the API to the customer manually.
//
// Invocation roles: resellers, distributors, second-level reseller.
//
// error code that may be returned:
//  FAILEDOPERATION_SENDMAILLIMIT180 = "FailedOperation.SendMailLimit180"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
func (c *Client) CreateAndSendClientInvitationMail(request *CreateAndSendClientInvitationMailRequest) (response *CreateAndSendClientInvitationMailResponse, err error) {
    return c.CreateAndSendClientInvitationMailWithContext(context.Background(), request)
}

// CreateAndSendClientInvitationMail
// This API is used to perform operations. Application for allowlist is required before usage. If needed, contact your business representative to request allowlisting. The specific usage process is as follows;.
//
// This API is used to create an invitation link. You can send the invitation link to your designated email address.
//
// 2. Customers need to click the invitation link in the mailbox, fill in and submit relevant information.
//
// 3. After customer submission, you can view the application of this sub-customer on the customer management page and review it.
//
// 
//
// This API is used to handle cases where if the designated mailbox does not receive the invitation link, you can send the invitation link returned by the API to the customer manually.
//
// Invocation roles: resellers, distributors, second-level reseller.
//
// error code that may be returned:
//  FAILEDOPERATION_SENDMAILLIMIT180 = "FailedOperation.SendMailLimit180"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
func (c *Client) CreateAndSendClientInvitationMailWithContext(ctx context.Context, request *CreateAndSendClientInvitationMailRequest) (response *CreateAndSendClientInvitationMailResponse, err error) {
    if request == nil {
        request = NewCreateAndSendClientInvitationMailRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "CreateAndSendClientInvitationMail")
    
    if c.GetCredential() == nil {
        return nil, errors.New("CreateAndSendClientInvitationMail require credential")
    }

    request.SetContext(ctx)
    
    response = NewCreateAndSendClientInvitationMailResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeBillDetailRequest() (request *DescribeBillDetailRequest) {
    request = &DescribeBillDetailRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeBillDetail")
    
    
    return
}

func NewDescribeBillDetailResponse() (response *DescribeBillDetailResponse) {
    response = &DescribeBillDetailResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeBillDetail
// Description: End-customer queries its own bill details.
//
// Callable role: End-customer.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillDetail(request *DescribeBillDetailRequest) (response *DescribeBillDetailResponse, err error) {
    return c.DescribeBillDetailWithContext(context.Background(), request)
}

// DescribeBillDetail
// Description: End-customer queries its own bill details.
//
// Callable role: End-customer.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillDetailWithContext(ctx context.Context, request *DescribeBillDetailRequest) (response *DescribeBillDetailResponse, err error) {
    if request == nil {
        request = NewDescribeBillDetailRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeBillDetail")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeBillDetail require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeBillDetailResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeBillDownloadUrlRequest() (request *DescribeBillDownloadUrlRequest) {
    request = &DescribeBillDownloadUrlRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeBillDownloadUrl")
    
    
    return
}

func NewDescribeBillDownloadUrlResponse() (response *DescribeBillDownloadUrlResponse) {
    response = &DescribeBillDownloadUrlResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeBillDownloadUrl
// Description: This API is used to download billing files and return billing file URLs for sub-customers.
//
// Callable role: Enb-customer.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  INVALIDPARAMETER = "InvalidParameter"
func (c *Client) DescribeBillDownloadUrl(request *DescribeBillDownloadUrlRequest) (response *DescribeBillDownloadUrlResponse, err error) {
    return c.DescribeBillDownloadUrlWithContext(context.Background(), request)
}

// DescribeBillDownloadUrl
// Description: This API is used to download billing files and return billing file URLs for sub-customers.
//
// Callable role: Enb-customer.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  INVALIDPARAMETER = "InvalidParameter"
func (c *Client) DescribeBillDownloadUrlWithContext(ctx context.Context, request *DescribeBillDownloadUrlRequest) (response *DescribeBillDownloadUrlResponse, err error) {
    if request == nil {
        request = NewDescribeBillDownloadUrlRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeBillDownloadUrl")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeBillDownloadUrl require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeBillDownloadUrlResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeBillSummaryRequest() (request *DescribeBillSummaryRequest) {
    request = &DescribeBillSummaryRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeBillSummary")
    
    
    return
}

func NewDescribeBillSummaryResponse() (response *DescribeBillSummaryResponse) {
    response = &DescribeBillSummaryResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeBillSummary
// Description: External API for L1 billing of Sub-customer billing center.
//
// Callable role: End-customer.
//
// error code that may be returned:
//  AUTHFAILURE = "AuthFailure"
//  FAILEDOPERATION = "FailedOperation"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER = "InvalidParameter"
//  INVALIDPARAMETERVALUE_INVALIDDIMENSION = "InvalidParameterValue.InvalidDimension"
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
func (c *Client) DescribeBillSummary(request *DescribeBillSummaryRequest) (response *DescribeBillSummaryResponse, err error) {
    return c.DescribeBillSummaryWithContext(context.Background(), request)
}

// DescribeBillSummary
// Description: External API for L1 billing of Sub-customer billing center.
//
// Callable role: End-customer.
//
// error code that may be returned:
//  AUTHFAILURE = "AuthFailure"
//  FAILEDOPERATION = "FailedOperation"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER = "InvalidParameter"
//  INVALIDPARAMETERVALUE_INVALIDDIMENSION = "InvalidParameterValue.InvalidDimension"
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
func (c *Client) DescribeBillSummaryWithContext(ctx context.Context, request *DescribeBillSummaryRequest) (response *DescribeBillSummaryResponse, err error) {
    if request == nil {
        request = NewDescribeBillSummaryRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeBillSummary")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeBillSummary require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeBillSummaryResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeBillSummaryByPayModeRequest() (request *DescribeBillSummaryByPayModeRequest) {
    request = &DescribeBillSummaryByPayModeRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeBillSummaryByPayMode")
    
    
    return
}

func NewDescribeBillSummaryByPayModeResponse() (response *DescribeBillSummaryByPayModeResponse) {
    response = &DescribeBillSummaryByPayModeResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeBillSummaryByPayMode
// This API is used to obtain the total amount of customer bills by payment mode.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillSummaryByPayMode(request *DescribeBillSummaryByPayModeRequest) (response *DescribeBillSummaryByPayModeResponse, err error) {
    return c.DescribeBillSummaryByPayModeWithContext(context.Background(), request)
}

// DescribeBillSummaryByPayMode
// This API is used to obtain the total amount of customer bills by payment mode.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillSummaryByPayModeWithContext(ctx context.Context, request *DescribeBillSummaryByPayModeRequest) (response *DescribeBillSummaryByPayModeResponse, err error) {
    if request == nil {
        request = NewDescribeBillSummaryByPayModeRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeBillSummaryByPayMode")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeBillSummaryByPayMode require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeBillSummaryByPayModeResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeBillSummaryByProductRequest() (request *DescribeBillSummaryByProductRequest) {
    request = &DescribeBillSummaryByProductRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeBillSummaryByProduct")
    
    
    return
}

func NewDescribeBillSummaryByProductResponse() (response *DescribeBillSummaryByProductResponse) {
    response = &DescribeBillSummaryByProductResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeBillSummaryByProduct
// Description: Obtain the summarized value of sub - account bills by product dimension.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillSummaryByProduct(request *DescribeBillSummaryByProductRequest) (response *DescribeBillSummaryByProductResponse, err error) {
    return c.DescribeBillSummaryByProductWithContext(context.Background(), request)
}

// DescribeBillSummaryByProduct
// Description: Obtain the summarized value of sub - account bills by product dimension.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillSummaryByProductWithContext(ctx context.Context, request *DescribeBillSummaryByProductRequest) (response *DescribeBillSummaryByProductResponse, err error) {
    if request == nil {
        request = NewDescribeBillSummaryByProductRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeBillSummaryByProduct")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeBillSummaryByProduct require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeBillSummaryByProductResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeBillSummaryByRegionRequest() (request *DescribeBillSummaryByRegionRequest) {
    request = &DescribeBillSummaryByRegionRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeBillSummaryByRegion")
    
    
    return
}

func NewDescribeBillSummaryByRegionResponse() (response *DescribeBillSummaryByRegionResponse) {
    response = &DescribeBillSummaryByRegionResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeBillSummaryByRegion
// Description: Obtain the summarized value of sub - account bills by region through API.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillSummaryByRegion(request *DescribeBillSummaryByRegionRequest) (response *DescribeBillSummaryByRegionResponse, err error) {
    return c.DescribeBillSummaryByRegionWithContext(context.Background(), request)
}

// DescribeBillSummaryByRegion
// Description: Obtain the summarized value of sub - account bills by region through API.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeBillSummaryByRegionWithContext(ctx context.Context, request *DescribeBillSummaryByRegionRequest) (response *DescribeBillSummaryByRegionResponse, err error) {
    if request == nil {
        request = NewDescribeBillSummaryByRegionRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeBillSummaryByRegion")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeBillSummaryByRegion require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeBillSummaryByRegionResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerBillDetailRequest() (request *DescribeCustomerBillDetailRequest) {
    request = &DescribeCustomerBillDetailRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerBillDetail")
    
    
    return
}

func NewDescribeCustomerBillDetailResponse() (response *DescribeCustomerBillDetailResponse) {
    response = &DescribeCustomerBillDetailResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerBillDetail
// This API is used to query the customer bill details by resellers.
//
// Callable roles: Distributor, Second-level reseller, Reseller.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_NOTCUSTOMERUIN = "UnauthorizedOperation.NotCustomerUin"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillDetail(request *DescribeCustomerBillDetailRequest) (response *DescribeCustomerBillDetailResponse, err error) {
    return c.DescribeCustomerBillDetailWithContext(context.Background(), request)
}

// DescribeCustomerBillDetail
// This API is used to query the customer bill details by resellers.
//
// Callable roles: Distributor, Second-level reseller, Reseller.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_NOTCUSTOMERUIN = "UnauthorizedOperation.NotCustomerUin"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillDetailWithContext(ctx context.Context, request *DescribeCustomerBillDetailRequest) (response *DescribeCustomerBillDetailResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerBillDetailRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerBillDetail")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerBillDetail require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerBillDetailResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerBillDetailByDayRequest() (request *DescribeCustomerBillDetailByDayRequest) {
    request = &DescribeCustomerBillDetailByDayRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerBillDetailByDay")
    
    
    return
}

func NewDescribeCustomerBillDetailByDayResponse() (response *DescribeCustomerBillDetailByDayResponse) {
    response = &DescribeCustomerBillDetailByDayResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerBillDetailByDay
// This API is used to query the daily bill expenditure of customer by resellers.
//
// Invocation Role: first-level reseller, second-level reseller, reseller.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillDetailByDay(request *DescribeCustomerBillDetailByDayRequest) (response *DescribeCustomerBillDetailByDayResponse, err error) {
    return c.DescribeCustomerBillDetailByDayWithContext(context.Background(), request)
}

// DescribeCustomerBillDetailByDay
// This API is used to query the daily bill expenditure of customer by resellers.
//
// Invocation Role: first-level reseller, second-level reseller, reseller.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillDetailByDayWithContext(ctx context.Context, request *DescribeCustomerBillDetailByDayRequest) (response *DescribeCustomerBillDetailByDayResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerBillDetailByDayRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerBillDetailByDay")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerBillDetailByDay require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerBillDetailByDayResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerBillDownloadUrlRequest() (request *DescribeCustomerBillDownloadUrlRequest) {
    request = &DescribeCustomerBillDownloadUrlRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerBillDownloadUrl")
    
    
    return
}

func NewDescribeCustomerBillDownloadUrlResponse() (response *DescribeCustomerBillDownloadUrlResponse) {
    response = &DescribeCustomerBillDownloadUrlResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerBillDownloadUrl
// This API is used to get the URL for downloading the customer bill file by reseller. The download conditions are as follows:
//
// 1. Detailed bills (billDetail and billDetailPack) can be downloaded starting from June 2022; resource bills (billResource and billResourcePack) can be downloaded starting from November 2023.
//
// 2. Bill packages (billDetailPack and billResourcePack) can only be downloaded after billing.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  INVALIDPARAMETER = "InvalidParameter"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillDownloadUrl(request *DescribeCustomerBillDownloadUrlRequest) (response *DescribeCustomerBillDownloadUrlResponse, err error) {
    return c.DescribeCustomerBillDownloadUrlWithContext(context.Background(), request)
}

// DescribeCustomerBillDownloadUrl
// This API is used to get the URL for downloading the customer bill file by reseller. The download conditions are as follows:
//
// 1. Detailed bills (billDetail and billDetailPack) can be downloaded starting from June 2022; resource bills (billResource and billResourcePack) can be downloaded starting from November 2023.
//
// 2. Bill packages (billDetailPack and billResourcePack) can only be downloaded after billing.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  INVALIDPARAMETER = "InvalidParameter"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillDownloadUrlWithContext(ctx context.Context, request *DescribeCustomerBillDownloadUrlRequest) (response *DescribeCustomerBillDownloadUrlResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerBillDownloadUrlRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerBillDownloadUrl")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerBillDownloadUrl require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerBillDownloadUrlResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerBillSummaryRequest() (request *DescribeCustomerBillSummaryRequest) {
    request = &DescribeCustomerBillSummaryRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerBillSummary")
    
    
    return
}

func NewDescribeCustomerBillSummaryResponse() (response *DescribeCustomerBillSummaryResponse) {
    response = &DescribeCustomerBillSummaryResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerBillSummary
// This API is used to query the total amount of customer bills.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillSummary(request *DescribeCustomerBillSummaryRequest) (response *DescribeCustomerBillSummaryResponse, err error) {
    return c.DescribeCustomerBillSummaryWithContext(context.Background(), request)
}

// DescribeCustomerBillSummary
// This API is used to query the total amount of customer bills.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE_INVALIDMONTH = "InvalidParameterValue.InvalidMonth"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerBillSummaryWithContext(ctx context.Context, request *DescribeCustomerBillSummaryRequest) (response *DescribeCustomerBillSummaryResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerBillSummaryRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerBillSummary")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerBillSummary require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerBillSummaryResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerInfoRequest() (request *DescribeCustomerInfoRequest) {
    request = &DescribeCustomerInfoRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerInfo")
    
    
    return
}

func NewDescribeCustomerInfoResponse() (response *DescribeCustomerInfoResponse) {
    response = &DescribeCustomerInfoResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerInfo
// This API is used to query sub-customer information.
//
// Invocation roles: reseller, first-level distributor.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerInfo(request *DescribeCustomerInfoRequest) (response *DescribeCustomerInfoResponse, err error) {
    return c.DescribeCustomerInfoWithContext(context.Background(), request)
}

// DescribeCustomerInfo
// This API is used to query sub-customer information.
//
// Invocation roles: reseller, first-level distributor.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerInfoWithContext(ctx context.Context, request *DescribeCustomerInfoRequest) (response *DescribeCustomerInfoResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerInfoRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerInfo")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerInfo require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerInfoResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerOwnCostExplorerFilterRequest() (request *DescribeCustomerOwnCostExplorerFilterRequest) {
    request = &DescribeCustomerOwnCostExplorerFilterRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerOwnCostExplorerFilter")
    
    
    return
}

func NewDescribeCustomerOwnCostExplorerFilterResponse() (response *DescribeCustomerOwnCostExplorerFilterResponse) {
    response = &DescribeCustomerOwnCostExplorerFilterResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerOwnCostExplorerFilter
// Cost analysis API advanced filtering
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerOwnCostExplorerFilter(request *DescribeCustomerOwnCostExplorerFilterRequest) (response *DescribeCustomerOwnCostExplorerFilterResponse, err error) {
    return c.DescribeCustomerOwnCostExplorerFilterWithContext(context.Background(), request)
}

// DescribeCustomerOwnCostExplorerFilter
// Cost analysis API advanced filtering
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerOwnCostExplorerFilterWithContext(ctx context.Context, request *DescribeCustomerOwnCostExplorerFilterRequest) (response *DescribeCustomerOwnCostExplorerFilterResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerOwnCostExplorerFilterRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerOwnCostExplorerFilter")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerOwnCostExplorerFilter require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerOwnCostExplorerFilterResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerOwnCostExplorerSummaryRequest() (request *DescribeCustomerOwnCostExplorerSummaryRequest) {
    request = &DescribeCustomerOwnCostExplorerSummaryRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerOwnCostExplorerSummary")
    
    
    return
}

func NewDescribeCustomerOwnCostExplorerSummaryResponse() (response *DescribeCustomerOwnCostExplorerSummaryResponse) {
    response = &DescribeCustomerOwnCostExplorerSummaryResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerOwnCostExplorerSummary
// Cost analysis API
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerOwnCostExplorerSummary(request *DescribeCustomerOwnCostExplorerSummaryRequest) (response *DescribeCustomerOwnCostExplorerSummaryResponse, err error) {
    return c.DescribeCustomerOwnCostExplorerSummaryWithContext(context.Background(), request)
}

// DescribeCustomerOwnCostExplorerSummary
// Cost analysis API
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerOwnCostExplorerSummaryWithContext(ctx context.Context, request *DescribeCustomerOwnCostExplorerSummaryRequest) (response *DescribeCustomerOwnCostExplorerSummaryResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerOwnCostExplorerSummaryRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerOwnCostExplorerSummary")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerOwnCostExplorerSummary require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerOwnCostExplorerSummaryResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerOwnVoucherListRequest() (request *DescribeCustomerOwnVoucherListRequest) {
    request = &DescribeCustomerOwnVoucherListRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerOwnVoucherList")
    
    
    return
}

func NewDescribeCustomerOwnVoucherListResponse() (response *DescribeCustomerOwnVoucherListResponse) {
    response = &DescribeCustomerOwnVoucherListResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerOwnVoucherList
// This API is used to query the voucher list by Customer. 
//
// Callable roles: Customer.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerOwnVoucherList(request *DescribeCustomerOwnVoucherListRequest) (response *DescribeCustomerOwnVoucherListResponse, err error) {
    return c.DescribeCustomerOwnVoucherListWithContext(context.Background(), request)
}

// DescribeCustomerOwnVoucherList
// This API is used to query the voucher list by Customer. 
//
// Callable roles: Customer.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerOwnVoucherListWithContext(ctx context.Context, request *DescribeCustomerOwnVoucherListRequest) (response *DescribeCustomerOwnVoucherListResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerOwnVoucherListRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerOwnVoucherList")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerOwnVoucherList require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerOwnVoucherListResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerOwnVoucherUsageDetailsRequest() (request *DescribeCustomerOwnVoucherUsageDetailsRequest) {
    request = &DescribeCustomerOwnVoucherUsageDetailsRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerOwnVoucherUsageDetails")
    
    
    return
}

func NewDescribeCustomerOwnVoucherUsageDetailsResponse() (response *DescribeCustomerOwnVoucherUsageDetailsResponse) {
    response = &DescribeCustomerOwnVoucherUsageDetailsResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerOwnVoucherUsageDetails
// Description: The current API is used to query usage details of customer's own voucher by the customer self.
//
// Call role: End customer.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerOwnVoucherUsageDetails(request *DescribeCustomerOwnVoucherUsageDetailsRequest) (response *DescribeCustomerOwnVoucherUsageDetailsResponse, err error) {
    return c.DescribeCustomerOwnVoucherUsageDetailsWithContext(context.Background(), request)
}

// DescribeCustomerOwnVoucherUsageDetails
// Description: The current API is used to query usage details of customer's own voucher by the customer self.
//
// Call role: End customer.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerOwnVoucherUsageDetailsWithContext(ctx context.Context, request *DescribeCustomerOwnVoucherUsageDetailsRequest) (response *DescribeCustomerOwnVoucherUsageDetailsResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerOwnVoucherUsageDetailsRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerOwnVoucherUsageDetails")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerOwnVoucherUsageDetails require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerOwnVoucherUsageDetailsResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerUinRequest() (request *DescribeCustomerUinRequest) {
    request = &DescribeCustomerUinRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerUin")
    
    
    return
}

func NewDescribeCustomerUinResponse() (response *DescribeCustomerUinResponse) {
    response = &DescribeCustomerUinResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerUin
// This API is used to query the list of customer UINs.
//
// error code that may be returned:
//  INVALIDPARAMETER_PAGE = "InvalidParameter.Page"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerUin(request *DescribeCustomerUinRequest) (response *DescribeCustomerUinResponse, err error) {
    return c.DescribeCustomerUinWithContext(context.Background(), request)
}

// DescribeCustomerUin
// This API is used to query the list of customer UINs.
//
// error code that may be returned:
//  INVALIDPARAMETER_PAGE = "InvalidParameter.Page"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) DescribeCustomerUinWithContext(ctx context.Context, request *DescribeCustomerUinRequest) (response *DescribeCustomerUinResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerUinRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerUin")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerUin require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerUinResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerVoucherListRequest() (request *DescribeCustomerVoucherListRequest) {
    request = &DescribeCustomerVoucherListRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerVoucherList")
    
    
    return
}

func NewDescribeCustomerVoucherListResponse() (response *DescribeCustomerVoucherListResponse) {
    response = &DescribeCustomerVoucherListResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerVoucherList
// This API is used to query the customer voucher list by Reseller, Second-level Reseller or Distributor.
//
// Callable roles: Reseller, Second-level Reseller or Distributor.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerVoucherList(request *DescribeCustomerVoucherListRequest) (response *DescribeCustomerVoucherListResponse, err error) {
    return c.DescribeCustomerVoucherListWithContext(context.Background(), request)
}

// DescribeCustomerVoucherList
// This API is used to query the customer voucher list by Reseller, Second-level Reseller or Distributor.
//
// Callable roles: Reseller, Second-level Reseller or Distributor.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerVoucherListWithContext(ctx context.Context, request *DescribeCustomerVoucherListRequest) (response *DescribeCustomerVoucherListResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerVoucherListRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerVoucherList")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerVoucherList require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerVoucherListResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeCustomerVoucherUsageDetailsRequest() (request *DescribeCustomerVoucherUsageDetailsRequest) {
    request = &DescribeCustomerVoucherUsageDetailsRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeCustomerVoucherUsageDetails")
    
    
    return
}

func NewDescribeCustomerVoucherUsageDetailsResponse() (response *DescribeCustomerVoucherUsageDetailsResponse) {
    response = &DescribeCustomerVoucherUsageDetailsResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeCustomerVoucherUsageDetails
// Description: The current API is used to query the usage details of reseller's customer vouchers by Reseller, Second-level Reseller or Distributor.
//
// Reseller, Second-level Reseller or Distributor can call this API.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerVoucherUsageDetails(request *DescribeCustomerVoucherUsageDetailsRequest) (response *DescribeCustomerVoucherUsageDetailsResponse, err error) {
    return c.DescribeCustomerVoucherUsageDetailsWithContext(context.Background(), request)
}

// DescribeCustomerVoucherUsageDetails
// Description: The current API is used to query the usage details of reseller's customer vouchers by Reseller, Second-level Reseller or Distributor.
//
// Reseller, Second-level Reseller or Distributor can call this API.
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) DescribeCustomerVoucherUsageDetailsWithContext(ctx context.Context, request *DescribeCustomerVoucherUsageDetailsRequest) (response *DescribeCustomerVoucherUsageDetailsResponse, err error) {
    if request == nil {
        request = NewDescribeCustomerVoucherUsageDetailsRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeCustomerVoucherUsageDetails")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeCustomerVoucherUsageDetails require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeCustomerVoucherUsageDetailsResponse()
    err = c.Send(request, response)
    return
}

func NewDescribeRebateDownloadUrlRequest() (request *DescribeRebateDownloadUrlRequest) {
    request = &DescribeRebateDownloadUrlRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "DescribeRebateDownloadUrl")
    
    
    return
}

func NewDescribeRebateDownloadUrlResponse() (response *DescribeRebateDownloadUrlResponse) {
    response = &DescribeRebateDownloadUrlResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// DescribeRebateDownloadUrl
// This API is used to download the commission bill file by resellers/agents. The file URL is returned.
//
// Resellers/Agents can call this API.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) DescribeRebateDownloadUrl(request *DescribeRebateDownloadUrlRequest) (response *DescribeRebateDownloadUrlResponse, err error) {
    return c.DescribeRebateDownloadUrlWithContext(context.Background(), request)
}

// DescribeRebateDownloadUrl
// This API is used to download the commission bill file by resellers/agents. The file URL is returned.
//
// Resellers/Agents can call this API.
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) DescribeRebateDownloadUrlWithContext(ctx context.Context, request *DescribeRebateDownloadUrlRequest) (response *DescribeRebateDownloadUrlResponse, err error) {
    if request == nil {
        request = NewDescribeRebateDownloadUrlRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "DescribeRebateDownloadUrl")
    
    if c.GetCredential() == nil {
        return nil, errors.New("DescribeRebateDownloadUrl require credential")
    }

    request.SetContext(ctx)
    
    response = NewDescribeRebateDownloadUrlResponse()
    err = c.Send(request, response)
    return
}

func NewForceQNRequest() (request *ForceQNRequest) {
    request = &ForceQNRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "ForceQN")
    
    
    return
}

func NewForceQNResponse() (response *ForceQNResponse) {
    response = &ForceQNResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// ForceQN
// Forced Service Suspension settings and cancellation can be used only after the reseller is whitelisted.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) ForceQN(request *ForceQNRequest) (response *ForceQNResponse, err error) {
    return c.ForceQNWithContext(context.Background(), request)
}

// ForceQN
// Forced Service Suspension settings and cancellation can be used only after the reseller is whitelisted.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) ForceQNWithContext(ctx context.Context, request *ForceQNRequest) (response *ForceQNResponse, err error) {
    if request == nil {
        request = NewForceQNRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "ForceQN")
    
    if c.GetCredential() == nil {
        return nil, errors.New("ForceQN require credential")
    }

    request.SetContext(ctx)
    
    response = NewForceQNResponse()
    err = c.Send(request, response)
    return
}

func NewGetCountryCodesRequest() (request *GetCountryCodesRequest) {
    request = &GetCountryCodesRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "GetCountryCodes")
    
    
    return
}

func NewGetCountryCodesResponse() (response *GetCountryCodesResponse) {
    response = &GetCountryCodesResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// GetCountryCodes
// This API is used to obtain country/region codes.
//
// error code that may be returned:
//  INTERNALERROR = "InternalError"
func (c *Client) GetCountryCodes(request *GetCountryCodesRequest) (response *GetCountryCodesResponse, err error) {
    return c.GetCountryCodesWithContext(context.Background(), request)
}

// GetCountryCodes
// This API is used to obtain country/region codes.
//
// error code that may be returned:
//  INTERNALERROR = "InternalError"
func (c *Client) GetCountryCodesWithContext(ctx context.Context, request *GetCountryCodesRequest) (response *GetCountryCodesResponse, err error) {
    if request == nil {
        request = NewGetCountryCodesRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "GetCountryCodes")
    
    if c.GetCredential() == nil {
        return nil, errors.New("GetCountryCodes require credential")
    }

    request.SetContext(ctx)
    
    response = NewGetCountryCodesResponse()
    err = c.Send(request, response)
    return
}

func NewGetTradeConfigListRequest() (request *GetTradeConfigListRequest) {
    request = &GetTradeConfigListRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "GetTradeConfigList")
    
    
    return
}

func NewGetTradeConfigListResponse() (response *GetTradeConfigListResponse) {
    response = &GetTradeConfigListResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// GetTradeConfigList
// This API is used to query industry information, including layer-1 industry and layer-2 industry.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller,End-customer
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) GetTradeConfigList(request *GetTradeConfigListRequest) (response *GetTradeConfigListResponse, err error) {
    return c.GetTradeConfigListWithContext(context.Background(), request)
}

// GetTradeConfigList
// This API is used to query industry information, including layer-1 industry and layer-2 industry.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller,End-customer
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) GetTradeConfigListWithContext(ctx context.Context, request *GetTradeConfigListRequest) (response *GetTradeConfigListResponse, err error) {
    if request == nil {
        request = NewGetTradeConfigListRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "GetTradeConfigList")
    
    if c.GetCredential() == nil {
        return nil, errors.New("GetTradeConfigList require credential")
    }

    request.SetContext(ctx)
    
    response = NewGetTradeConfigListResponse()
    err = c.Send(request, response)
    return
}

func NewModifyClientRemarkRequest() (request *ModifyClientRemarkRequest) {
    request = &ModifyClientRemarkRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "ModifyClientRemark")
    
    
    return
}

func NewModifyClientRemarkResponse() (response *ModifyClientRemarkResponse) {
    response = &ModifyClientRemarkResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// ModifyClientRemark
// This API is used to modify customer remarks.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER = "InvalidParameter"
//  INVALIDPARAMETERVALUE_INVALIDUIN = "InvalidParameterValue.InvalidUin"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) ModifyClientRemark(request *ModifyClientRemarkRequest) (response *ModifyClientRemarkResponse, err error) {
    return c.ModifyClientRemarkWithContext(context.Background(), request)
}

// ModifyClientRemark
// This API is used to modify customer remarks.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER = "InvalidParameter"
//  INVALIDPARAMETERVALUE_INVALIDUIN = "InvalidParameterValue.InvalidUin"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) ModifyClientRemarkWithContext(ctx context.Context, request *ModifyClientRemarkRequest) (response *ModifyClientRemarkResponse, err error) {
    if request == nil {
        request = NewModifyClientRemarkRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "ModifyClientRemark")
    
    if c.GetCredential() == nil {
        return nil, errors.New("ModifyClientRemark require credential")
    }

    request.SetContext(ctx)
    
    response = NewModifyClientRemarkResponse()
    err = c.Send(request, response)
    return
}

func NewQueryAccountVerificationStatusRequest() (request *QueryAccountVerificationStatusRequest) {
    request = &QueryAccountVerificationStatusRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryAccountVerificationStatus")
    
    
    return
}

func NewQueryAccountVerificationStatusResponse() (response *QueryAccountVerificationStatusResponse) {
    response = &QueryAccountVerificationStatusResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryAccountVerificationStatus
// This API is used to query the account verification status.
//
// Callable roles: Distributor, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION_UININVALID = "FailedOperation.UinInvalid"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER = "InvalidParameter"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  MISSINGPARAMETER = "MissingParameter"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_NOTCUSTOMERUIN = "UnauthorizedOperation.NotCustomerUin"
//  UNKNOWNPARAMETER = "UnknownParameter"
func (c *Client) QueryAccountVerificationStatus(request *QueryAccountVerificationStatusRequest) (response *QueryAccountVerificationStatusResponse, err error) {
    return c.QueryAccountVerificationStatusWithContext(context.Background(), request)
}

// QueryAccountVerificationStatus
// This API is used to query the account verification status.
//
// Callable roles: Distributor, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION_UININVALID = "FailedOperation.UinInvalid"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETER = "InvalidParameter"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  MISSINGPARAMETER = "MissingParameter"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_NOTCUSTOMERUIN = "UnauthorizedOperation.NotCustomerUin"
//  UNKNOWNPARAMETER = "UnknownParameter"
func (c *Client) QueryAccountVerificationStatusWithContext(ctx context.Context, request *QueryAccountVerificationStatusRequest) (response *QueryAccountVerificationStatusResponse, err error) {
    if request == nil {
        request = NewQueryAccountVerificationStatusRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryAccountVerificationStatus")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryAccountVerificationStatus require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryAccountVerificationStatusResponse()
    err = c.Send(request, response)
    return
}

func NewQueryCreditAllocationHistoryRequest() (request *QueryCreditAllocationHistoryRequest) {
    request = &QueryCreditAllocationHistoryRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryCreditAllocationHistory")
    
    
    return
}

func NewQueryCreditAllocationHistoryResponse() (response *QueryCreditAllocationHistoryResponse) {
    response = &QueryCreditAllocationHistoryResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryCreditAllocationHistory
// This API is used to query all the credit allocation records of a single customer.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) QueryCreditAllocationHistory(request *QueryCreditAllocationHistoryRequest) (response *QueryCreditAllocationHistoryResponse, err error) {
    return c.QueryCreditAllocationHistoryWithContext(context.Background(), request)
}

// QueryCreditAllocationHistory
// This API is used to query all the credit allocation records of a single customer.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
func (c *Client) QueryCreditAllocationHistoryWithContext(ctx context.Context, request *QueryCreditAllocationHistoryRequest) (response *QueryCreditAllocationHistoryResponse, err error) {
    if request == nil {
        request = NewQueryCreditAllocationHistoryRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryCreditAllocationHistory")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryCreditAllocationHistory require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryCreditAllocationHistoryResponse()
    err = c.Send(request, response)
    return
}

func NewQueryCreditByUinListRequest() (request *QueryCreditByUinListRequest) {
    request = &QueryCreditByUinListRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryCreditByUinList")
    
    
    return
}

func NewQueryCreditByUinListResponse() (response *QueryCreditByUinListResponse) {
    response = &QueryCreditByUinListResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryCreditByUinList
// This API is used to query the credit of users in the list.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION_UINNOTAGENT = "FailedOperation.UinNotAgent"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  INVALIDPARAMETERVALUE_UINLIST = "InvalidParameterValue.UinList"
//  OPERATIONDENIED = "OperationDenied"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
//  UNAUTHORIZEDOPERATION_NOTCUSTOMERUIN = "UnauthorizedOperation.NotCustomerUin"
func (c *Client) QueryCreditByUinList(request *QueryCreditByUinListRequest) (response *QueryCreditByUinListResponse, err error) {
    return c.QueryCreditByUinListWithContext(context.Background(), request)
}

// QueryCreditByUinList
// This API is used to query the credit of users in the list.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION_UINNOTAGENT = "FailedOperation.UinNotAgent"
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  INVALIDPARAMETERVALUE_UINLIST = "InvalidParameterValue.UinList"
//  OPERATIONDENIED = "OperationDenied"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
//  UNAUTHORIZEDOPERATION_NOTCUSTOMERUIN = "UnauthorizedOperation.NotCustomerUin"
func (c *Client) QueryCreditByUinListWithContext(ctx context.Context, request *QueryCreditByUinListRequest) (response *QueryCreditByUinListResponse, err error) {
    if request == nil {
        request = NewQueryCreditByUinListRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryCreditByUinList")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryCreditByUinList require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryCreditByUinListResponse()
    err = c.Send(request, response)
    return
}

func NewQueryCustomerBillingQuotaRequest() (request *QueryCustomerBillingQuotaRequest) {
    request = &QueryCustomerBillingQuotaRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryCustomerBillingQuota")
    
    
    return
}

func NewQueryCustomerBillingQuotaResponse() (response *QueryCustomerBillingQuotaResponse) {
    response = &QueryCustomerBillingQuotaResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryCustomerBillingQuota
// Description: This API is used for a sub-customer to real-time query its own total credit and remaining credit in USD.
//
// 
//
// Callable roles: Sub-customer
//
// error code that may be returned:
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryCustomerBillingQuota(request *QueryCustomerBillingQuotaRequest) (response *QueryCustomerBillingQuotaResponse, err error) {
    return c.QueryCustomerBillingQuotaWithContext(context.Background(), request)
}

// QueryCustomerBillingQuota
// Description: This API is used for a sub-customer to real-time query its own total credit and remaining credit in USD.
//
// 
//
// Callable roles: Sub-customer
//
// error code that may be returned:
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryCustomerBillingQuotaWithContext(ctx context.Context, request *QueryCustomerBillingQuotaRequest) (response *QueryCustomerBillingQuotaResponse, err error) {
    if request == nil {
        request = NewQueryCustomerBillingQuotaRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryCustomerBillingQuota")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryCustomerBillingQuota require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryCustomerBillingQuotaResponse()
    err = c.Send(request, response)
    return
}

func NewQueryCustomersCreditRequest() (request *QueryCustomersCreditRequest) {
    request = &QueryCustomersCreditRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryCustomersCredit")
    
    
    return
}

func NewQueryCustomersCreditResponse() (response *QueryCustomersCreditResponse) {
    response = &QueryCustomersCreditResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryCustomersCredit
// This API is used for a partner to the credits and basic information of cutomers.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  INVALIDPARAMETERVALUE_INVALIDUIN = "InvalidParameterValue.InvalidUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryCustomersCredit(request *QueryCustomersCreditRequest) (response *QueryCustomersCreditResponse, err error) {
    return c.QueryCustomersCreditWithContext(context.Background(), request)
}

// QueryCustomersCredit
// This API is used for a partner to the credits and basic information of cutomers.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  INVALIDPARAMETERVALUE_INVALIDUIN = "InvalidParameterValue.InvalidUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryCustomersCreditWithContext(ctx context.Context, request *QueryCustomersCreditRequest) (response *QueryCustomersCreditResponse, err error) {
    if request == nil {
        request = NewQueryCustomersCreditRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryCustomersCredit")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryCustomersCredit require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryCustomersCreditResponse()
    err = c.Send(request, response)
    return
}

func NewQueryDirectCustomersCreditRequest() (request *QueryDirectCustomersCreditRequest) {
    request = &QueryDirectCustomersCreditRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryDirectCustomersCredit")
    
    
    return
}

func NewQueryDirectCustomersCreditResponse() (response *QueryDirectCustomersCreditResponse) {
    response = &QueryDirectCustomersCreditResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryDirectCustomersCredit
// This API is used to query the credits of direct customers.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryDirectCustomersCredit(request *QueryDirectCustomersCreditRequest) (response *QueryDirectCustomersCreditResponse, err error) {
    return c.QueryDirectCustomersCreditWithContext(context.Background(), request)
}

// QueryDirectCustomersCredit
// This API is used to query the credits of direct customers.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  INTERNALERROR = "InternalError"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryDirectCustomersCreditWithContext(ctx context.Context, request *QueryDirectCustomersCreditRequest) (response *QueryDirectCustomersCreditResponse, err error) {
    if request == nil {
        request = NewQueryDirectCustomersCreditRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryDirectCustomersCredit")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryDirectCustomersCredit require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryDirectCustomersCreditResponse()
    err = c.Send(request, response)
    return
}

func NewQueryInvitationInfoRequest() (request *QueryInvitationInfoRequest) {
    request = &QueryInvitationInfoRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryInvitationInfo")
    
    
    return
}

func NewQueryInvitationInfoResponse() (response *QueryInvitationInfoResponse) {
    response = &QueryInvitationInfoResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryInvitationInfo
// Query usage information of invitation link. Invitation link is valid for 30 days.And once created, the data will only be retained for 60 days, and the system will automatically delete the invitation link after 60 days.
//
// Invokable role types: Distributor, Second-level reseller, Reseller.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) QueryInvitationInfo(request *QueryInvitationInfoRequest) (response *QueryInvitationInfoResponse, err error) {
    return c.QueryInvitationInfoWithContext(context.Background(), request)
}

// QueryInvitationInfo
// Query usage information of invitation link. Invitation link is valid for 30 days.And once created, the data will only be retained for 60 days, and the system will automatically delete the invitation link after 60 days.
//
// Invokable role types: Distributor, Second-level reseller, Reseller.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) QueryInvitationInfoWithContext(ctx context.Context, request *QueryInvitationInfoRequest) (response *QueryInvitationInfoResponse, err error) {
    if request == nil {
        request = NewQueryInvitationInfoRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryInvitationInfo")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryInvitationInfo require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryInvitationInfoResponse()
    err = c.Send(request, response)
    return
}

func NewQueryPartnerCreditRequest() (request *QueryPartnerCreditRequest) {
    request = &QueryPartnerCreditRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryPartnerCredit")
    
    
    return
}

func NewQueryPartnerCreditResponse() (response *QueryPartnerCreditResponse) {
    response = &QueryPartnerCreditResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryPartnerCredit
// This API is used for a partner to query its own total credit, available credit, and used credit in USD.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryPartnerCredit(request *QueryPartnerCreditRequest) (response *QueryPartnerCreditResponse, err error) {
    return c.QueryPartnerCreditWithContext(context.Background(), request)
}

// QueryPartnerCredit
// This API is used for a partner to query its own total credit, available credit, and used credit in USD.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  FAILEDOPERATION = "FailedOperation"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryPartnerCreditWithContext(ctx context.Context, request *QueryPartnerCreditRequest) (response *QueryPartnerCreditResponse, err error) {
    if request == nil {
        request = NewQueryPartnerCreditRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryPartnerCredit")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryPartnerCredit require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryPartnerCreditResponse()
    err = c.Send(request, response)
    return
}

func NewQueryPendingClientsV2Request() (request *QueryPendingClientsV2Request) {
    request = &QueryPendingClientsV2Request{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryPendingClientsV2")
    
    
    return
}

func NewQueryPendingClientsV2Response() (response *QueryPendingClientsV2Response) {
    response = &QueryPendingClientsV2Response{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryPendingClientsV2
// Description: This API is used by resellers to query the list of sub-customers pending review. Note: This API is used to apply for the allowlist. If needed, please contact your business representative.
//
// 
//
// Callable roles: Reseller, Distributer, Second-level reseller
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) QueryPendingClientsV2(request *QueryPendingClientsV2Request) (response *QueryPendingClientsV2Response, err error) {
    return c.QueryPendingClientsV2WithContext(context.Background(), request)
}

// QueryPendingClientsV2
// Description: This API is used by resellers to query the list of sub-customers pending review. Note: This API is used to apply for the allowlist. If needed, please contact your business representative.
//
// 
//
// Callable roles: Reseller, Distributer, Second-level reseller
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
func (c *Client) QueryPendingClientsV2WithContext(ctx context.Context, request *QueryPendingClientsV2Request) (response *QueryPendingClientsV2Response, err error) {
    if request == nil {
        request = NewQueryPendingClientsV2Request()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryPendingClientsV2")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryPendingClientsV2 require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryPendingClientsV2Response()
    err = c.Send(request, response)
    return
}

func NewQueryPendingSubAgentsV2Request() (request *QueryPendingSubAgentsV2Request) {
    request = &QueryPendingSubAgentsV2Request{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryPendingSubAgentsV2")
    
    
    return
}

func NewQueryPendingSubAgentsV2Response() (response *QueryPendingSubAgentsV2Response) {
    response = &QueryPendingSubAgentsV2Response{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryPendingSubAgentsV2
// This API is used to query information of second-level resellers in application.
//
// Invocation Role: Distributor.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryPendingSubAgentsV2(request *QueryPendingSubAgentsV2Request) (response *QueryPendingSubAgentsV2Response, err error) {
    return c.QueryPendingSubAgentsV2WithContext(context.Background(), request)
}

// QueryPendingSubAgentsV2
// This API is used to query information of second-level resellers in application.
//
// Invocation Role: Distributor.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryPendingSubAgentsV2WithContext(ctx context.Context, request *QueryPendingSubAgentsV2Request) (response *QueryPendingSubAgentsV2Response, err error) {
    if request == nil {
        request = NewQueryPendingSubAgentsV2Request()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryPendingSubAgentsV2")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryPendingSubAgentsV2 require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryPendingSubAgentsV2Response()
    err = c.Send(request, response)
    return
}

func NewQueryPolicyProductListByCodeRequest() (request *QueryPolicyProductListByCodeRequest) {
    request = &QueryPolicyProductListByCodeRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryPolicyProductListByCode")
    
    
    return
}

func NewQueryPolicyProductListByCodeResponse() (response *QueryPolicyProductListByCodeResponse) {
    response = &QueryPolicyProductListByCodeResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryPolicyProductListByCode
// This API is used to query the product list information within the specified policy range. To call this API, contact your business manager to apply for adding it to the allowlist.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryPolicyProductListByCode(request *QueryPolicyProductListByCodeRequest) (response *QueryPolicyProductListByCodeResponse, err error) {
    return c.QueryPolicyProductListByCodeWithContext(context.Background(), request)
}

// QueryPolicyProductListByCode
// This API is used to query the product list information within the specified policy range. To call this API, contact your business manager to apply for adding it to the allowlist.
//
// Callable roles: Distributor, Second-level reseller, Reseller
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryPolicyProductListByCodeWithContext(ctx context.Context, request *QueryPolicyProductListByCodeRequest) (response *QueryPolicyProductListByCodeResponse, err error) {
    if request == nil {
        request = NewQueryPolicyProductListByCodeRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryPolicyProductListByCode")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryPolicyProductListByCode require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryPolicyProductListByCodeResponse()
    err = c.Send(request, response)
    return
}

func NewQuerySubAgentsDetailV2Request() (request *QuerySubAgentsDetailV2Request) {
    request = &QuerySubAgentsDetailV2Request{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QuerySubAgentsDetailV2")
    
    
    return
}

func NewQuerySubAgentsDetailV2Response() (response *QuerySubAgentsDetailV2Response) {
    response = &QuerySubAgentsDetailV2Response{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QuerySubAgentsDetailV2
// This API is used to query information of second-level resellers.
//
// Invocation Role:Distributor.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QuerySubAgentsDetailV2(request *QuerySubAgentsDetailV2Request) (response *QuerySubAgentsDetailV2Response, err error) {
    return c.QuerySubAgentsDetailV2WithContext(context.Background(), request)
}

// QuerySubAgentsDetailV2
// This API is used to query information of second-level resellers.
//
// Invocation Role:Distributor.
//
// error code that may be returned:
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QuerySubAgentsDetailV2WithContext(ctx context.Context, request *QuerySubAgentsDetailV2Request) (response *QuerySubAgentsDetailV2Response, err error) {
    if request == nil {
        request = NewQuerySubAgentsDetailV2Request()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QuerySubAgentsDetailV2")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QuerySubAgentsDetailV2 require credential")
    }

    request.SetContext(ctx)
    
    response = NewQuerySubAgentsDetailV2Response()
    err = c.Send(request, response)
    return
}

func NewQueryT1IndirectCustomersDetailRequest() (request *QueryT1IndirectCustomersDetailRequest) {
    request = &QueryT1IndirectCustomersDetailRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryT1IndirectCustomersDetail")
    
    
    return
}

func NewQueryT1IndirectCustomersDetailResponse() (response *QueryT1IndirectCustomersDetailResponse) {
    response = &QueryT1IndirectCustomersDetailResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryT1IndirectCustomersDetail
// This API is used to query the indirect sub-customers of a distributor.
//
// Invokable role type: Distributor
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryT1IndirectCustomersDetail(request *QueryT1IndirectCustomersDetailRequest) (response *QueryT1IndirectCustomersDetailResponse, err error) {
    return c.QueryT1IndirectCustomersDetailWithContext(context.Background(), request)
}

// QueryT1IndirectCustomersDetail
// This API is used to query the indirect sub-customers of a distributor.
//
// Invokable role type: Distributor
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryT1IndirectCustomersDetailWithContext(ctx context.Context, request *QueryT1IndirectCustomersDetailRequest) (response *QueryT1IndirectCustomersDetailResponse, err error) {
    if request == nil {
        request = NewQueryT1IndirectCustomersDetailRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryT1IndirectCustomersDetail")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryT1IndirectCustomersDetail require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryT1IndirectCustomersDetailResponse()
    err = c.Send(request, response)
    return
}

func NewQueryVoucherAmountByUinRequest() (request *QueryVoucherAmountByUinRequest) {
    request = &QueryVoucherAmountByUinRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryVoucherAmountByUin")
    
    
    return
}

func NewQueryVoucherAmountByUinResponse() (response *QueryVoucherAmountByUinResponse) {
    response = &QueryVoucherAmountByUinResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryVoucherAmountByUin
// This API is used by primary/secondary resellers to query the voucher quota based on the customer UIN.
//
// Callable roles: Reseller, Distributor, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryVoucherAmountByUin(request *QueryVoucherAmountByUinRequest) (response *QueryVoucherAmountByUinResponse, err error) {
    return c.QueryVoucherAmountByUinWithContext(context.Background(), request)
}

// QueryVoucherAmountByUin
// This API is used by primary/secondary resellers to query the voucher quota based on the customer UIN.
//
// Callable roles: Reseller, Distributor, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryVoucherAmountByUinWithContext(ctx context.Context, request *QueryVoucherAmountByUinRequest) (response *QueryVoucherAmountByUinResponse, err error) {
    if request == nil {
        request = NewQueryVoucherAmountByUinRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryVoucherAmountByUin")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryVoucherAmountByUin require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryVoucherAmountByUinResponse()
    err = c.Send(request, response)
    return
}

func NewQueryVoucherListByUinRequest() (request *QueryVoucherListByUinRequest) {
    request = &QueryVoucherListByUinRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryVoucherListByUin")
    
    
    return
}

func NewQueryVoucherListByUinResponse() (response *QueryVoucherListByUinResponse) {
    response = &QueryVoucherListByUinResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryVoucherListByUin
// This API is used by primary/secondary resellers to query the voucher list based on the customer UIN.
//
// Callable roles: Reseller, Distributor, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryVoucherListByUin(request *QueryVoucherListByUinRequest) (response *QueryVoucherListByUinResponse, err error) {
    return c.QueryVoucherListByUinWithContext(context.Background(), request)
}

// QueryVoucherListByUin
// This API is used by primary/secondary resellers to query the voucher list based on the customer UIN.
//
// Callable roles: Reseller, Distributor, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryVoucherListByUinWithContext(ctx context.Context, request *QueryVoucherListByUinRequest) (response *QueryVoucherListByUinResponse, err error) {
    if request == nil {
        request = NewQueryVoucherListByUinRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryVoucherListByUin")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryVoucherListByUin require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryVoucherListByUinResponse()
    err = c.Send(request, response)
    return
}

func NewQueryVoucherPoolRequest() (request *QueryVoucherPoolRequest) {
    request = &QueryVoucherPoolRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "QueryVoucherPool")
    
    
    return
}

func NewQueryVoucherPoolResponse() (response *QueryVoucherPoolResponse) {
    response = &QueryVoucherPoolResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// QueryVoucherPool
// This API is used by primary/secondary resellers to query the voucher quota pool.
//
// Callable roles: Distributor, First-level reseller, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryVoucherPool(request *QueryVoucherPoolRequest) (response *QueryVoucherPoolResponse, err error) {
    return c.QueryVoucherPoolWithContext(context.Background(), request)
}

// QueryVoucherPool
// This API is used by primary/secondary resellers to query the voucher quota pool.
//
// Callable roles: Distributor, First-level reseller, Second-level reseller
//
// error code that may be returned:
//  FAILEDOPERATION_INVALIDSUBAGENTUIN = "FailedOperation.InvalidSubAgentUin"
//  OPERATIONDENIED_SERVICEBUSY = "OperationDenied.ServiceBusy"
//  UNAUTHORIZEDOPERATION_UINNOAUTH = "UnauthorizedOperation.UinNoAuth"
func (c *Client) QueryVoucherPoolWithContext(ctx context.Context, request *QueryVoucherPoolRequest) (response *QueryVoucherPoolResponse, err error) {
    if request == nil {
        request = NewQueryVoucherPoolRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "QueryVoucherPool")
    
    if c.GetCredential() == nil {
        return nil, errors.New("QueryVoucherPool require credential")
    }

    request.SetContext(ctx)
    
    response = NewQueryVoucherPoolResponse()
    err = c.Send(request, response)
    return
}

func NewSendVerifyCodeRequest() (request *SendVerifyCodeRequest) {
    request = &SendVerifyCodeRequest{
        BaseRequest: &tchttp.BaseRequest{},
    }
    
    request.Init().WithApiInfo("intlpartnersmgt", APIVersion, "SendVerifyCode")
    
    
    return
}

func NewSendVerifyCodeResponse() (response *SendVerifyCodeResponse) {
    response = &SendVerifyCodeResponse{
        BaseResponse: &tchttp.BaseResponse{},
    } 
    return

}

// SendVerifyCode
// This API is used to send a verification code for account registration.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller,End-customer
//
// error code that may be returned:
//  FAILEDOPERATION_PHONEBINDUPPER = "FailedOperation.PhoneBindUpper"
//  FAILEDOPERATION_SENDVERIFYCODELIMIT = "FailedOperation.SendVerifyCodeLimit"
//  FAILEDOPERATION_SENDVERIFYCODELIMIT60 = "FailedOperation.SendVerifyCodeLimit60"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  INVALIDPARAMETERVALUE_UNSUPPORTAREA = "InvalidParameterValue.UnSupportArea"
func (c *Client) SendVerifyCode(request *SendVerifyCodeRequest) (response *SendVerifyCodeResponse, err error) {
    return c.SendVerifyCodeWithContext(context.Background(), request)
}

// SendVerifyCode
// This API is used to send a verification code for account registration.
//
// 
//
// Callable roles: Distributor, Second-level reseller, Reseller,End-customer
//
// error code that may be returned:
//  FAILEDOPERATION_PHONEBINDUPPER = "FailedOperation.PhoneBindUpper"
//  FAILEDOPERATION_SENDVERIFYCODELIMIT = "FailedOperation.SendVerifyCodeLimit"
//  FAILEDOPERATION_SENDVERIFYCODELIMIT60 = "FailedOperation.SendVerifyCodeLimit60"
//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
//  INVALIDPARAMETERVALUE_UNSUPPORTAREA = "InvalidParameterValue.UnSupportArea"
func (c *Client) SendVerifyCodeWithContext(ctx context.Context, request *SendVerifyCodeRequest) (response *SendVerifyCodeResponse, err error) {
    if request == nil {
        request = NewSendVerifyCodeRequest()
    }
    c.InitBaseRequest(&request.BaseRequest, "intlpartnersmgt", APIVersion, "SendVerifyCode")
    
    if c.GetCredential() == nil {
        return nil, errors.New("SendVerifyCode require credential")
    }

    request.SetContext(ctx)
    
    response = NewSendVerifyCodeResponse()
    err = c.Send(request, response)
    return
}
