Documentation
¶
Index ¶
- func Bool(b bool) param.Opt[bool]
- func BoolPtr(v bool) *bool
- func DefaultClientOptions() []option.RequestOption
- func File(rdr io.Reader, filename string, contentType string) file
- func Float(f float64) param.Opt[float64]
- func FloatPtr(v float64) *float64
- func Int(i int64) param.Opt[int64]
- func IntPtr(v int64) *int64
- func Opt[T comparable](v T) param.Opt[T]
- func Ptr[T any](v T) *T
- func String(s string) param.Opt[string]
- func StringPtr(v string) *string
- func Time(t time.Time) param.Opt[time.Time]
- func TimePtr(v time.Time) *time.Time
- type Client
- func (r *Client) Delete(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Execute(ctx context.Context, method string, path string, params any, res any, ...) error
- func (r *Client) Get(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Patch(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Post(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Put(ctx context.Context, path string, params any, res any, ...) error
- type ContactGetByPhoneParams
- type ContactGetIDParams
- type ContactListItem
- type ContactListParams
- type ContactListResponse
- type ContactService
- func (r *ContactService) GetByPhone(ctx context.Context, query ContactGetByPhoneParams, ...) (res *ContactListItem, err error)
- func (r *ContactService) GetID(ctx context.Context, query ContactGetIDParams, opts ...option.RequestOption) (res *ContactListItem, err error)
- func (r *ContactService) List(ctx context.Context, query ContactListParams, opts ...option.RequestOption) (res *ContactListResponse, err error)
- type Error
- type MessageGetResponse
- type MessageGetResponseEvent
- type MessageGetResponseMessageBody
- type MessageGetResponseMessageBodyButton
- type MessageSendQuickMessageParams
- type MessageSendToContactParams
- type MessageSendToPhoneParams
- type MessageService
- func (r *MessageService) Get(ctx context.Context, id string, opts ...option.RequestOption) (res *MessageGetResponse, err error)
- func (r *MessageService) SendQuickMessage(ctx context.Context, body MessageSendQuickMessageParams, ...) (err error)
- func (r *MessageService) SendToContact(ctx context.Context, body MessageSendToContactParams, ...) (err error)
- func (r *MessageService) SendToPhone(ctx context.Context, body MessageSendToPhoneParams, ...) (err error)
- type NumberLookupGetParams
- type NumberLookupGetResponse
- type NumberLookupService
- type OrganizationService
- type OrganizationUserService
- type TemplateBodyContent
- type TemplateBodyContentParam
- type TemplateDefinition
- type TemplateDefinitionAuthenticationConfig
- type TemplateDefinitionAuthenticationConfigParam
- type TemplateDefinitionBody
- type TemplateDefinitionBodyParam
- type TemplateDefinitionButton
- type TemplateDefinitionButtonParam
- type TemplateDefinitionButtonProps
- type TemplateDefinitionButtonPropsParam
- type TemplateDefinitionFooter
- type TemplateDefinitionFooterParam
- type TemplateDefinitionHeader
- type TemplateDefinitionHeaderParam
- type TemplateDefinitionParam
- type TemplateListParams
- type TemplateListResponse
- type TemplateNewParams
- type TemplateResponse
- type TemplateService
- func (r *TemplateService) Delete(ctx context.Context, id string, opts ...option.RequestOption) (err error)
- func (r *TemplateService) Get(ctx context.Context, id string, opts ...option.RequestOption) (res *TemplateResponse, err error)
- func (r *TemplateService) List(ctx context.Context, query TemplateListParams, opts ...option.RequestOption) (res *TemplateListResponse, err error)
- func (r *TemplateService) New(ctx context.Context, body TemplateNewParams, opts ...option.RequestOption) (res *TemplateResponse, err error)
- type TemplateVariable
- type TemplateVariableParam
- type TemplateVariableProps
- type TemplateVariablePropsParam
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultClientOptions ¶
func DefaultClientOptions() []option.RequestOption
DefaultClientOptions read from the environment (SENT_DM_API_KEY, SENT_DM_SENDER_ID, SENT_DM_BASE_URL). This should be used to initialize new clients.
func Opt ¶
func Opt[T comparable](v T) param.Opt[T]
Types ¶
type Client ¶
type Client struct {
Options []option.RequestOption
Templates TemplateService
Contacts ContactService
Messages MessageService
NumberLookup NumberLookupService
Organizations OrganizationService
}
Client creates a struct with services and top level methods that help with interacting with the sent-dm API. You should not instantiate this client directly, and instead use the NewClient method instead.
func NewClient ¶
func NewClient(opts ...option.RequestOption) (r Client)
NewClient generates a new client with the default option read from the environment (SENT_DM_API_KEY, SENT_DM_SENDER_ID, SENT_DM_BASE_URL). The option passed in as arguments are applied after these default arguments, and all option will be passed down to the services and requests that this client makes.
func (*Client) Delete ¶
func (r *Client) Delete(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Delete makes a DELETE request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Execute ¶
func (r *Client) Execute(ctx context.Context, method string, path string, params any, res any, opts ...option.RequestOption) error
Execute makes a request with the given context, method, URL, request params, response, and request options. This is useful for hitting undocumented endpoints while retaining the base URL, auth, retries, and other options from the client.
If a byte slice or an io.Reader is supplied to params, it will be used as-is for the request body.
The params is by default serialized into the body using encoding/json. If your type implements a MarshalJSON function, it will be used instead to serialize the request. If a URLQuery method is implemented, the returned url.Values will be used as query strings to the url.
If your params struct uses param.Field, you must provide either [MarshalJSON], [URLQuery], and/or [MarshalForm] functions. It is undefined behavior to use a struct uses param.Field without specifying how it is serialized.
Any "…Params" object defined in this library can be used as the request argument. Note that 'path' arguments will not be forwarded into the url.
The response body will be deserialized into the res variable, depending on its type:
- A pointer to a *http.Response is populated by the raw response.
- A pointer to a byte array will be populated with the contents of the request body.
- A pointer to any other type uses this library's default JSON decoding, which respects UnmarshalJSON if it is defined on the type.
- A nil value will not read the response body.
For even greater flexibility, see option.WithResponseInto and option.WithResponseBodyInto.
func (*Client) Get ¶
func (r *Client) Get(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Get makes a GET request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Patch ¶
func (r *Client) Patch(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Patch makes a PATCH request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
type ContactGetByPhoneParams ¶
type ContactGetByPhoneParams struct {
// The phone number in international format (e.g., +1234567890)
PhoneNumber string `query:"phoneNumber,required" json:"-"`
// contains filtered or unexported fields
}
func (ContactGetByPhoneParams) URLQuery ¶
func (r ContactGetByPhoneParams) URLQuery() (v url.Values, err error)
URLQuery serializes ContactGetByPhoneParams's query parameters as `url.Values`.
type ContactGetIDParams ¶
type ContactGetIDParams struct {
// The unique identifier (GUID) of the resource to retrieve
ID string `query:"id,required" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ContactGetIDParams) URLQuery ¶
func (r ContactGetIDParams) URLQuery() (v url.Values, err error)
URLQuery serializes ContactGetIDParams's query parameters as `url.Values`.
type ContactListItem ¶
type ContactListItem struct {
// The unique identifier of the contact
ID string `json:"id" format:"uuid"`
// Comma-separated list of available messaging channels for this contact (e.g.,
// "sms,whatsapp")
AvailableChannels string `json:"availableChannels"`
// The country calling code (e.g., 1 for US/Canada)
CountryCode string `json:"countryCode"`
// The default messaging channel to use for this contact (e.g., "sms" or
// "whatsapp")
DefaultChannel string `json:"defaultChannel"`
// The phone number formatted in E.164 standard (e.g., +1234567890)
FormatE164 string `json:"formatE164"`
// The phone number formatted for international dialing (e.g., +1 234-567-890)
FormatInternational string `json:"formatInternational"`
// The phone number formatted for national dialing (e.g., (234) 567-890)
FormatNational string `json:"formatNational"`
// The phone number formatted according to RFC 3966 (e.g., tel:+1-234-567-890)
FormatRfc string `json:"formatRfc"`
// The phone number in its original format
PhoneNumber string `json:"phoneNumber"`
// The ISO 3166-1 alpha-2 country code (e.g., US, CA, GB)
RegionCode string `json:"regionCode"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
AvailableChannels respjson.Field
CountryCode respjson.Field
DefaultChannel respjson.Field
FormatE164 respjson.Field
FormatInternational respjson.Field
FormatNational respjson.Field
FormatRfc respjson.Field
PhoneNumber respjson.Field
RegionCode respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Represents a contact in the customer's contact list
func (ContactListItem) RawJSON ¶
func (r ContactListItem) RawJSON() string
Returns the unmodified JSON received from the API
func (*ContactListItem) UnmarshalJSON ¶
func (r *ContactListItem) UnmarshalJSON(data []byte) error
type ContactListParams ¶
type ContactListParams struct {
// The page number (zero-indexed). Default is 0.
Page int64 `query:"page,required" json:"-"`
// The number of items per page. Default is 20.
PageSize int64 `query:"pageSize,required" json:"-"`
// contains filtered or unexported fields
}
func (ContactListParams) URLQuery ¶
func (r ContactListParams) URLQuery() (v url.Values, err error)
URLQuery serializes ContactListParams's query parameters as `url.Values`.
type ContactListResponse ¶
type ContactListResponse struct {
Items []ContactListItem `json:"items"`
Page int64 `json:"page"`
PageSize int64 `json:"pageSize"`
TotalCount int64 `json:"totalCount"`
TotalPages int64 `json:"totalPages"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Items respjson.Field
Page respjson.Field
PageSize respjson.Field
TotalCount respjson.Field
TotalPages respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (ContactListResponse) RawJSON ¶
func (r ContactListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*ContactListResponse) UnmarshalJSON ¶
func (r *ContactListResponse) UnmarshalJSON(data []byte) error
type ContactService ¶
type ContactService struct {
Options []option.RequestOption
}
ContactService contains methods and other services that help with interacting with the sent-dm API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewContactService method instead.
func NewContactService ¶
func NewContactService(opts ...option.RequestOption) (r ContactService)
NewContactService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*ContactService) GetByPhone ¶
func (r *ContactService) GetByPhone(ctx context.Context, query ContactGetByPhoneParams, opts ...option.RequestOption) (res *ContactListItem, err error)
Retrieves a contact by their phone number for the authenticated customer. Phone number should be in international format (e.g., +1234567890). The customer ID is extracted from the authentication token.
func (*ContactService) GetID ¶
func (r *ContactService) GetID(ctx context.Context, query ContactGetIDParams, opts ...option.RequestOption) (res *ContactListItem, err error)
Retrieves a specific contact by their unique identifier for the authenticated customer. The customer ID is extracted from the authentication token. Returns detailed contact information including phone number and creation timestamp.
func (*ContactService) List ¶
func (r *ContactService) List(ctx context.Context, query ContactListParams, opts ...option.RequestOption) (res *ContactListResponse, err error)
Retrieves a paginated list of contacts for the authenticated customer. Supports server-side pagination with configurable page size. The customer ID is extracted from the authentication token.
type MessageGetResponse ¶
type MessageGetResponse struct {
// The unique identifier of the message
ID string `json:"id" format:"uuid"`
// The messaging channel used (e.g., SMS, WhatsApp)
Channel string `json:"channel"`
// The unique identifier of the contact who received the message
ContactID string `json:"contactId" format:"uuid"`
// The final price charged for sending this message
CorrectedPrice float64 `json:"correctedPrice,nullable"`
// The date and time when the message was created
CreatedAt time.Time `json:"createdAt" format:"date-time"`
// The unique identifier of the customer who sent the message
CustomerID string `json:"customerId" format:"uuid"`
// A chronological list of status change events for this message. Each event
// includes a status and timestamp, following industry standards (Twilio, SendGrid,
// Mailgun). Events are ordered chronologically from oldest to newest.
Events []MessageGetResponseEvent `json:"events,nullable"`
// The message body content with variables substituted
MessageBody MessageGetResponseMessageBody `json:"messageBody,nullable"`
// The phone number of the recipient (E.164 format)
PhoneNumber string `json:"phoneNumber"`
// The phone number in international format
PhoneNumberInternational string `json:"phoneNumberInternational"`
// The region code of the phone number (e.g., US, GB, DE)
RegionCode string `json:"regionCode"`
// The delivery status of the message (e.g., sent, delivered, failed, read)
Status string `json:"status"`
// The category of the template (e.g., MARKETING, UTILITY, AUTHENTICATION)
TemplateCategory string `json:"templateCategory"`
// The unique identifier of the template used for this message (null if no template
// was used)
TemplateID string `json:"templateId,nullable" format:"uuid"`
// The display name of the template
TemplateName string `json:"templateName"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Channel respjson.Field
ContactID respjson.Field
CorrectedPrice respjson.Field
CreatedAt respjson.Field
CustomerID respjson.Field
Events respjson.Field
MessageBody respjson.Field
PhoneNumber respjson.Field
PhoneNumberInternational respjson.Field
RegionCode respjson.Field
Status respjson.Field
TemplateCategory respjson.Field
TemplateID respjson.Field
TemplateName respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Represents a sent message with comprehensive delivery and template information (v2)
func (MessageGetResponse) RawJSON ¶
func (r MessageGetResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetResponse) UnmarshalJSON ¶
func (r *MessageGetResponse) UnmarshalJSON(data []byte) error
type MessageGetResponseEvent ¶
type MessageGetResponseEvent struct {
// Optional human-readable description of the event Useful for error messages or
// additional context
Description string `json:"description,nullable"`
// The status of the message at this point in time Examples: "queued", "sent",
// "delivered", "read", "failed"
Status string `json:"status"`
// When this status change occurred (ISO 8601 format)
Timestamp time.Time `json:"timestamp" format:"date-time"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Description respjson.Field
Status respjson.Field
Timestamp respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Represents a status change event in a message's lifecycle Follows industry standards (Twilio, SendGrid, Mailgun pattern)
func (MessageGetResponseEvent) RawJSON ¶
func (r MessageGetResponseEvent) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetResponseEvent) UnmarshalJSON ¶
func (r *MessageGetResponseEvent) UnmarshalJSON(data []byte) error
type MessageGetResponseMessageBody ¶
type MessageGetResponseMessageBody struct {
Buttons []MessageGetResponseMessageBodyButton `json:"buttons,nullable"`
Content string `json:"content"`
Header string `json:"header,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Buttons respjson.Field
Content respjson.Field
Footer respjson.Field
Header respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
The message body content with variables substituted
func (MessageGetResponseMessageBody) RawJSON ¶
func (r MessageGetResponseMessageBody) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetResponseMessageBody) UnmarshalJSON ¶
func (r *MessageGetResponseMessageBody) UnmarshalJSON(data []byte) error
type MessageGetResponseMessageBodyButton ¶
type MessageGetResponseMessageBodyButton struct {
Type string `json:"type"`
Value string `json:"value"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Type respjson.Field
Value respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (MessageGetResponseMessageBodyButton) RawJSON ¶
func (r MessageGetResponseMessageBodyButton) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetResponseMessageBodyButton) UnmarshalJSON ¶
func (r *MessageGetResponseMessageBodyButton) UnmarshalJSON(data []byte) error
type MessageSendQuickMessageParams ¶
type MessageSendQuickMessageParams struct {
// The custom message content to include in the template
CustomMessage string `json:"customMessage,required"`
// The phone number to send the message to, in international format (e.g.,
// +1234567890)
PhoneNumber string `json:"phoneNumber,required"`
// contains filtered or unexported fields
}
func (MessageSendQuickMessageParams) MarshalJSON ¶
func (r MessageSendQuickMessageParams) MarshalJSON() (data []byte, err error)
func (*MessageSendQuickMessageParams) UnmarshalJSON ¶
func (r *MessageSendQuickMessageParams) UnmarshalJSON(data []byte) error
type MessageSendToContactParams ¶
type MessageSendToContactParams struct {
// The unique identifier of the contact to send the message to
ContactID string `json:"contactId,required" format:"uuid"`
// The unique identifier of the template to use for the message
TemplateID string `json:"templateId,required" format:"uuid"`
// Optional key-value pairs of template variables to replace in the template body.
// For example, if your template contains "Hello {{name}}", you would provide {
// "name": "John Doe" }
TemplateVariables map[string]string `json:"templateVariables,omitzero"`
// contains filtered or unexported fields
}
func (MessageSendToContactParams) MarshalJSON ¶
func (r MessageSendToContactParams) MarshalJSON() (data []byte, err error)
func (*MessageSendToContactParams) UnmarshalJSON ¶
func (r *MessageSendToContactParams) UnmarshalJSON(data []byte) error
type MessageSendToPhoneParams ¶
type MessageSendToPhoneParams struct {
// The phone number to send the message to, in international format (e.g.,
// +1234567890)
PhoneNumber string `json:"phoneNumber,required"`
// The unique identifier of the template to use for the message
TemplateID string `json:"templateId,required" format:"uuid"`
// Optional key-value pairs of template variables to replace in the template body.
// For example, if your template contains "Hello {{name}}", you would provide {
// "name": "John Doe" }
TemplateVariables map[string]string `json:"templateVariables,omitzero"`
// contains filtered or unexported fields
}
func (MessageSendToPhoneParams) MarshalJSON ¶
func (r MessageSendToPhoneParams) MarshalJSON() (data []byte, err error)
func (*MessageSendToPhoneParams) UnmarshalJSON ¶
func (r *MessageSendToPhoneParams) UnmarshalJSON(data []byte) error
type MessageService ¶
type MessageService struct {
Options []option.RequestOption
}
MessageService contains methods and other services that help with interacting with the sent-dm API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewMessageService method instead.
func NewMessageService ¶
func NewMessageService(opts ...option.RequestOption) (r MessageService)
NewMessageService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*MessageService) Get ¶
func (r *MessageService) Get(ctx context.Context, id string, opts ...option.RequestOption) (res *MessageGetResponse, err error)
Retrieves comprehensive details about a specific message using the message ID. Returns complete message data including delivery status, channel information, template details, contact information, and pricing. The customer ID is extracted from the authentication token to ensure the message belongs to the authenticated customer.
func (*MessageService) SendQuickMessage ¶
func (r *MessageService) SendQuickMessage(ctx context.Context, body MessageSendQuickMessageParams, opts ...option.RequestOption) (err error)
Sends a message to a phone number using the default template. This endpoint is rate limited to 5 messages per customer per day. The customer ID is extracted from the authentication token.
func (*MessageService) SendToContact ¶
func (r *MessageService) SendToContact(ctx context.Context, body MessageSendToContactParams, opts ...option.RequestOption) (err error)
Sends a message to a specific contact using a template. The message can be sent via SMS or WhatsApp depending on the contact's capabilities. Optionally specify a webhook URL to receive delivery status updates. The customer ID is extracted from the authentication token.
func (*MessageService) SendToPhone ¶
func (r *MessageService) SendToPhone(ctx context.Context, body MessageSendToPhoneParams, opts ...option.RequestOption) (err error)
Sends a message to a phone number using a template. The phone number doesn't need to be a pre-existing contact. The message can be sent via SMS or WhatsApp. Optionally specify a webhook URL to receive delivery status updates. The customer ID is extracted from the authentication token.
type NumberLookupGetParams ¶
type NumberLookupGetParams struct {
PhoneNumber string `query:"phoneNumber,required" json:"-"`
// contains filtered or unexported fields
}
func (NumberLookupGetParams) URLQuery ¶
func (r NumberLookupGetParams) URLQuery() (v url.Values, err error)
URLQuery serializes NumberLookupGetParams's query parameters as `url.Values`.
type NumberLookupGetResponse ¶
type NumberLookupGetResponse struct {
// The country calling code (e.g., 1 for US/Canada)
CountryCode string `json:"countryCode"`
// The phone number formatted in E.164 standard (e.g., +1234567890)
FormatE164 string `json:"formatE164"`
// The phone number formatted for international dialing (e.g., +1 234-567-890)
FormatInternational string `json:"formatInternational"`
// The phone number formatted for national dialing (e.g., (234) 567-890)
FormatNational string `json:"formatNational"`
// The phone number formatted according to RFC 3966 (e.g., tel:+1-234-567-890)
FormatRfc string `json:"formatRfc"`
// The type of phone number (e.g., mobile, fixed_line, voip)
NumberType string `json:"numberType"`
// The phone number in its original format
PhoneNumber string `json:"phoneNumber"`
// The timezones associated with the phone number
PhoneTimezones string `json:"phoneTimezones"`
// The ISO 3166-1 alpha-2 country code (e.g., US, CA, GB)
RegionCode string `json:"regionCode"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
CountryCode respjson.Field
FormatE164 respjson.Field
FormatInternational respjson.Field
FormatNational respjson.Field
FormatRfc respjson.Field
NumberType respjson.Field
PhoneNumber respjson.Field
PhoneTimezones respjson.Field
RegionCode respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Response containing phone number lookup data
func (NumberLookupGetResponse) RawJSON ¶
func (r NumberLookupGetResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*NumberLookupGetResponse) UnmarshalJSON ¶
func (r *NumberLookupGetResponse) UnmarshalJSON(data []byte) error
type NumberLookupService ¶
type NumberLookupService struct {
Options []option.RequestOption
}
NumberLookupService contains methods and other services that help with interacting with the sent-dm API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewNumberLookupService method instead.
func NewNumberLookupService ¶
func NewNumberLookupService(opts ...option.RequestOption) (r NumberLookupService)
NewNumberLookupService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*NumberLookupService) Get ¶
func (r *NumberLookupService) Get(ctx context.Context, query NumberLookupGetParams, opts ...option.RequestOption) (res *NumberLookupGetResponse, err error)
Retrieves detailed information about a phone number including validation, formatting, country information, and available messaging channels. The customer ID is extracted from the authentication token.
type OrganizationService ¶
type OrganizationService struct {
Options []option.RequestOption
Users OrganizationUserService
}
OrganizationService contains methods and other services that help with interacting with the sent-dm API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewOrganizationService method instead.
func NewOrganizationService ¶
func NewOrganizationService(opts ...option.RequestOption) (r OrganizationService)
NewOrganizationService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
type OrganizationUserService ¶
type OrganizationUserService struct {
Options []option.RequestOption
}
OrganizationUserService contains methods and other services that help with interacting with the sent-dm API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewOrganizationUserService method instead.
func NewOrganizationUserService ¶
func NewOrganizationUserService(opts ...option.RequestOption) (r OrganizationUserService)
NewOrganizationUserService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
type TemplateBodyContent ¶
type TemplateBodyContent struct {
Template string `json:"template"`
Type string `json:"type,nullable"`
Variables []TemplateVariable `json:"variables,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Template respjson.Field
Type respjson.Field
Variables respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (TemplateBodyContent) RawJSON ¶
func (r TemplateBodyContent) RawJSON() string
Returns the unmodified JSON received from the API
func (TemplateBodyContent) ToParam ¶
func (r TemplateBodyContent) ToParam() TemplateBodyContentParam
ToParam converts this TemplateBodyContent to a TemplateBodyContentParam.
Warning: the fields of the param type will not be present. ToParam should only be used at the last possible moment before sending a request. Test for this with TemplateBodyContentParam.Overrides()
func (*TemplateBodyContent) UnmarshalJSON ¶
func (r *TemplateBodyContent) UnmarshalJSON(data []byte) error
type TemplateBodyContentParam ¶
type TemplateBodyContentParam struct {
Type param.Opt[string] `json:"type,omitzero"`
Template param.Opt[string] `json:"template,omitzero"`
Variables []TemplateVariableParam `json:"variables,omitzero"`
// contains filtered or unexported fields
}
func (TemplateBodyContentParam) MarshalJSON ¶
func (r TemplateBodyContentParam) MarshalJSON() (data []byte, err error)
func (*TemplateBodyContentParam) UnmarshalJSON ¶
func (r *TemplateBodyContentParam) UnmarshalJSON(data []byte) error
type TemplateDefinition ¶
type TemplateDefinition struct {
// Required template body with content for different channels (multi-channel,
// SMS-specific, or WhatsApp-specific)
Body TemplateDefinitionBody `json:"body,required"`
// Configuration specific to AUTHENTICATION category templates (optional)
AuthenticationConfig TemplateDefinitionAuthenticationConfig `json:"authenticationConfig,nullable"`
// Optional list of interactive buttons (e.g., quick replies, URLs, phone numbers)
Buttons []TemplateDefinitionButton `json:"buttons,nullable"`
// The version of the template definition format
DefinitionVersion string `json:"definitionVersion,nullable"`
Footer TemplateDefinitionFooter `json:"footer,nullable"`
// Optional template header with optional variables
Header TemplateDefinitionHeader `json:"header,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Body respjson.Field
AuthenticationConfig respjson.Field
Buttons respjson.Field
DefinitionVersion respjson.Field
Footer respjson.Field
Header respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Complete definition of a message template including header, body, footer, and buttons
func (TemplateDefinition) RawJSON ¶
func (r TemplateDefinition) RawJSON() string
Returns the unmodified JSON received from the API
func (TemplateDefinition) ToParam ¶
func (r TemplateDefinition) ToParam() TemplateDefinitionParam
ToParam converts this TemplateDefinition to a TemplateDefinitionParam.
Warning: the fields of the param type will not be present. ToParam should only be used at the last possible moment before sending a request. Test for this with TemplateDefinitionParam.Overrides()
func (*TemplateDefinition) UnmarshalJSON ¶
func (r *TemplateDefinition) UnmarshalJSON(data []byte) error
type TemplateDefinitionAuthenticationConfig ¶
type TemplateDefinitionAuthenticationConfig struct {
// Whether to add the security recommendation text: "For your security, do not
// share this code."
AddSecurityRecommendation bool `json:"addSecurityRecommendation"`
// Code expiration time in minutes (1-90). If set, adds footer: "This code expires
// in X minutes."
CodeExpirationMinutes int64 `json:"codeExpirationMinutes,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
AddSecurityRecommendation respjson.Field
CodeExpirationMinutes respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Configuration specific to AUTHENTICATION category templates (optional)
func (TemplateDefinitionAuthenticationConfig) RawJSON ¶
func (r TemplateDefinitionAuthenticationConfig) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateDefinitionAuthenticationConfig) UnmarshalJSON ¶
func (r *TemplateDefinitionAuthenticationConfig) UnmarshalJSON(data []byte) error
type TemplateDefinitionAuthenticationConfigParam ¶
type TemplateDefinitionAuthenticationConfigParam struct {
// Code expiration time in minutes (1-90). If set, adds footer: "This code expires
// in X minutes."
CodeExpirationMinutes param.Opt[int64] `json:"codeExpirationMinutes,omitzero"`
// Whether to add the security recommendation text: "For your security, do not
// share this code."
AddSecurityRecommendation param.Opt[bool] `json:"addSecurityRecommendation,omitzero"`
// contains filtered or unexported fields
}
Configuration specific to AUTHENTICATION category templates (optional)
func (TemplateDefinitionAuthenticationConfigParam) MarshalJSON ¶
func (r TemplateDefinitionAuthenticationConfigParam) MarshalJSON() (data []byte, err error)
func (*TemplateDefinitionAuthenticationConfigParam) UnmarshalJSON ¶
func (r *TemplateDefinitionAuthenticationConfigParam) UnmarshalJSON(data []byte) error
type TemplateDefinitionBody ¶
type TemplateDefinitionBody struct {
// Content that will be used for all channels (SMS and WhatsApp) unless
// channel-specific content is provided
MultiChannel TemplateBodyContent `json:"multiChannel,nullable"`
// SMS-specific content that overrides multi-channel content for SMS messages
SMS TemplateBodyContent `json:"sms,nullable"`
// WhatsApp-specific content that overrides multi-channel content for WhatsApp
// messages
Whatsapp TemplateBodyContent `json:"whatsapp,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
MultiChannel respjson.Field
SMS respjson.Field
Whatsapp respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Required template body with content for different channels (multi-channel, SMS-specific, or WhatsApp-specific)
func (TemplateDefinitionBody) RawJSON ¶
func (r TemplateDefinitionBody) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateDefinitionBody) UnmarshalJSON ¶
func (r *TemplateDefinitionBody) UnmarshalJSON(data []byte) error
type TemplateDefinitionBodyParam ¶
type TemplateDefinitionBodyParam struct {
// Content that will be used for all channels (SMS and WhatsApp) unless
// channel-specific content is provided
MultiChannel TemplateBodyContentParam `json:"multiChannel,omitzero"`
// SMS-specific content that overrides multi-channel content for SMS messages
SMS TemplateBodyContentParam `json:"sms,omitzero"`
// WhatsApp-specific content that overrides multi-channel content for WhatsApp
// messages
Whatsapp TemplateBodyContentParam `json:"whatsapp,omitzero"`
// contains filtered or unexported fields
}
Required template body with content for different channels (multi-channel, SMS-specific, or WhatsApp-specific)
func (TemplateDefinitionBodyParam) MarshalJSON ¶
func (r TemplateDefinitionBodyParam) MarshalJSON() (data []byte, err error)
func (*TemplateDefinitionBodyParam) UnmarshalJSON ¶
func (r *TemplateDefinitionBodyParam) UnmarshalJSON(data []byte) error
type TemplateDefinitionButton ¶
type TemplateDefinitionButton struct {
// The unique identifier of the button (1-based index)
ID int64 `json:"id"`
// Properties specific to the button type
Props TemplateDefinitionButtonProps `json:"props"`
// The type of button (e.g., QUICK_REPLY, URL, PHONE_NUMBER, VOICE_CALL, COPY_CODE)
Type string `json:"type"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Props respjson.Field
Type respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Interactive button in a message template
func (TemplateDefinitionButton) RawJSON ¶
func (r TemplateDefinitionButton) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateDefinitionButton) UnmarshalJSON ¶
func (r *TemplateDefinitionButton) UnmarshalJSON(data []byte) error
type TemplateDefinitionButtonParam ¶
type TemplateDefinitionButtonParam struct {
// The unique identifier of the button (1-based index)
ID param.Opt[int64] `json:"id,omitzero"`
// The type of button (e.g., QUICK_REPLY, URL, PHONE_NUMBER, VOICE_CALL, COPY_CODE)
Type param.Opt[string] `json:"type,omitzero"`
// Properties specific to the button type
Props TemplateDefinitionButtonPropsParam `json:"props,omitzero"`
// contains filtered or unexported fields
}
Interactive button in a message template
func (TemplateDefinitionButtonParam) MarshalJSON ¶
func (r TemplateDefinitionButtonParam) MarshalJSON() (data []byte, err error)
func (*TemplateDefinitionButtonParam) UnmarshalJSON ¶
func (r *TemplateDefinitionButtonParam) UnmarshalJSON(data []byte) error
type TemplateDefinitionButtonProps ¶
type TemplateDefinitionButtonProps struct {
ActiveFor int64 `json:"activeFor,nullable"`
AutofillText string `json:"autofillText,nullable"`
CountryCode string `json:"countryCode,nullable"`
OfferCode string `json:"offerCode,nullable"`
OtpType string `json:"otpType,nullable"`
PackageName string `json:"packageName,nullable"`
PhoneNumber string `json:"phoneNumber,nullable"`
QuickReplyType string `json:"quickReplyType,nullable"`
SignatureHash string `json:"signatureHash,nullable"`
Text string `json:"text,nullable"`
URL string `json:"url,nullable"`
URLType string `json:"urlType,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ActiveFor respjson.Field
AutofillText respjson.Field
CountryCode respjson.Field
OfferCode respjson.Field
OtpType respjson.Field
PackageName respjson.Field
PhoneNumber respjson.Field
QuickReplyType respjson.Field
SignatureHash respjson.Field
Text respjson.Field
URL respjson.Field
URLType respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Properties specific to the button type
func (TemplateDefinitionButtonProps) RawJSON ¶
func (r TemplateDefinitionButtonProps) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateDefinitionButtonProps) UnmarshalJSON ¶
func (r *TemplateDefinitionButtonProps) UnmarshalJSON(data []byte) error
type TemplateDefinitionButtonPropsParam ¶
type TemplateDefinitionButtonPropsParam struct {
ActiveFor param.Opt[int64] `json:"activeFor,omitzero"`
AutofillText param.Opt[string] `json:"autofillText,omitzero"`
CountryCode param.Opt[string] `json:"countryCode,omitzero"`
OfferCode param.Opt[string] `json:"offerCode,omitzero"`
OtpType param.Opt[string] `json:"otpType,omitzero"`
PackageName param.Opt[string] `json:"packageName,omitzero"`
PhoneNumber param.Opt[string] `json:"phoneNumber,omitzero"`
QuickReplyType param.Opt[string] `json:"quickReplyType,omitzero"`
SignatureHash param.Opt[string] `json:"signatureHash,omitzero"`
Text param.Opt[string] `json:"text,omitzero"`
URL param.Opt[string] `json:"url,omitzero"`
URLType param.Opt[string] `json:"urlType,omitzero"`
// contains filtered or unexported fields
}
Properties specific to the button type
func (TemplateDefinitionButtonPropsParam) MarshalJSON ¶
func (r TemplateDefinitionButtonPropsParam) MarshalJSON() (data []byte, err error)
func (*TemplateDefinitionButtonPropsParam) UnmarshalJSON ¶
func (r *TemplateDefinitionButtonPropsParam) UnmarshalJSON(data []byte) error
type TemplateDefinitionFooter ¶
type TemplateDefinitionFooter struct {
Template string `json:"template"`
Type string `json:"type,nullable"`
Variables []TemplateVariable `json:"variables,nullable"`
JSON struct {
Template respjson.Field
Type respjson.Field
Variables respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Optional template footer with optional variables
func (TemplateDefinitionFooter) RawJSON ¶
func (r TemplateDefinitionFooter) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateDefinitionFooter) UnmarshalJSON ¶
func (r *TemplateDefinitionFooter) UnmarshalJSON(data []byte) error
type TemplateDefinitionFooterParam ¶
type TemplateDefinitionFooterParam struct {
Type param.Opt[string] `json:"type,omitzero"`
Template param.Opt[string] `json:"template,omitzero"`
Variables []TemplateVariableParam `json:"variables,omitzero"`
// contains filtered or unexported fields
}
Optional template footer with optional variables
func (TemplateDefinitionFooterParam) MarshalJSON ¶
func (r TemplateDefinitionFooterParam) MarshalJSON() (data []byte, err error)
func (*TemplateDefinitionFooterParam) UnmarshalJSON ¶
func (r *TemplateDefinitionFooterParam) UnmarshalJSON(data []byte) error
type TemplateDefinitionHeader ¶
type TemplateDefinitionHeader struct {
// The header template text with optional variable placeholders (e.g., "Welcome to
// {{0:variable}}")
Template string `json:"template"`
// The type of header (e.g., "text", "image", "video", "document")
Type string `json:"type,nullable"`
// List of variables used in the header template
Variables []TemplateVariable `json:"variables,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Template respjson.Field
Type respjson.Field
Variables respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Optional template header with optional variables
func (TemplateDefinitionHeader) RawJSON ¶
func (r TemplateDefinitionHeader) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateDefinitionHeader) UnmarshalJSON ¶
func (r *TemplateDefinitionHeader) UnmarshalJSON(data []byte) error
type TemplateDefinitionHeaderParam ¶
type TemplateDefinitionHeaderParam struct {
// The type of header (e.g., "text", "image", "video", "document")
Type param.Opt[string] `json:"type,omitzero"`
// The header template text with optional variable placeholders (e.g., "Welcome to
// {{0:variable}}")
Template param.Opt[string] `json:"template,omitzero"`
// List of variables used in the header template
Variables []TemplateVariableParam `json:"variables,omitzero"`
// contains filtered or unexported fields
}
Optional template header with optional variables
func (TemplateDefinitionHeaderParam) MarshalJSON ¶
func (r TemplateDefinitionHeaderParam) MarshalJSON() (data []byte, err error)
func (*TemplateDefinitionHeaderParam) UnmarshalJSON ¶
func (r *TemplateDefinitionHeaderParam) UnmarshalJSON(data []byte) error
type TemplateDefinitionParam ¶
type TemplateDefinitionParam struct {
// Required template body with content for different channels (multi-channel,
// SMS-specific, or WhatsApp-specific)
Body TemplateDefinitionBodyParam `json:"body,omitzero,required"`
// The version of the template definition format
DefinitionVersion param.Opt[string] `json:"definitionVersion,omitzero"`
// Configuration specific to AUTHENTICATION category templates (optional)
AuthenticationConfig TemplateDefinitionAuthenticationConfigParam `json:"authenticationConfig,omitzero"`
// Optional list of interactive buttons (e.g., quick replies, URLs, phone numbers)
Buttons []TemplateDefinitionButtonParam `json:"buttons,omitzero"`
Footer TemplateDefinitionFooterParam `json:"footer,omitzero"`
// Optional template header with optional variables
Header TemplateDefinitionHeaderParam `json:"header,omitzero"`
// contains filtered or unexported fields
}
Complete definition of a message template including header, body, footer, and buttons
The property Body is required.
func (TemplateDefinitionParam) MarshalJSON ¶
func (r TemplateDefinitionParam) MarshalJSON() (data []byte, err error)
func (*TemplateDefinitionParam) UnmarshalJSON ¶
func (r *TemplateDefinitionParam) UnmarshalJSON(data []byte) error
type TemplateListParams ¶
type TemplateListParams struct {
// The page number (zero-indexed). Default is 0.
Page int64 `query:"page,required" json:"-"`
// The number of items per page (1-1000). Default is 100.
PageSize int64 `query:"pageSize,required" json:"-"`
// Optional filter by template category (e.g., MARKETING, UTILITY, AUTHENTICATION)
Category param.Opt[string] `query:"category,omitzero" json:"-"`
// Optional search term to filter templates by name or content
Search param.Opt[string] `query:"search,omitzero" json:"-"`
// Optional filter by template status (e.g., APPROVED, PENDING, REJECTED, DRAFT)
Status param.Opt[string] `query:"status,omitzero" json:"-"`
// contains filtered or unexported fields
}
func (TemplateListParams) URLQuery ¶
func (r TemplateListParams) URLQuery() (v url.Values, err error)
URLQuery serializes TemplateListParams's query parameters as `url.Values`.
type TemplateListResponse ¶
type TemplateListResponse struct {
Items []TemplateResponse `json:"items"`
Page int64 `json:"page"`
PageSize int64 `json:"pageSize"`
TotalCount int64 `json:"totalCount"`
TotalPages int64 `json:"totalPages"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Items respjson.Field
Page respjson.Field
PageSize respjson.Field
TotalCount respjson.Field
TotalPages respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (TemplateListResponse) RawJSON ¶
func (r TemplateListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateListResponse) UnmarshalJSON ¶
func (r *TemplateListResponse) UnmarshalJSON(data []byte) error
type TemplateNewParams ¶
type TemplateNewParams struct {
// Template definition containing header, body, footer, and buttons
Definition TemplateDefinitionParam `json:"definition,omitzero,required"`
// The template category (e.g., MARKETING, UTILITY, AUTHENTICATION). Can only be
// set when creating a new template. If not provided, will be auto-generated using
// AI.
Category param.Opt[string] `json:"category,omitzero"`
// The template language code (e.g., en_US, es_ES). Can only be set when creating a
// new template. If not provided, will be auto-detected using AI.
Language param.Opt[string] `json:"language,omitzero"`
// When false, the template will be saved as draft. When true, the template will be
// submitted for review.
SubmitForReview param.Opt[bool] `json:"submitForReview,omitzero"`
// contains filtered or unexported fields
}
func (TemplateNewParams) MarshalJSON ¶
func (r TemplateNewParams) MarshalJSON() (data []byte, err error)
func (*TemplateNewParams) UnmarshalJSON ¶
func (r *TemplateNewParams) UnmarshalJSON(data []byte) error
type TemplateResponse ¶
type TemplateResponse struct {
// The unique identifier of the template
ID string `json:"id" format:"uuid"`
// The template category (e.g., MARKETING, UTILITY, AUTHENTICATION)
Category string `json:"category"`
// The date and time when the template was created
CreatedAt time.Time `json:"createdAt" format:"date-time"`
// The complete template definition including header, body, footer, and buttons
Definition TemplateDefinition `json:"definition"`
// The display name of the template (auto-generated if not provided)
DisplayName string `json:"displayName"`
// Indicates whether the template is published and available for use
IsPublished bool `json:"isPublished"`
// The template language code (e.g., en_US, es_ES)
Language string `json:"language"`
// The approval status of the template (e.g., APPROVED, PENDING, REJECTED, DRAFT)
Status string `json:"status"`
// The date and time when the template was last updated
UpdatedAt time.Time `json:"updatedAt,nullable" format:"date-time"`
// The WhatsApp Business API template ID from Meta
WhatsappTemplateID string `json:"whatsappTemplateId"`
// The WhatsApp template name as registered with Meta
WhatsappTemplateName string `json:"whatsappTemplateName"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Category respjson.Field
CreatedAt respjson.Field
Definition respjson.Field
DisplayName respjson.Field
IsPublished respjson.Field
Language respjson.Field
Status respjson.Field
UpdatedAt respjson.Field
WhatsappTemplateID respjson.Field
WhatsappTemplateName respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Represents a message template with comprehensive metadata including definition structure
func (TemplateResponse) RawJSON ¶
func (r TemplateResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateResponse) UnmarshalJSON ¶
func (r *TemplateResponse) UnmarshalJSON(data []byte) error
type TemplateService ¶
type TemplateService struct {
Options []option.RequestOption
}
TemplateService contains methods and other services that help with interacting with the sent-dm API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewTemplateService method instead.
func NewTemplateService ¶
func NewTemplateService(opts ...option.RequestOption) (r TemplateService)
NewTemplateService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*TemplateService) Delete ¶
func (r *TemplateService) Delete(ctx context.Context, id string, opts ...option.RequestOption) (err error)
Deletes a specific message template by its unique identifier for the authenticated customer with smart deletion strategy. Deletion behavior: - If template has NO messages: Permanently deleted from database (hard delete). - If template has messages: Marked as deleted but preserved for message history (soft delete with snapshot). The template must exist and belong to the authenticated customer to be deleted successfully. The customer ID is extracted from the authentication token.
func (*TemplateService) Get ¶
func (r *TemplateService) Get(ctx context.Context, id string, opts ...option.RequestOption) (res *TemplateResponse, err error)
Retrieves a specific message template by its unique identifier for the authenticated customer with comprehensive template definitions including headers, body, footer, and interactive buttons. The customer ID is extracted from the authentication token.
func (*TemplateService) List ¶
func (r *TemplateService) List(ctx context.Context, query TemplateListParams, opts ...option.RequestOption) (res *TemplateListResponse, err error)
Retrieves all message templates available for the authenticated customer with comprehensive template definitions including headers, body, footer, and interactive buttons. Supports advanced filtering by search term, status, and category, plus pagination. The customer ID is extracted from the authentication token.
func (*TemplateService) New ¶
func (r *TemplateService) New(ctx context.Context, body TemplateNewParams, opts ...option.RequestOption) (res *TemplateResponse, err error)
Creates a new message template for the authenticated customer with comprehensive template definitions including headers, body, footer, and interactive buttons. Supports automatic metadata generation using AI (display name, language, category). Optionally submits the template for WhatsApp review. The customer ID is extracted from the authentication token.
type TemplateVariable ¶
type TemplateVariable struct {
ID int64 `json:"id"`
Name string `json:"name"`
Props TemplateVariableProps `json:"props"`
Type string `json:"type"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Name respjson.Field
Props respjson.Field
Type respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (TemplateVariable) RawJSON ¶
func (r TemplateVariable) RawJSON() string
Returns the unmodified JSON received from the API
func (TemplateVariable) ToParam ¶
func (r TemplateVariable) ToParam() TemplateVariableParam
ToParam converts this TemplateVariable to a TemplateVariableParam.
Warning: the fields of the param type will not be present. ToParam should only be used at the last possible moment before sending a request. Test for this with TemplateVariableParam.Overrides()
func (*TemplateVariable) UnmarshalJSON ¶
func (r *TemplateVariable) UnmarshalJSON(data []byte) error
type TemplateVariableParam ¶
type TemplateVariableParam struct {
ID param.Opt[int64] `json:"id,omitzero"`
Name param.Opt[string] `json:"name,omitzero"`
Type param.Opt[string] `json:"type,omitzero"`
Props TemplateVariablePropsParam `json:"props,omitzero"`
// contains filtered or unexported fields
}
func (TemplateVariableParam) MarshalJSON ¶
func (r TemplateVariableParam) MarshalJSON() (data []byte, err error)
func (*TemplateVariableParam) UnmarshalJSON ¶
func (r *TemplateVariableParam) UnmarshalJSON(data []byte) error
type TemplateVariableProps ¶
type TemplateVariableProps struct {
Alt string `json:"alt,nullable"`
MediaType string `json:"mediaType,nullable"`
Sample string `json:"sample,nullable"`
ShortURL string `json:"shortUrl,nullable"`
URL string `json:"url,nullable"`
VariableType string `json:"variableType,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Alt respjson.Field
MediaType respjson.Field
Sample respjson.Field
ShortURL respjson.Field
URL respjson.Field
VariableType respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (TemplateVariableProps) RawJSON ¶
func (r TemplateVariableProps) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateVariableProps) UnmarshalJSON ¶
func (r *TemplateVariableProps) UnmarshalJSON(data []byte) error
type TemplateVariablePropsParam ¶
type TemplateVariablePropsParam struct {
Alt param.Opt[string] `json:"alt,omitzero"`
MediaType param.Opt[string] `json:"mediaType,omitzero"`
Sample param.Opt[string] `json:"sample,omitzero"`
ShortURL param.Opt[string] `json:"shortUrl,omitzero"`
URL param.Opt[string] `json:"url,omitzero"`
VariableType param.Opt[string] `json:"variableType,omitzero"`
// contains filtered or unexported fields
}
func (TemplateVariablePropsParam) MarshalJSON ¶
func (r TemplateVariablePropsParam) MarshalJSON() (data []byte, err error)
func (*TemplateVariablePropsParam) UnmarshalJSON ¶
func (r *TemplateVariablePropsParam) UnmarshalJSON(data []byte) error
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
encoding/json
Package json implements encoding and decoding of JSON as defined in RFC 7159.
|
Package json implements encoding and decoding of JSON as defined in RFC 7159. |
|
encoding/json/shims
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.22, and used by the Go 1.24 encoding/json package.
|
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.22, and used by the Go 1.24 encoding/json package. |
|
packages
|
|
|
shared
|
|