tem

package
v1.0.0-beta.16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2023 License: Apache-2.0 Imports: 14 Imported by: 4

Documentation

Overview

Package tem provides methods and message types of the tem v1alpha1 API.

Index

Constants

View Source
const (
	DomainStatusUnknown   = DomainStatus("unknown")
	DomainStatusChecked   = DomainStatus("checked")
	DomainStatusUnchecked = DomainStatus("unchecked")
	DomainStatusInvalid   = DomainStatus("invalid")
	DomainStatusLocked    = DomainStatus("locked")
	DomainStatusRevoked   = DomainStatus("revoked")
	DomainStatusPending   = DomainStatus("pending")
)
View Source
const (
	EmailRcptTypeUnknownRcptType = EmailRcptType("unknown_rcpt_type")
	EmailRcptTypeTo              = EmailRcptType("to")
	EmailRcptTypeCc              = EmailRcptType("cc")
	EmailRcptTypeBcc             = EmailRcptType("bcc")
)
View Source
const (
	EmailStatusUnknown  = EmailStatus("unknown")
	EmailStatusNew      = EmailStatus("new")
	EmailStatusSending  = EmailStatus("sending")
	EmailStatusSent     = EmailStatus("sent")
	EmailStatusFailed   = EmailStatus("failed")
	EmailStatusCanceled = EmailStatus("canceled")
)
View Source
const (
	SMTPHost             = "smtp.tem.scw.cloud"
	SMTPPortUnsecure     = 25
	SMTPPort             = 587
	SMTPPortAlternative  = 2587
	SMTPSPort            = 465
	SMTPSPortAlternative = 2465
)

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	// contains filtered or unexported fields
}

API: tem. Transactional Email API documentation.

func NewAPI

func NewAPI(client *scw.Client) *API

NewAPI returns a API object from a Scaleway client.

func (*API) CancelEmail

func (s *API) CancelEmail(req *CancelEmailRequest, opts ...scw.RequestOption) (*Email, error)

CancelEmail: cancel an email. You can cancel the sending of an email if it has not been sent yet. You must specify the `region` and the `email_id` of the email you want to cancel.

func (*API) CheckDomain

func (s *API) CheckDomain(req *CheckDomainRequest, opts ...scw.RequestOption) (*Domain, error)

CheckDomain: domain DNS check. Perform an immediate DNS check of a domain using the `region` and `domain_id` parameters.

func (*API) CreateDomain

func (s *API) CreateDomain(req *CreateDomainRequest, opts ...scw.RequestOption) (*Domain, error)

CreateDomain: register a domain in a project. You must specify the `region`, `project_id` and `domain_name` to register a domain in a specific Project.

func (*API) CreateEmail

func (s *API) CreateEmail(req *CreateEmailRequest, opts ...scw.RequestOption) (*CreateEmailResponse, error)

CreateEmail: send an email. You must specify the `region`, the sender and the recipient's information and the `project_id` to send an email from a checked domain. The subject of the email must contain at least 6 characters.

func (*API) GetDomain

func (s *API) GetDomain(req *GetDomainRequest, opts ...scw.RequestOption) (*Domain, error)

GetDomain: get information about a domain. Retrieve information about a specific domain using the `region` and `domain_id` parameters.

func (*API) GetEmail

func (s *API) GetEmail(req *GetEmailRequest, opts ...scw.RequestOption) (*Email, error)

GetEmail: get an email. Retrieve information about a specific email using the `email_id` and `region` parameters.

func (*API) GetStatistics

func (s *API) GetStatistics(req *GetStatisticsRequest, opts ...scw.RequestOption) (*Statistics, error)

GetStatistics: email statuses. Get information on your emails' statuses.

func (*API) ListDomains

func (s *API) ListDomains(req *ListDomainsRequest, opts ...scw.RequestOption) (*ListDomainsResponse, error)

ListDomains: list domains. Retrieve domains in a specific project or in a specific Organization using the `region` parameter.

func (*API) ListEmails

func (s *API) ListEmails(req *ListEmailsRequest, opts ...scw.RequestOption) (*ListEmailsResponse, error)

ListEmails: list emails. Retrieve the list of emails sent from a specific domain or for a specific Project or Organization. You must specify the `region`.

func (*API) Regions

func (s *API) Regions() []scw.Region

Regions list localities the api is available in

func (*API) RevokeDomain

func (s *API) RevokeDomain(req *RevokeDomainRequest, opts ...scw.RequestOption) (*Domain, error)

RevokeDomain: delete a domain. You must specify the domain you want to delete by the `region` and `domain_id`. Deleting a domain is permanent and cannot be undone.

func (*API) WaitForDomain

func (s *API) WaitForDomain(req *WaitForDomainRequest, opts ...scw.RequestOption) (*Domain, error)

WaitForDomain wait for the domain to be in a "terminal state" before returning. This function can be used to wait for a domain to be checked for example.

type CancelEmailRequest

type CancelEmailRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// EmailID: ID of the email to cancel.
	EmailID string `json:"-"`
}

type CheckDomainRequest

type CheckDomainRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// DomainID: ID of the domain to check.
	DomainID string `json:"-"`
}

type CreateDomainRequest

type CreateDomainRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// ProjectID: ID of the project to which the domain belongs.
	ProjectID string `json:"project_id"`
	// DomainName: fully qualified domain dame.
	DomainName string `json:"domain_name"`
	// AcceptTos: accept Scaleway's Terms of Service.
	AcceptTos bool `json:"accept_tos"`
}

type CreateEmailRequest

type CreateEmailRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// From: sender information. Must be from a checked domain declared in the Project.
	From *CreateEmailRequestAddress `json:"from"`
	// To: array of recipient information (limited to 1 recipient).
	To []*CreateEmailRequestAddress `json:"to"`
	// Cc: array of recipient information (unimplemented).
	Cc []*CreateEmailRequestAddress `json:"cc"`
	// Bcc: array of recipient information (unimplemented).
	Bcc []*CreateEmailRequestAddress `json:"bcc"`
	// Subject: subject of the email.
	Subject string `json:"subject"`
	// Text: text content.
	Text string `json:"text"`
	// HTML: HTML content.
	HTML string `json:"html"`
	// ProjectID: ID of the Project in which to create the email.
	ProjectID string `json:"project_id"`
	// Attachments: array of attachments.
	Attachments []*CreateEmailRequestAttachment `json:"attachments"`
	// SendBefore: maximum date to deliver the email.
	SendBefore *time.Time `json:"send_before"`
}

type CreateEmailRequestAddress

type CreateEmailRequestAddress struct {
	// Email: email address.
	Email string `json:"email"`
	// Name: (Optional) Name displayed.
	Name *string `json:"name"`
}

CreateEmailRequestAddress: create email request. address.

type CreateEmailRequestAttachment

type CreateEmailRequestAttachment struct {
	// Name: filename of the attachment.
	Name string `json:"name"`
	// Type: mIME type of the attachment.
	Type string `json:"type"`
	// Content: content of the attachment encoded in base64.
	Content []byte `json:"content"`
}

CreateEmailRequestAttachment: create email request. attachment.

type CreateEmailResponse

type CreateEmailResponse struct {
	// Emails: single page of emails matching the requested criteria.
	Emails []*Email `json:"emails"`
}

CreateEmailResponse: create email response.

type Domain

type Domain struct {
	// ID: ID of the domain.
	ID string `json:"id"`
	// OrganizationID: ID of the domain's Organization.
	OrganizationID string `json:"organization_id"`
	// ProjectID: ID of the domain's Project.
	ProjectID string `json:"project_id"`
	// Name: domain name (example.com).
	Name string `json:"name"`
	// Status: status of the domain.
	// Default value: unknown
	Status DomainStatus `json:"status"`
	// CreatedAt: date and time of domain creation.
	CreatedAt *time.Time `json:"created_at"`
	// NextCheckAt: date and time of the next scheduled check.
	NextCheckAt *time.Time `json:"next_check_at"`
	// LastValidAt: date and time the domain was last valid.
	LastValidAt *time.Time `json:"last_valid_at"`
	// RevokedAt: date and time of the domain's deletion.
	RevokedAt *time.Time `json:"revoked_at"`
	// LastError: error message returned if the last check failed.
	LastError *string `json:"last_error"`
	// SpfConfig: snippet of the SPF record to register in the DNS zone.
	SpfConfig string `json:"spf_config"`
	// DkimConfig: dKIM public key to record in the DNS zone.
	DkimConfig string `json:"dkim_config"`
	// Statistics: domain's statistics.
	Statistics *DomainStatistics `json:"statistics"`

	Region scw.Region `json:"region"`
}

Domain: domain.

type DomainStatistics

type DomainStatistics struct {
	TotalCount uint32 `json:"total_count"`

	SentCount uint32 `json:"sent_count"`

	FailedCount uint32 `json:"failed_count"`

	CanceledCount uint32 `json:"canceled_count"`
}

type DomainStatus

type DomainStatus string

func (DomainStatus) MarshalJSON

func (enum DomainStatus) MarshalJSON() ([]byte, error)

func (DomainStatus) String

func (enum DomainStatus) String() string

func (*DomainStatus) UnmarshalJSON

func (enum *DomainStatus) UnmarshalJSON(data []byte) error

type Email

type Email struct {
	// ID: technical ID of the email.
	ID string `json:"id"`
	// MessageID: message ID of the email.
	MessageID string `json:"message_id"`
	// ProjectID: ID of the Project to which the email belongs.
	ProjectID string `json:"project_id"`
	// MailFrom: email address of the sender.
	MailFrom string `json:"mail_from"`
	// RcptTo: email address of the recipient.
	RcptTo string `json:"rcpt_to"`
	// RcptType: type of recipient.
	// Default value: unknown_rcpt_type
	RcptType EmailRcptType `json:"rcpt_type"`
	// Subject: subject of the email.
	Subject string `json:"subject"`
	// CreatedAt: creation date of the email object.
	CreatedAt *time.Time `json:"created_at"`
	// UpdatedAt: last update of the email object.
	UpdatedAt *time.Time `json:"updated_at"`
	// Status: status of the email.
	// Default value: unknown
	Status EmailStatus `json:"status"`
	// StatusDetails: additional status information.
	StatusDetails *string `json:"status_details"`
	// TryCount: number of attempts to send the email.
	TryCount uint32 `json:"try_count"`
	// LastTries: information about the last three attempts to send the email.
	LastTries []*EmailTry `json:"last_tries"`
}

Email: email.

type EmailRcptType

type EmailRcptType string

func (EmailRcptType) MarshalJSON

func (enum EmailRcptType) MarshalJSON() ([]byte, error)

func (EmailRcptType) String

func (enum EmailRcptType) String() string

func (*EmailRcptType) UnmarshalJSON

func (enum *EmailRcptType) UnmarshalJSON(data []byte) error

type EmailStatus

type EmailStatus string

func (EmailStatus) MarshalJSON

func (enum EmailStatus) MarshalJSON() ([]byte, error)

func (EmailStatus) String

func (enum EmailStatus) String() string

func (*EmailStatus) UnmarshalJSON

func (enum *EmailStatus) UnmarshalJSON(data []byte) error

type EmailTry

type EmailTry struct {
	// Rank: rank number of this attempt to send the email.
	Rank uint32 `json:"rank"`
	// TriedAt: date of the attempt to send the email.
	TriedAt *time.Time `json:"tried_at"`
	// Code: the SMTP status code received after the attempt. 0 if the attempt did not reach an SMTP server.
	Code int32 `json:"code"`
	// Message: the SMTP message received. If the attempt did not reach an SMTP server, the message returned explains what happened.
	Message string `json:"message"`
}

EmailTry: email. try.

type GetDomainRequest

type GetDomainRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// DomainID: ID of the domain.
	DomainID string `json:"-"`
}

type GetEmailRequest

type GetEmailRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// EmailID: ID of the email to retrieve.
	EmailID string `json:"-"`
}

type GetStatisticsRequest

type GetStatisticsRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// ProjectID: number of emails for this Project (optional).
	ProjectID *string `json:"-"`
	// DomainID: number of emails sent from this domain (must be coherent with the `project_id` and the `organization_id`) (optional).
	DomainID *string `json:"-"`
	// Since: number of emails created after this date (optional).
	Since *time.Time `json:"-"`
	// Until: number of emails created before this date (optional).
	Until *time.Time `json:"-"`
	// MailFrom: number of emails sent with this `mail_from` sender's address (optional).
	MailFrom *string `json:"-"`
}

type ListDomainsRequest

type ListDomainsRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// Page: requested page number. Value must be greater or equal to 1.
	Page *int32 `json:"-"`
	// PageSize: page size.
	PageSize *uint32 `json:"-"`

	ProjectID *string `json:"-"`

	Status []DomainStatus `json:"-"`

	OrganizationID *string `json:"-"`

	Name *string `json:"-"`
}

type ListDomainsResponse

type ListDomainsResponse struct {
	// TotalCount: number of domains that match the request (without pagination).
	TotalCount uint32 `json:"total_count"`

	Domains []*Domain `json:"domains"`
}

ListDomainsResponse: list domains response.

func (*ListDomainsResponse) UnsafeAppend

func (r *ListDomainsResponse) UnsafeAppend(res interface{}) (uint32, error)

UnsafeAppend should not be used Internal usage only

func (*ListDomainsResponse) UnsafeGetTotalCount

func (r *ListDomainsResponse) UnsafeGetTotalCount() uint32

UnsafeGetTotalCount should not be used Internal usage only

type ListEmailsRequest

type ListEmailsRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`

	Page *int32 `json:"-"`

	PageSize *uint32 `json:"-"`
	// ProjectID: ID of the Project in which to list the emails (optional).
	ProjectID *string `json:"-"`
	// DomainID: ID of the domain for which to list the emails (optional).
	DomainID *string `json:"-"`
	// MessageID: ID of the message for which to list the emails (optional).
	MessageID *string `json:"-"`
	// Subject: subject of the email.
	Subject *string `json:"-"`
	// Since: list emails created after this date (optional).
	Since *time.Time `json:"-"`
	// Until: list emails created before this date (optional).
	Until *time.Time `json:"-"`
	// MailFrom: list emails sent with this `mail_from` sender's address (optional).
	MailFrom *string `json:"-"`
	// MailTo: list emails sent with this `mail_to` recipient's address (optional).
	MailTo *string `json:"-"`
	// Statuses: list emails having any of this status (optional).
	Statuses []EmailStatus `json:"-"`
}

type ListEmailsResponse

type ListEmailsResponse struct {
	// TotalCount: count of all emails matching the requested criteria.
	TotalCount uint32 `json:"total_count"`
	// Emails: single page of emails matching the requested criteria.
	Emails []*Email `json:"emails"`
}

ListEmailsResponse: list emails response.

func (*ListEmailsResponse) UnsafeAppend

func (r *ListEmailsResponse) UnsafeAppend(res interface{}) (uint32, error)

UnsafeAppend should not be used Internal usage only

func (*ListEmailsResponse) UnsafeGetTotalCount

func (r *ListEmailsResponse) UnsafeGetTotalCount() uint32

UnsafeGetTotalCount should not be used Internal usage only

type RevokeDomainRequest

type RevokeDomainRequest struct {
	// Region: region to target. If none is passed will use default region from the config.
	Region scw.Region `json:"-"`
	// DomainID: ID of the domain to delete.
	DomainID string `json:"-"`
}

type Statistics

type Statistics struct {
	// TotalCount: total number of emails matching the requested criteria.
	TotalCount uint32 `json:"total_count"`
	// NewCount: number of emails still in the `new` transient state. This means emails received from the API but not yet processed.
	NewCount uint32 `json:"new_count"`
	// SendingCount: number of emails still in the `sending` transient state. This means emails received from the API but not yet in their final status.
	SendingCount uint32 `json:"sending_count"`
	// SentCount: number of emails in the final `sent` state. This means emails that have been delivered to the target mail system.
	SentCount uint32 `json:"sent_count"`
	// FailedCount: number of emails in the final `failed` state. This means emails that have been refused by the target mail system with a final error status.
	FailedCount uint32 `json:"failed_count"`
	// CanceledCount: number of emails in the final `canceled` state. This meanns emails that have been canceled upon request.
	CanceledCount uint32 `json:"canceled_count"`
}

Statistics: statistics.

type WaitForDomainRequest

type WaitForDomainRequest struct {
	DomainID      string
	Region        scw.Region
	Timeout       *time.Duration
	RetryInterval *time.Duration
}

WaitForDomainRequest is used by WaitForDomain method

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL