// This file is auto-generated, don't edit it. Thanks.
package client

import (
	"github.com/alibabacloud-go/tea/dara"
)

type iSendSmsRequest interface {
	dara.Model
	String() string
	GoString() string
	SetOutId(v string) *SendSmsRequest
	GetOutId() *string
	SetOwnerId(v int64) *SendSmsRequest
	GetOwnerId() *int64
	SetPhoneNumbers(v string) *SendSmsRequest
	GetPhoneNumbers() *string
	SetResourceOwnerAccount(v string) *SendSmsRequest
	GetResourceOwnerAccount() *string
	SetResourceOwnerId(v int64) *SendSmsRequest
	GetResourceOwnerId() *int64
	SetSignName(v string) *SendSmsRequest
	GetSignName() *string
	SetSmsUpExtendCode(v string) *SendSmsRequest
	GetSmsUpExtendCode() *string
	SetTemplateCode(v string) *SendSmsRequest
	GetTemplateCode() *string
	SetTemplateParam(v string) *SendSmsRequest
	GetTemplateParam() *string
}

type SendSmsRequest struct {
	// The extension field.
	//
	// > You can ignore this parameter if you do not have special requirements.
	//
	// example:
	//
	// abcdefgh
	OutId   *string `json:"OutId,omitempty" xml:"OutId,omitempty"`
	OwnerId *int64  `json:"OwnerId,omitempty" xml:"OwnerId,omitempty"`
	// The mobile numbers of the recipients. Format:
	//
	// 	- If you send messages to the Chinese mainland, specify mobile numbers that are prefixed with +, +86, 0086, or 86, or 11-digit mobile numbers without prefixes. Example: 1390000\\*\\*\\*\\*.
	//
	// 	- If you send messages to countries or regions outside the Chinese mainland, specify this parameter in the \\<Area code>\\<Mobile number> format. Example: 852000012\\*\\*\\*\\*.
	//
	// You can send messages to multiple mobile numbers, separate the mobile numbers with commas (,). You can specify up to 1,000 mobile numbers in each request. Compared with sending messages to a single mobile number, sending messages to multiple mobile numbers requires longer response time.
	//
	// > We recommend that you send one verification code message to a mobile number in each request.
	//
	// This parameter is required.
	//
	// example:
	//
	// 1390000****
	PhoneNumbers         *string `json:"PhoneNumbers,omitempty" xml:"PhoneNumbers,omitempty"`
	ResourceOwnerAccount *string `json:"ResourceOwnerAccount,omitempty" xml:"ResourceOwnerAccount,omitempty"`
	ResourceOwnerId      *int64  `json:"ResourceOwnerId,omitempty" xml:"ResourceOwnerId,omitempty"`
	// The signature.
	//
	// You can log on to the [Short Message Service (SMS) console](https://dysms.console.aliyun.com/dysms.htm?spm=5176.12818093.categories-n-products.ddysms.3b2816d0xml2NA#/overview), click **Go China*	- or **Go Globe*	- in the left-side navigation pane, and then view the signature on the **Signatures*	- tab.
	//
	// > You must specify a signature that is created in the SMS console and approved by Alibaba Cloud. For more information about SMS signature specifications, see [SMS signature specifications](https://help.aliyun.com/document_detail/108076.html).
	//
	// This parameter is required.
	//
	// example:
	//
	// Aliyun
	SignName *string `json:"SignName,omitempty" xml:"SignName,omitempty"`
	// The extension code of the upstream message. Upstream messages are messages sent to the communication service provider. Upstream messages are used to customize a service, complete an inquiry, or send a request. You are charged for sending upstream messages based on the billing standards of the service provider.
	//
	// > The extension code is automatically generated by the system when the signature is generated. You do not need to specify the extension code. You can ignore this parameter if you do not have special requirements.
	//
	// example:
	//
	// 90999
	SmsUpExtendCode *string `json:"SmsUpExtendCode,omitempty" xml:"SmsUpExtendCode,omitempty"`
	// The code of the message template.
	//
	// You can log on to the [Short Message Service (SMS) console](https://dysms.console.aliyun.com/dysms.htm?spm=5176.12818093.categories-n-products.ddysms.3b2816d0xml2NA#/overview), click **Go China*	- or **Go Globe*	- in the left-side navigation pane, and then view the **template code*	- on the **Templates*	- tab.
	//
	// > You must specify a message template that is created in the SMS console and approved by Alibaba Cloud. If you send messages to countries or regions outside the Chinese mainland, use the corresponding message templates.
	//
	// This parameter is required.
	//
	// example:
	//
	// SMS_15305****
	TemplateCode *string `json:"TemplateCode,omitempty" xml:"TemplateCode,omitempty"`
	// The value of the variable in the message template. You can specify multiple parameter values. Example:{"name":"Sam","number":"1390000\\*\\*\\*\\*"}.
	//
	// >
	//
	// 	- If line breaks are required in JSON-formatted data, they must meet the relevant requirements that are specified in the standard JSON protocol.
	//
	// 	- For more information about template variables, see [SMS template specifications](https://help.aliyun.com/document_detail/108253.html).
	//
	// example:
	//
	// {"code":"1111"}
	TemplateParam *string `json:"TemplateParam,omitempty" xml:"TemplateParam,omitempty"`
}

func (s SendSmsRequest) String() string {
	return dara.Prettify(s)
}

func (s SendSmsRequest) GoString() string {
	return s.String()
}

func (s *SendSmsRequest) GetOutId() *string {
	return s.OutId
}

func (s *SendSmsRequest) GetOwnerId() *int64 {
	return s.OwnerId
}

func (s *SendSmsRequest) GetPhoneNumbers() *string {
	return s.PhoneNumbers
}

func (s *SendSmsRequest) GetResourceOwnerAccount() *string {
	return s.ResourceOwnerAccount
}

func (s *SendSmsRequest) GetResourceOwnerId() *int64 {
	return s.ResourceOwnerId
}

func (s *SendSmsRequest) GetSignName() *string {
	return s.SignName
}

func (s *SendSmsRequest) GetSmsUpExtendCode() *string {
	return s.SmsUpExtendCode
}

func (s *SendSmsRequest) GetTemplateCode() *string {
	return s.TemplateCode
}

func (s *SendSmsRequest) GetTemplateParam() *string {
	return s.TemplateParam
}

func (s *SendSmsRequest) SetOutId(v string) *SendSmsRequest {
	s.OutId = &v
	return s
}

func (s *SendSmsRequest) SetOwnerId(v int64) *SendSmsRequest {
	s.OwnerId = &v
	return s
}

func (s *SendSmsRequest) SetPhoneNumbers(v string) *SendSmsRequest {
	s.PhoneNumbers = &v
	return s
}

func (s *SendSmsRequest) SetResourceOwnerAccount(v string) *SendSmsRequest {
	s.ResourceOwnerAccount = &v
	return s
}

func (s *SendSmsRequest) SetResourceOwnerId(v int64) *SendSmsRequest {
	s.ResourceOwnerId = &v
	return s
}

func (s *SendSmsRequest) SetSignName(v string) *SendSmsRequest {
	s.SignName = &v
	return s
}

func (s *SendSmsRequest) SetSmsUpExtendCode(v string) *SendSmsRequest {
	s.SmsUpExtendCode = &v
	return s
}

func (s *SendSmsRequest) SetTemplateCode(v string) *SendSmsRequest {
	s.TemplateCode = &v
	return s
}

func (s *SendSmsRequest) SetTemplateParam(v string) *SendSmsRequest {
	s.TemplateParam = &v
	return s
}

func (s *SendSmsRequest) Validate() error {
	return dara.Validate(s)
}
