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 APIMeta
- type APIResponseOfContact
- type APIResponseOfProfileDetail
- type APIResponseOfTcrCampaignWithUseCases
- type APIResponseOfUser
- type APIResponseTemplate
- type APIResponseWebhook
- type BaseDto
- type BillingContactInfoParam
- type BrandsBrandDataParam
- type CampaignDataParam
- 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 ContactDeleteParams
- type ContactDeleteParamsBody
- type ContactGetParams
- type ContactListParams
- type ContactListResponse
- type ContactListResponseData
- type ContactNewParams
- type ContactResponse
- type ContactService
- func (r *ContactService) Delete(ctx context.Context, id string, params ContactDeleteParams, ...) (err error)
- func (r *ContactService) Get(ctx context.Context, id string, query ContactGetParams, ...) (res *APIResponseOfContact, err error)
- func (r *ContactService) List(ctx context.Context, params ContactListParams, opts ...option.RequestOption) (res *ContactListResponse, err error)
- func (r *ContactService) New(ctx context.Context, params ContactNewParams, opts ...option.RequestOption) (res *APIResponseOfContact, err error)
- func (r *ContactService) Update(ctx context.Context, id string, params ContactUpdateParams, ...) (res *APIResponseOfContact, err error)
- type ContactUpdateParams
- type DestinationCountry
- type DestinationCountryParam
- type Error
- type ErrorDetail
- type MeGetParams
- type MeGetResponse
- type MeGetResponseData
- type MeGetResponseDataChannels
- type MeGetResponseDataChannelsRcs
- type MeGetResponseDataChannelsSMS
- type MeGetResponseDataChannelsWhatsapp
- type MeGetResponseDataProfile
- type MeService
- type MessageGetActivitiesParams
- type MessageGetActivitiesResponse
- type MessageGetActivitiesResponseData
- type MessageGetActivitiesResponseDataActivity
- type MessageGetStatusParams
- type MessageGetStatusResponse
- type MessageGetStatusResponseData
- type MessageGetStatusResponseDataEvent
- type MessageGetStatusResponseDataMessageBody
- type MessageGetStatusResponseDataMessageBodyButton
- type MessageSendParams
- type MessageSendParamsTemplate
- type MessageSendResponse
- type MessageSendResponseData
- type MessageSendResponseDataRecipient
- type MessageService
- func (r *MessageService) GetActivities(ctx context.Context, id string, query MessageGetActivitiesParams, ...) (res *MessageGetActivitiesResponse, err error)
- func (r *MessageService) GetStatus(ctx context.Context, id string, query MessageGetStatusParams, ...) (res *MessageGetStatusResponse, err error)
- func (r *MessageService) Send(ctx context.Context, params MessageSendParams, opts ...option.RequestOption) (res *MessageSendResponse, err error)
- type MessagingUseCaseUs
- type MutationRequestParam
- type NumberLookupParams
- type NumberLookupResponse
- type NumberLookupResponseData
- type NumberService
- type PaginationMeta
- type PaginationMetaCursors
- type PaymentDetailsParam
- type ProfileCampaignDeleteParams
- type ProfileCampaignDeleteParamsBody
- type ProfileCampaignListParams
- type ProfileCampaignListResponse
- type ProfileCampaignNewParams
- type ProfileCampaignService
- func (r *ProfileCampaignService) Delete(ctx context.Context, campaignID string, params ProfileCampaignDeleteParams, ...) (err error)
- func (r *ProfileCampaignService) List(ctx context.Context, profileID string, query ProfileCampaignListParams, ...) (res *ProfileCampaignListResponse, err error)
- func (r *ProfileCampaignService) New(ctx context.Context, profileID string, params ProfileCampaignNewParams, ...) (res *APIResponseOfTcrCampaignWithUseCases, err error)
- func (r *ProfileCampaignService) Update(ctx context.Context, campaignID string, params ProfileCampaignUpdateParams, ...) (res *APIResponseOfTcrCampaignWithUseCases, err error)
- type ProfileCampaignUpdateParams
- type ProfileCompleteParams
- type ProfileCompleteResponse
- type ProfileDeleteParams
- type ProfileDeleteParamsBody
- type ProfileDetail
- type ProfileDetailBillingContact
- type ProfileDetailBrand
- type ProfileDetailBrandBusiness
- type ProfileDetailBrandCompliance
- type ProfileDetailBrandContact
- type ProfileGetParams
- type ProfileListParams
- type ProfileListResponse
- type ProfileListResponseData
- type ProfileNewParams
- type ProfileNewParamsWhatsappBusinessAccount
- type ProfileService
- func (r *ProfileService) Complete(ctx context.Context, profileID string, params ProfileCompleteParams, ...) (res *ProfileCompleteResponse, err error)
- func (r *ProfileService) Delete(ctx context.Context, profileID string, params ProfileDeleteParams, ...) (err error)
- func (r *ProfileService) Get(ctx context.Context, profileID string, query ProfileGetParams, ...) (res *APIResponseOfProfileDetail, err error)
- func (r *ProfileService) List(ctx context.Context, query ProfileListParams, opts ...option.RequestOption) (res *ProfileListResponse, err error)
- func (r *ProfileService) New(ctx context.Context, params ProfileNewParams, opts ...option.RequestOption) (res *APIResponseOfProfileDetail, err error)
- func (r *ProfileService) Update(ctx context.Context, profileID string, params ProfileUpdateParams, ...) (res *APIResponseOfProfileDetail, err error)
- type ProfileSettings
- type ProfileUpdateParams
- type SentDmServicesCommonContractsPocOsAuthenticationConfigParam
- type SentDmServicesCommonContractsPocOsTemplateBodyParam
- type SentDmServicesCommonContractsPocOsTemplateButtonParam
- type SentDmServicesCommonContractsPocOsTemplateButtonPropsParam
- type SentDmServicesCommonContractsPocOsTemplateFooterParam
- type SentDmServicesCommonContractsPocOsTemplateHeaderParam
- type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType
- type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam
- type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam
- type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam
- type SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam
- type TcrBrandRelationship
- type TcrCampaignWithUseCases
- type TcrCampaignWithUseCasesUseCase
- type TcrVertical
- type Template
- type TemplateBodyContentParam
- type TemplateDefinitionParam
- type TemplateDeleteParams
- type TemplateGetParams
- type TemplateListParams
- type TemplateListResponse
- type TemplateListResponseData
- type TemplateNewParams
- type TemplateService
- func (r *TemplateService) Delete(ctx context.Context, id string, params TemplateDeleteParams, ...) (err error)
- func (r *TemplateService) Get(ctx context.Context, id string, query TemplateGetParams, ...) (res *APIResponseTemplate, err error)
- func (r *TemplateService) List(ctx context.Context, params TemplateListParams, opts ...option.RequestOption) (res *TemplateListResponse, err error)
- func (r *TemplateService) New(ctx context.Context, params TemplateNewParams, opts ...option.RequestOption) (res *APIResponseTemplate, err error)
- func (r *TemplateService) Update(ctx context.Context, id string, params TemplateUpdateParams, ...) (res *APIResponseTemplate, err error)
- type TemplateUpdateParams
- type TemplateVariableParam
- type TemplateVariablePropsParam
- type UserGetParams
- type UserInviteParams
- type UserListParams
- type UserListResponse
- type UserListResponseData
- type UserRemoveParams
- type UserRemoveParamsBody
- type UserResponse
- type UserService
- func (r *UserService) Get(ctx context.Context, userID string, query UserGetParams, ...) (res *APIResponseOfUser, err error)
- func (r *UserService) Invite(ctx context.Context, params UserInviteParams, opts ...option.RequestOption) (res *APIResponseOfUser, err error)
- func (r *UserService) List(ctx context.Context, query UserListParams, opts ...option.RequestOption) (res *UserListResponse, err error)
- func (r *UserService) Remove(ctx context.Context, userID string, params UserRemoveParams, ...) (err error)
- func (r *UserService) UpdateRole(ctx context.Context, userID string, params UserUpdateRoleParams, ...) (res *APIResponseOfUser, err error)
- type UserUpdateRoleParams
- type WebhookDeleteParams
- type WebhookGetParams
- type WebhookListEventTypesParams
- type WebhookListEventTypesResponse
- type WebhookListEventTypesResponseData
- type WebhookListEventTypesResponseDataEventType
- type WebhookListEventsParams
- type WebhookListEventsResponse
- type WebhookListEventsResponseData
- type WebhookListEventsResponseDataEvent
- type WebhookListParams
- type WebhookListResponse
- type WebhookListResponseData
- type WebhookNewParams
- type WebhookResponse
- type WebhookRotateSecretParams
- type WebhookRotateSecretParamsBody
- type WebhookRotateSecretResponse
- type WebhookRotateSecretResponseData
- type WebhookService
- func (r *WebhookService) Delete(ctx context.Context, id string, body WebhookDeleteParams, ...) (err error)
- func (r *WebhookService) Get(ctx context.Context, id string, query WebhookGetParams, ...) (res *APIResponseWebhook, err error)
- func (r *WebhookService) List(ctx context.Context, params WebhookListParams, opts ...option.RequestOption) (res *WebhookListResponse, err error)
- func (r *WebhookService) ListEventTypes(ctx context.Context, query WebhookListEventTypesParams, ...) (res *WebhookListEventTypesResponse, err error)
- func (r *WebhookService) ListEvents(ctx context.Context, id string, params WebhookListEventsParams, ...) (res *WebhookListEventsResponse, err error)
- func (r *WebhookService) New(ctx context.Context, params WebhookNewParams, opts ...option.RequestOption) (res *APIResponseWebhook, err error)
- func (r *WebhookService) RotateSecret(ctx context.Context, id string, params WebhookRotateSecretParams, ...) (res *WebhookRotateSecretResponse, err error)
- func (r *WebhookService) Test(ctx context.Context, id string, params WebhookTestParams, ...) (res *WebhookTestResponse, err error)
- func (r *WebhookService) ToggleStatus(ctx context.Context, id string, params WebhookToggleStatusParams, ...) (res *APIResponseWebhook, err error)
- func (r *WebhookService) Update(ctx context.Context, id string, params WebhookUpdateParams, ...) (res *APIResponseWebhook, err error)
- type WebhookTestParams
- type WebhookTestResponse
- type WebhookTestResponseData
- type WebhookToggleStatusParams
- type WebhookUpdateParams
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_BASE_URL). This should be used to initialize new clients.
func Opt ¶
func Opt[T comparable](v T) param.Opt[T]
Types ¶
type APIMeta ¶ added in v0.7.0
type APIMeta struct {
// Unique identifier for this request (for tracing and support)
RequestID string `json:"request_id"`
// Server timestamp when the response was generated
Timestamp time.Time `json:"timestamp" format:"date-time"`
// API version used for this request
Version string `json:"version"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
RequestID respjson.Field
Timestamp respjson.Field
Version respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Request and response metadata
func (*APIMeta) UnmarshalJSON ¶ added in v0.7.0
type APIResponseOfContact ¶ added in v0.9.0
type APIResponseOfContact struct {
// Contact response for v3 API Uses snake_case for JSON property names
Data ContactResponse `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (APIResponseOfContact) RawJSON ¶ added in v0.9.0
func (r APIResponseOfContact) RawJSON() string
Returns the unmodified JSON received from the API
func (*APIResponseOfContact) UnmarshalJSON ¶ added in v0.9.0
func (r *APIResponseOfContact) UnmarshalJSON(data []byte) error
type APIResponseOfProfileDetail ¶ added in v0.7.0
type APIResponseOfProfileDetail struct {
// Detailed profile response for v3 API
Data ProfileDetail `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (APIResponseOfProfileDetail) RawJSON ¶ added in v0.7.0
func (r APIResponseOfProfileDetail) RawJSON() string
Returns the unmodified JSON received from the API
func (*APIResponseOfProfileDetail) UnmarshalJSON ¶ added in v0.7.0
func (r *APIResponseOfProfileDetail) UnmarshalJSON(data []byte) error
type APIResponseOfTcrCampaignWithUseCases ¶ added in v0.9.0
type APIResponseOfTcrCampaignWithUseCases struct {
// The response data (null if error)
Data TcrCampaignWithUseCases `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (APIResponseOfTcrCampaignWithUseCases) RawJSON ¶ added in v0.9.0
func (r APIResponseOfTcrCampaignWithUseCases) RawJSON() string
Returns the unmodified JSON received from the API
func (*APIResponseOfTcrCampaignWithUseCases) UnmarshalJSON ¶ added in v0.9.0
func (r *APIResponseOfTcrCampaignWithUseCases) UnmarshalJSON(data []byte) error
type APIResponseOfUser ¶ added in v0.7.0
type APIResponseOfUser struct {
// User response for v3 API
Data UserResponse `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (APIResponseOfUser) RawJSON ¶ added in v0.7.0
func (r APIResponseOfUser) RawJSON() string
Returns the unmodified JSON received from the API
func (*APIResponseOfUser) UnmarshalJSON ¶ added in v0.7.0
func (r *APIResponseOfUser) UnmarshalJSON(data []byte) error
type APIResponseTemplate ¶ added in v0.7.0
type APIResponseTemplate struct {
// Template response for v3 API
Data Template `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (APIResponseTemplate) RawJSON ¶ added in v0.7.0
func (r APIResponseTemplate) RawJSON() string
Returns the unmodified JSON received from the API
func (*APIResponseTemplate) UnmarshalJSON ¶ added in v0.7.0
func (r *APIResponseTemplate) UnmarshalJSON(data []byte) error
type APIResponseWebhook ¶ added in v0.7.0
type APIResponseWebhook struct {
// The response data (null if error)
Data WebhookResponse `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (APIResponseWebhook) RawJSON ¶ added in v0.7.0
func (r APIResponseWebhook) RawJSON() string
Returns the unmodified JSON received from the API
func (*APIResponseWebhook) UnmarshalJSON ¶ added in v0.7.0
func (r *APIResponseWebhook) UnmarshalJSON(data []byte) error
type BaseDto ¶ added in v0.7.0
type BaseDto struct {
// Unique identifier
ID string `json:"id" format:"uuid"`
CreatedAt time.Time `json:"createdAt" format:"date-time"`
UpdatedAt time.Time `json:"updatedAt" api:"nullable" format:"date-time"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
CreatedAt respjson.Field
UpdatedAt respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (*BaseDto) UnmarshalJSON ¶ added in v0.7.0
type BillingContactInfoParam ¶ added in v0.9.0
type BillingContactInfoParam struct {
// Email address where invoices will be sent (required)
Email string `json:"email" api:"required" format:"email"`
// Full name of the billing contact or company (required)
Name string `json:"name" api:"required"`
// Billing address (optional). Free-form text including street, city, state, postal
// code, and country.
Address param.Opt[string] `json:"address,omitzero"`
// Phone number for the billing contact (optional)
Phone param.Opt[string] `json:"phone,omitzero"`
// contains filtered or unexported fields
}
Billing contact information for a profile. Required when billing_model is "profile" or "profile_and_organization".
The properties Email, Name are required.
func (BillingContactInfoParam) MarshalJSON ¶ added in v0.9.0
func (r BillingContactInfoParam) MarshalJSON() (data []byte, err error)
func (*BillingContactInfoParam) UnmarshalJSON ¶ added in v0.9.0
func (r *BillingContactInfoParam) UnmarshalJSON(data []byte) error
type BrandsBrandDataParam ¶ added in v0.9.0
type BrandsBrandDataParam struct {
// Compliance and TCR information for brand registration
Compliance SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam `json:"compliance,omitzero" api:"required"`
// Contact information for brand KYC
Contact SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam `json:"contact,omitzero" api:"required"`
// Business details and address for brand KYC
Business SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam `json:"business,omitzero"`
// contains filtered or unexported fields
}
Brand and KYC data grouped into contact, business, and compliance sections
The properties Compliance, Contact are required.
func (BrandsBrandDataParam) MarshalJSON ¶ added in v0.9.0
func (r BrandsBrandDataParam) MarshalJSON() (data []byte, err error)
func (*BrandsBrandDataParam) UnmarshalJSON ¶ added in v0.9.0
func (r *BrandsBrandDataParam) UnmarshalJSON(data []byte) error
type CampaignDataParam ¶ added in v0.7.0
type CampaignDataParam struct {
// Campaign description
Description string `json:"description" api:"required"`
// Campaign name
Name string `json:"name" api:"required"`
// Campaign type (e.g., "KYC", "App")
Type string `json:"type" api:"required"`
// List of use cases with sample messages
UseCases []SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam `json:"useCases,omitzero" api:"required"`
// Comma-separated keywords that trigger help message (e.g., "HELP, INFO, SUPPORT")
HelpKeywords param.Opt[string] `json:"helpKeywords,omitzero"`
// Message sent when user requests help
HelpMessage param.Opt[string] `json:"helpMessage,omitzero"`
// Description of how messages flow in the campaign
MessageFlow param.Opt[string] `json:"messageFlow,omitzero"`
// Comma-separated keywords that trigger opt-in (e.g., "YES, START, SUBSCRIBE")
OptinKeywords param.Opt[string] `json:"optinKeywords,omitzero"`
// Message sent when user opts in
OptinMessage param.Opt[string] `json:"optinMessage,omitzero"`
// Comma-separated keywords that trigger opt-out (e.g., "STOP, UNSUBSCRIBE, END")
OptoutKeywords param.Opt[string] `json:"optoutKeywords,omitzero"`
// Message sent when user opts out
OptoutMessage param.Opt[string] `json:"optoutMessage,omitzero"`
// URL to privacy policy
PrivacyPolicyLink param.Opt[string] `json:"privacyPolicyLink,omitzero" format:"uri"`
// URL to terms and conditions
TermsAndConditionsLink param.Opt[string] `json:"termsAndConditionsLink,omitzero" format:"uri"`
// contains filtered or unexported fields
}
Campaign data for create or update operation
The properties Description, Name, Type, UseCases are required.
func (CampaignDataParam) MarshalJSON ¶ added in v0.7.0
func (r CampaignDataParam) MarshalJSON() (data []byte, err error)
func (*CampaignDataParam) UnmarshalJSON ¶ added in v0.7.0
func (r *CampaignDataParam) UnmarshalJSON(data []byte) error
type Client ¶
type Client struct {
Options []option.RequestOption
// Configure webhook endpoints for real-time event delivery
Webhooks WebhookService
// Invite, update, and manage organization users and roles
Users UserService
// Manage message templates with variable substitution
Templates TemplateService
// Manage organization profiles
Profiles ProfileService
// Manage and lookup phone numbers
Numbers NumberService
// Send and track SMS and WhatsApp messages
Messages MessageService
// Create, update, and manage customer contact lists
Contacts ContactService
// Retrieve account details
Me MeService
}
Client creates a struct with services and top level methods that help with interacting with the Sent 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_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 ContactDeleteParams ¶ added in v0.7.0
type ContactDeleteParams struct {
// Request to delete/dissociate a contact
Body ContactDeleteParamsBody
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ContactDeleteParams) MarshalJSON ¶ added in v0.7.0
func (r ContactDeleteParams) MarshalJSON() (data []byte, err error)
func (*ContactDeleteParams) UnmarshalJSON ¶ added in v0.7.0
func (r *ContactDeleteParams) UnmarshalJSON(data []byte) error
type ContactDeleteParamsBody ¶ added in v0.7.0
type ContactDeleteParamsBody struct {
MutationRequestParam
}
Request to delete/dissociate a contact
func (ContactDeleteParamsBody) MarshalJSON ¶ added in v0.7.0
func (r ContactDeleteParamsBody) MarshalJSON() (data []byte, err error)
type ContactGetParams ¶ added in v0.8.0
type ContactListParams ¶
type ContactListParams struct {
// Page number (1-indexed)
Page int64 `query:"page" api:"required" json:"-"`
// Number of items per page
PageSize int64 `query:"page_size" api:"required" json:"-"`
// Optional channel filter (sms, whatsapp)
Channel param.Opt[string] `query:"channel,omitzero" json:"-"`
// Optional phone number filter (alternative to list view)
Phone param.Opt[string] `query:"phone,omitzero" json:"-"`
// Optional search term for filtering contacts
Search param.Opt[string] `query:"search,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" 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 {
// Paginated list of contacts response
Data ContactListResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
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 ContactListResponseData ¶ added in v0.7.0
type ContactListResponseData struct {
// List of contacts
Contacts []ContactResponse `json:"contacts"`
// Pagination metadata for list responses
Pagination PaginationMeta `json:"pagination"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Contacts respjson.Field
Pagination respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Paginated list of contacts response
func (ContactListResponseData) RawJSON ¶ added in v0.7.0
func (r ContactListResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*ContactListResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *ContactListResponseData) UnmarshalJSON(data []byte) error
type ContactNewParams ¶ added in v0.7.0
type ContactNewParams struct {
// Phone number of the contact to create
PhoneNumber param.Opt[string] `json:"phone_number,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ContactNewParams) MarshalJSON ¶ added in v0.7.0
func (r ContactNewParams) MarshalJSON() (data []byte, err error)
func (*ContactNewParams) UnmarshalJSON ¶ added in v0.7.0
func (r *ContactNewParams) UnmarshalJSON(data []byte) error
type ContactResponse ¶ added in v0.9.0
type ContactResponse struct {
// Unique identifier for the contact
ID string `json:"id" format:"uuid"`
// Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
AvailableChannels string `json:"available_channels"`
// Country calling code (e.g., 1 for US/Canada)
CountryCode string `json:"country_code"`
// When the contact was created
CreatedAt time.Time `json:"created_at" format:"date-time"`
// Default messaging channel to use (e.g., "sms" or "whatsapp")
DefaultChannel string `json:"default_channel"`
// Phone number in E.164 format (e.g., +1234567890)
FormatE164 string `json:"format_e164"`
// Phone number in international format (e.g., +1 234-567-890)
FormatInternational string `json:"format_international"`
// Phone number in national format (e.g., (234) 567-890)
FormatNational string `json:"format_national"`
// Phone number in RFC 3966 format (e.g., tel:+1-234-567-890)
FormatRfc string `json:"format_rfc"`
// Whether this is an inherited contact (read-only)
IsInherited bool `json:"is_inherited"`
// Whether the contact has opted out of messaging
OptOut bool `json:"opt_out"`
// Phone number in original format
PhoneNumber string `json:"phone_number"`
// ISO 3166-1 alpha-2 country code (e.g., US, CA, GB)
RegionCode string `json:"region_code"`
// When the contact was last updated
UpdatedAt time.Time `json:"updated_at" api:"nullable" format:"date-time"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
AvailableChannels respjson.Field
CountryCode respjson.Field
CreatedAt respjson.Field
DefaultChannel respjson.Field
FormatE164 respjson.Field
FormatInternational respjson.Field
FormatNational respjson.Field
FormatRfc respjson.Field
IsInherited respjson.Field
OptOut respjson.Field
PhoneNumber respjson.Field
RegionCode respjson.Field
UpdatedAt respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Contact response for v3 API Uses snake_case for JSON property names
func (ContactResponse) RawJSON ¶ added in v0.9.0
func (r ContactResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*ContactResponse) UnmarshalJSON ¶ added in v0.9.0
func (r *ContactResponse) UnmarshalJSON(data []byte) error
type ContactService ¶
type ContactService struct {
Options []option.RequestOption
}
Create, update, and manage customer contact lists
ContactService contains methods and other services that help with interacting with the Sent 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) Delete ¶ added in v0.7.0
func (r *ContactService) Delete(ctx context.Context, id string, params ContactDeleteParams, opts ...option.RequestOption) (err error)
Dissociates a contact from the authenticated customer. Inherited contacts cannot be deleted.
func (*ContactService) Get ¶ added in v0.7.0
func (r *ContactService) Get(ctx context.Context, id string, query ContactGetParams, opts ...option.RequestOption) (res *APIResponseOfContact, err error)
Retrieves a specific contact by their unique identifier. Returns detailed contact information including phone formats, available channels, and opt-out status.
func (*ContactService) List ¶
func (r *ContactService) List(ctx context.Context, params ContactListParams, opts ...option.RequestOption) (res *ContactListResponse, err error)
Retrieves a paginated list of contacts for the authenticated customer. Supports filtering by search term, channel, or phone number.
func (*ContactService) New ¶ added in v0.7.0
func (r *ContactService) New(ctx context.Context, params ContactNewParams, opts ...option.RequestOption) (res *APIResponseOfContact, err error)
Creates a new contact by phone number and associates it with the authenticated customer.
func (*ContactService) Update ¶ added in v0.7.0
func (r *ContactService) Update(ctx context.Context, id string, params ContactUpdateParams, opts ...option.RequestOption) (res *APIResponseOfContact, err error)
Updates a contact's default channel and/or opt-out status. Inherited contacts cannot be updated.
type ContactUpdateParams ¶ added in v0.7.0
type ContactUpdateParams struct {
// Default messaging channel: "sms" or "whatsapp"
DefaultChannel param.Opt[string] `json:"default_channel,omitzero"`
// Whether the contact has opted out of messaging
OptOut param.Opt[bool] `json:"opt_out,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ContactUpdateParams) MarshalJSON ¶ added in v0.7.0
func (r ContactUpdateParams) MarshalJSON() (data []byte, err error)
func (*ContactUpdateParams) UnmarshalJSON ¶ added in v0.7.0
func (r *ContactUpdateParams) UnmarshalJSON(data []byte) error
type DestinationCountry ¶ added in v0.7.0
type DestinationCountry struct {
ID string `json:"id"`
IsMain bool `json:"isMain"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
IsMain respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (DestinationCountry) RawJSON ¶ added in v0.7.0
func (r DestinationCountry) RawJSON() string
Returns the unmodified JSON received from the API
func (DestinationCountry) ToParam ¶ added in v0.7.0
func (r DestinationCountry) ToParam() DestinationCountryParam
ToParam converts this DestinationCountry to a DestinationCountryParam.
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 DestinationCountryParam.Overrides()
func (*DestinationCountry) UnmarshalJSON ¶ added in v0.7.0
func (r *DestinationCountry) UnmarshalJSON(data []byte) error
type DestinationCountryParam ¶ added in v0.7.0
type DestinationCountryParam struct {
ID param.Opt[string] `json:"id,omitzero"`
IsMain param.Opt[bool] `json:"isMain,omitzero"`
// contains filtered or unexported fields
}
func (DestinationCountryParam) MarshalJSON ¶ added in v0.7.0
func (r DestinationCountryParam) MarshalJSON() (data []byte, err error)
func (*DestinationCountryParam) UnmarshalJSON ¶ added in v0.7.0
func (r *DestinationCountryParam) UnmarshalJSON(data []byte) error
type ErrorDetail ¶ added in v0.12.0
type ErrorDetail struct {
// Machine-readable error code (e.g., "RESOURCE_001")
Code string `json:"code"`
// Additional validation error details (field-level errors)
Details map[string][]string `json:"details" api:"nullable"`
// URL to documentation about this error
DocURL string `json:"doc_url" api:"nullable"`
// Human-readable error message
Message string `json:"message"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Code respjson.Field
Details respjson.Field
DocURL respjson.Field
Message respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Error information
func (ErrorDetail) RawJSON ¶ added in v0.12.0
func (r ErrorDetail) RawJSON() string
Returns the unmodified JSON received from the API
func (*ErrorDetail) UnmarshalJSON ¶ added in v0.12.0
func (r *ErrorDetail) UnmarshalJSON(data []byte) error
type MeGetParams ¶ added in v0.8.0
type MeGetResponse ¶ added in v0.7.0
type MeGetResponse struct {
// Account response for GET /v3/me endpoint. Returns organization (with profiles),
// user (standalone), or profile (child of an organization) data depending on the
// API key type. Always includes messaging channel configuration.
Data MeGetResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (MeGetResponse) RawJSON ¶ added in v0.7.0
func (r MeGetResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*MeGetResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *MeGetResponse) UnmarshalJSON(data []byte) error
type MeGetResponseData ¶ added in v0.7.0
type MeGetResponseData struct {
// Customer ID (organization, account, or profile)
ID string `json:"id" format:"uuid"`
// Messaging channel configuration. All three channels are always present. Each
// channel has a "configured" flag; configured channels expose additional details.
Channels MeGetResponseDataChannels `json:"channels"`
// When the account was created
CreatedAt time.Time `json:"created_at" format:"date-time"`
// Account description
Description string `json:"description" api:"nullable"`
// Contact email address
Email string `json:"email" api:"nullable"`
// Account icon URL
Icon string `json:"icon" api:"nullable"`
// Account name
Name string `json:"name"`
// Organization ID (only for profile type — the parent organization)
OrganizationID string `json:"organization_id" api:"nullable" format:"uuid"`
// List of profiles (populated for organization type, empty for user and profile
// types)
Profiles []MeGetResponseDataProfile `json:"profiles"`
// Profile configuration settings
Settings ProfileSettings `json:"settings" api:"nullable"`
// Short name / abbreviation (only for profile type)
ShortName string `json:"short_name" api:"nullable"`
// Profile status (only for profile type): incomplete, pending_review, approved,
// etc.
Status string `json:"status" api:"nullable"`
// Account type: "organization" (has profiles), "user" (no profiles), or "profile"
// (child of an organization)
Type string `json:"type"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Channels respjson.Field
CreatedAt respjson.Field
Description respjson.Field
Email respjson.Field
Icon respjson.Field
Name respjson.Field
OrganizationID respjson.Field
Profiles respjson.Field
Settings respjson.Field
ShortName respjson.Field
Status respjson.Field
Type respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Account response for GET /v3/me endpoint. Returns organization (with profiles), user (standalone), or profile (child of an organization) data depending on the API key type. Always includes messaging channel configuration.
func (MeGetResponseData) RawJSON ¶ added in v0.7.0
func (r MeGetResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*MeGetResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *MeGetResponseData) UnmarshalJSON(data []byte) error
type MeGetResponseDataChannels ¶ added in v0.8.0
type MeGetResponseDataChannels struct {
// RCS channel configuration. When configured, includes the RCS phone number.
Rcs MeGetResponseDataChannelsRcs `json:"rcs"`
// SMS channel configuration. When configured, includes the sending phone number.
SMS MeGetResponseDataChannelsSMS `json:"sms"`
// WhatsApp Business channel configuration. When configured, includes the WhatsApp
// phone number and business name.
Whatsapp MeGetResponseDataChannelsWhatsapp `json:"whatsapp"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Rcs respjson.Field
SMS respjson.Field
Whatsapp respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Messaging channel configuration. All three channels are always present. Each channel has a "configured" flag; configured channels expose additional details.
func (MeGetResponseDataChannels) RawJSON ¶ added in v0.8.0
func (r MeGetResponseDataChannels) RawJSON() string
Returns the unmodified JSON received from the API
func (*MeGetResponseDataChannels) UnmarshalJSON ¶ added in v0.8.0
func (r *MeGetResponseDataChannels) UnmarshalJSON(data []byte) error
type MeGetResponseDataChannelsRcs ¶ added in v0.8.0
type MeGetResponseDataChannelsRcs struct {
// Whether RCS is configured for this account
Configured bool `json:"configured"`
// RCS-enabled phone number in E.164 format
PhoneNumber string `json:"phone_number" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Configured respjson.Field
PhoneNumber respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
RCS channel configuration. When configured, includes the RCS phone number.
func (MeGetResponseDataChannelsRcs) RawJSON ¶ added in v0.8.0
func (r MeGetResponseDataChannelsRcs) RawJSON() string
Returns the unmodified JSON received from the API
func (*MeGetResponseDataChannelsRcs) UnmarshalJSON ¶ added in v0.8.0
func (r *MeGetResponseDataChannelsRcs) UnmarshalJSON(data []byte) error
type MeGetResponseDataChannelsSMS ¶ added in v0.8.0
type MeGetResponseDataChannelsSMS struct {
// Whether SMS is configured for this account
Configured bool `json:"configured"`
// Sending phone number in E.164 format
PhoneNumber string `json:"phone_number" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Configured respjson.Field
PhoneNumber respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
SMS channel configuration. When configured, includes the sending phone number.
func (MeGetResponseDataChannelsSMS) RawJSON ¶ added in v0.8.0
func (r MeGetResponseDataChannelsSMS) RawJSON() string
Returns the unmodified JSON received from the API
func (*MeGetResponseDataChannelsSMS) UnmarshalJSON ¶ added in v0.8.0
func (r *MeGetResponseDataChannelsSMS) UnmarshalJSON(data []byte) error
type MeGetResponseDataChannelsWhatsapp ¶ added in v0.8.0
type MeGetResponseDataChannelsWhatsapp struct {
// WhatsApp Business display name
BusinessName string `json:"business_name" api:"nullable"`
// Whether WhatsApp is configured for this account
Configured bool `json:"configured"`
// WhatsApp phone number in E.164 format
PhoneNumber string `json:"phone_number" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
BusinessName respjson.Field
Configured respjson.Field
PhoneNumber respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
WhatsApp Business channel configuration. When configured, includes the WhatsApp phone number and business name.
func (MeGetResponseDataChannelsWhatsapp) RawJSON ¶ added in v0.8.0
func (r MeGetResponseDataChannelsWhatsapp) RawJSON() string
Returns the unmodified JSON received from the API
func (*MeGetResponseDataChannelsWhatsapp) UnmarshalJSON ¶ added in v0.8.0
func (r *MeGetResponseDataChannelsWhatsapp) UnmarshalJSON(data []byte) error
type MeGetResponseDataProfile ¶ added in v0.7.0
type MeGetResponseDataProfile struct {
// Profile unique identifier
ID string `json:"id" format:"uuid"`
// When the profile was created
CreatedAt time.Time `json:"created_at" format:"date-time"`
// Profile description
Description string `json:"description" api:"nullable"`
// Profile icon URL
Icon string `json:"icon" api:"nullable"`
// Profile name
Name string `json:"name"`
// User's role in this profile: admin, billing, developer (inherited from
// organization if not explicitly set)
Role string `json:"role" api:"nullable"`
// Profile configuration settings
Settings ProfileSettings `json:"settings"`
// Profile short name (abbreviation)
ShortName string `json:"short_name" api:"nullable"`
// Profile setup status: incomplete, pending_review, approved, rejected
Status string `json:"status" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
CreatedAt respjson.Field
Description respjson.Field
Icon respjson.Field
Name respjson.Field
Role respjson.Field
Settings respjson.Field
ShortName respjson.Field
Status respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Profile (sender profile) response for v3 API
func (MeGetResponseDataProfile) RawJSON ¶ added in v0.7.0
func (r MeGetResponseDataProfile) RawJSON() string
Returns the unmodified JSON received from the API
func (*MeGetResponseDataProfile) UnmarshalJSON ¶ added in v0.7.0
func (r *MeGetResponseDataProfile) UnmarshalJSON(data []byte) error
type MeService ¶ added in v0.7.0
type MeService struct {
Options []option.RequestOption
}
Retrieve account details
MeService contains methods and other services that help with interacting with the Sent 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 NewMeService method instead.
func NewMeService ¶ added in v0.7.0
func NewMeService(opts ...option.RequestOption) (r MeService)
NewMeService 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 (*MeService) Get ¶ added in v0.7.0
func (r *MeService) Get(ctx context.Context, query MeGetParams, opts ...option.RequestOption) (res *MeGetResponse, err error)
Returns the account associated with the provided API key. The response includes account identity, contact information, messaging channel configuration, and — depending on the account type — either a list of child profiles or the profile's own settings.
**Account types:**
- `organization` — Has child profiles. The `profiles` array is populated.
- `user` — Standalone account with no profiles.
- `profile` — Child of an organization. Includes `organization_id`, `short_name`, `status`, and `settings`.
**Channels:** The `channels` object always includes `sms`, `whatsapp`, and `rcs`. Each channel has a `configured` boolean. Configured channels expose additional details such as `phone_number`.
type MessageGetActivitiesParams ¶ added in v0.8.0
type MessageGetActivitiesResponse ¶ added in v0.7.0
type MessageGetActivitiesResponse struct {
// Response for GET /messages/{id}/activities
Data MessageGetActivitiesResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (MessageGetActivitiesResponse) RawJSON ¶ added in v0.7.0
func (r MessageGetActivitiesResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetActivitiesResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetActivitiesResponse) UnmarshalJSON(data []byte) error
type MessageGetActivitiesResponseData ¶ added in v0.7.0
type MessageGetActivitiesResponseData struct {
// List of activity events ordered by most recent first
Activities []MessageGetActivitiesResponseDataActivity `json:"activities"`
// The message ID these activities belong to
MessageID string `json:"message_id" format:"uuid"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Activities respjson.Field
MessageID respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Response for GET /messages/{id}/activities
func (MessageGetActivitiesResponseData) RawJSON ¶ added in v0.7.0
func (r MessageGetActivitiesResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetActivitiesResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetActivitiesResponseData) UnmarshalJSON(data []byte) error
type MessageGetActivitiesResponseDataActivity ¶ added in v0.7.0
type MessageGetActivitiesResponseDataActivity struct {
// Active contact markup applied on top of the channel cost, formatted to 4 decimal
// places.
ActiveContactPrice string `json:"active_contact_price" api:"nullable"`
// Human-readable description of the activity
Description string `json:"description"`
// Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
// 4 decimal places.
Price string `json:"price" api:"nullable"`
// Activity status (e.g., QUEUED, PROCESSED, ROUTED, SENT, DELIVERED, FAILED)
Status string `json:"status"`
// When this activity occurred
Timestamp time.Time `json:"timestamp" format:"date-time"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ActiveContactPrice respjson.Field
Description respjson.Field
Price respjson.Field
Status respjson.Field
Timestamp respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
A single message activity event for v3 API
func (MessageGetActivitiesResponseDataActivity) RawJSON ¶ added in v0.7.0
func (r MessageGetActivitiesResponseDataActivity) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetActivitiesResponseDataActivity) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetActivitiesResponseDataActivity) UnmarshalJSON(data []byte) error
type MessageGetStatusParams ¶ added in v0.8.0
type MessageGetStatusResponse ¶ added in v0.7.0
type MessageGetStatusResponse struct {
// Message response for v3 API — same shape as v2 with snake_case JSON conventions
Data MessageGetStatusResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (MessageGetStatusResponse) RawJSON ¶ added in v0.7.0
func (r MessageGetStatusResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetStatusResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetStatusResponse) UnmarshalJSON(data []byte) error
type MessageGetStatusResponseData ¶ added in v0.7.0
type MessageGetStatusResponseData struct {
ID string `json:"id" format:"uuid"`
ActiveContactPrice float64 `json:"active_contact_price" api:"nullable"`
Channel string `json:"channel"`
ContactID string `json:"contact_id" format:"uuid"`
CreatedAt time.Time `json:"created_at" format:"date-time"`
CustomerID string `json:"customer_id" format:"uuid"`
Events []MessageGetStatusResponseDataEvent `json:"events" api:"nullable"`
// Structured message body format for database storage. Preserves channel-specific
// components (header, body, footer, buttons).
MessageBody MessageGetStatusResponseDataMessageBody `json:"message_body" api:"nullable"`
Phone string `json:"phone"`
PhoneInternational string `json:"phone_international"`
Price float64 `json:"price" api:"nullable"`
RegionCode string `json:"region_code"`
Status string `json:"status"`
TemplateCategory string `json:"template_category"`
TemplateID string `json:"template_id" api:"nullable" format:"uuid"`
TemplateName string `json:"template_name"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
ActiveContactPrice respjson.Field
Channel respjson.Field
ContactID respjson.Field
CreatedAt respjson.Field
CustomerID respjson.Field
Events respjson.Field
MessageBody respjson.Field
Phone respjson.Field
PhoneInternational respjson.Field
Price 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:"-"`
}
Message response for v3 API — same shape as v2 with snake_case JSON conventions
func (MessageGetStatusResponseData) RawJSON ¶ added in v0.7.0
func (r MessageGetStatusResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetStatusResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetStatusResponseData) UnmarshalJSON(data []byte) error
type MessageGetStatusResponseDataEvent ¶ added in v0.7.0
type MessageGetStatusResponseDataEvent struct {
Description string `json:"description" api:"nullable"`
Status string `json:"status"`
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 (v3)
func (MessageGetStatusResponseDataEvent) RawJSON ¶ added in v0.7.0
func (r MessageGetStatusResponseDataEvent) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetStatusResponseDataEvent) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetStatusResponseDataEvent) UnmarshalJSON(data []byte) error
type MessageGetStatusResponseDataMessageBody ¶ added in v0.7.0
type MessageGetStatusResponseDataMessageBody struct {
Buttons []MessageGetStatusResponseDataMessageBodyButton `json:"buttons" api:"nullable"`
Content string `json:"content"`
Header string `json:"header" api:"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:"-"`
}
Structured message body format for database storage. Preserves channel-specific components (header, body, footer, buttons).
func (MessageGetStatusResponseDataMessageBody) RawJSON ¶ added in v0.7.0
func (r MessageGetStatusResponseDataMessageBody) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetStatusResponseDataMessageBody) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetStatusResponseDataMessageBody) UnmarshalJSON(data []byte) error
type MessageGetStatusResponseDataMessageBodyButton ¶ added in v0.7.0
type MessageGetStatusResponseDataMessageBodyButton 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 (MessageGetStatusResponseDataMessageBodyButton) RawJSON ¶ added in v0.7.0
func (r MessageGetStatusResponseDataMessageBodyButton) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageGetStatusResponseDataMessageBodyButton) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageGetStatusResponseDataMessageBodyButton) UnmarshalJSON(data []byte) error
type MessageSendParams ¶ added in v0.7.0
type MessageSendParams struct {
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// Channels to broadcast on, e.g. ["whatsapp", "sms"]. Each channel produces a
// separate message per recipient. "sent" = auto-detect, "rcs" = reserved
// (skipped). Defaults to ["sent"] (auto-detect) if omitted.
Channel []string `json:"channel,omitzero"`
// SDK-style template reference: resolve by ID or by name, with optional
// parameters.
Template MessageSendParamsTemplate `json:"template,omitzero"`
// List of recipient phone numbers in E.164 format (multi-recipient fan-out)
To []string `json:"to,omitzero"`
// contains filtered or unexported fields
}
func (MessageSendParams) MarshalJSON ¶ added in v0.7.0
func (r MessageSendParams) MarshalJSON() (data []byte, err error)
func (*MessageSendParams) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageSendParams) UnmarshalJSON(data []byte) error
type MessageSendParamsTemplate ¶ added in v0.7.0
type MessageSendParamsTemplate struct {
// Template ID (mutually exclusive with name)
ID param.Opt[string] `json:"id,omitzero" format:"uuid"`
// Template name (mutually exclusive with id)
Name param.Opt[string] `json:"name,omitzero"`
// Template variable parameters for personalization
Parameters map[string]string `json:"parameters,omitzero"`
// contains filtered or unexported fields
}
SDK-style template reference: resolve by ID or by name, with optional parameters.
func (MessageSendParamsTemplate) MarshalJSON ¶ added in v0.7.0
func (r MessageSendParamsTemplate) MarshalJSON() (data []byte, err error)
func (*MessageSendParamsTemplate) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageSendParamsTemplate) UnmarshalJSON(data []byte) error
type MessageSendResponse ¶ added in v0.7.0
type MessageSendResponse struct {
// Response for the multi-recipient send message endpoint
Data MessageSendResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (MessageSendResponse) RawJSON ¶ added in v0.7.0
func (r MessageSendResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageSendResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageSendResponse) UnmarshalJSON(data []byte) error
type MessageSendResponseData ¶ added in v0.7.0
type MessageSendResponseData struct {
// Per-recipient message results
Recipients []MessageSendResponseDataRecipient `json:"recipients"`
// Overall request status: "QUEUED" when the batch has been accepted and published
// to Kafka.
Status string `json:"status"`
// Template ID that was used
TemplateID string `json:"template_id" format:"uuid"`
// Template display name
TemplateName string `json:"template_name"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Recipients respjson.Field
Status respjson.Field
TemplateID respjson.Field
TemplateName respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Response for the multi-recipient send message endpoint
func (MessageSendResponseData) RawJSON ¶ added in v0.7.0
func (r MessageSendResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageSendResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageSendResponseData) UnmarshalJSON(data []byte) error
type MessageSendResponseDataRecipient ¶ added in v0.7.0
type MessageSendResponseDataRecipient struct {
// Resolved template body text for this recipient's channel, or null for
// auto-detect
Body string `json:"body" api:"nullable"`
// Channel this message will be sent on (e.g. "sms", "whatsapp"), or null for
// auto-detect
Channel string `json:"channel" api:"nullable"`
// Unique message identifier for tracking this recipient's message
MessageID string `json:"message_id" format:"uuid"`
// Phone number in E.164 format
To string `json:"to"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Body respjson.Field
Channel respjson.Field
MessageID respjson.Field
To respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Per-recipient result in the send message response
func (MessageSendResponseDataRecipient) RawJSON ¶ added in v0.7.0
func (r MessageSendResponseDataRecipient) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageSendResponseDataRecipient) UnmarshalJSON ¶ added in v0.7.0
func (r *MessageSendResponseDataRecipient) UnmarshalJSON(data []byte) error
type MessageService ¶
type MessageService struct {
Options []option.RequestOption
}
Send and track SMS and WhatsApp messages
MessageService contains methods and other services that help with interacting with the Sent 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) GetActivities ¶ added in v0.7.0
func (r *MessageService) GetActivities(ctx context.Context, id string, query MessageGetActivitiesParams, opts ...option.RequestOption) (res *MessageGetActivitiesResponse, err error)
Retrieves the activity log for a specific message. Activities track the message lifecycle including acceptance, processing, sending, delivery, and any errors.
func (*MessageService) GetStatus ¶ added in v0.7.0
func (r *MessageService) GetStatus(ctx context.Context, id string, query MessageGetStatusParams, opts ...option.RequestOption) (res *MessageGetStatusResponse, err error)
Retrieves the current status and details of a message by ID. Includes delivery status, timestamps, and error information if applicable.
func (*MessageService) Send ¶ added in v0.7.0
func (r *MessageService) Send(ctx context.Context, params MessageSendParams, opts ...option.RequestOption) (res *MessageSendResponse, err error)
Sends a message to one or more recipients using a template. Supports multi-channel broadcast — when multiple channels are specified (e.g. ["sms", "whatsapp"]), a separate message is created for each (recipient, channel) pair. Returns immediately with per-recipient message IDs for async tracking via webhooks or the GET /messages/{id} endpoint.
type MessagingUseCaseUs ¶ added in v0.7.0
type MessagingUseCaseUs string
const ( MessagingUseCaseUsMarketing MessagingUseCaseUs = "MARKETING" MessagingUseCaseUsAccountNotification MessagingUseCaseUs = "ACCOUNT_NOTIFICATION" MessagingUseCaseUsCustomerCare MessagingUseCaseUs = "CUSTOMER_CARE" MessagingUseCaseUsFraudAlert MessagingUseCaseUs = "FRAUD_ALERT" MessagingUseCaseUsTwoFa MessagingUseCaseUs = "TWO_FA" MessagingUseCaseUsDeliveryNotification MessagingUseCaseUs = "DELIVERY_NOTIFICATION" MessagingUseCaseUsSecurityAlert MessagingUseCaseUs = "SECURITY_ALERT" MessagingUseCaseUsM2M MessagingUseCaseUs = "M2M" MessagingUseCaseUsMixed MessagingUseCaseUs = "MIXED" MessagingUseCaseUsHigherEducation MessagingUseCaseUs = "HIGHER_EDUCATION" MessagingUseCaseUsPollingVoting MessagingUseCaseUs = "POLLING_VOTING" MessagingUseCaseUsPublicServiceAnnouncement MessagingUseCaseUs = "PUBLIC_SERVICE_ANNOUNCEMENT" MessagingUseCaseUsLowVolume MessagingUseCaseUs = "LOW_VOLUME" )
type MutationRequestParam ¶ added in v0.7.0
type MutationRequestParam struct {
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
// contains filtered or unexported fields
}
func (MutationRequestParam) MarshalJSON ¶ added in v0.7.0
func (r MutationRequestParam) MarshalJSON() (data []byte, err error)
func (*MutationRequestParam) UnmarshalJSON ¶ added in v0.7.0
func (r *MutationRequestParam) UnmarshalJSON(data []byte) error
type NumberLookupParams ¶ added in v0.9.0
type NumberLookupResponse ¶ added in v0.9.0
type NumberLookupResponse struct {
// The response data (null if error)
Data NumberLookupResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (NumberLookupResponse) RawJSON ¶ added in v0.9.0
func (r NumberLookupResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*NumberLookupResponse) UnmarshalJSON ¶ added in v0.9.0
func (r *NumberLookupResponse) UnmarshalJSON(data []byte) error
type NumberLookupResponseData ¶ added in v0.9.0
type NumberLookupResponseData struct {
CarrierName string `json:"carrier_name" api:"nullable"`
CountryCode string `json:"country_code" api:"nullable"`
IsPorted bool `json:"is_ported" api:"nullable"`
IsValid bool `json:"is_valid"`
IsVoip bool `json:"is_voip" api:"nullable"`
LineType string `json:"line_type" api:"nullable"`
MobileCountryCode string `json:"mobile_country_code" api:"nullable"`
MobileNetworkCode string `json:"mobile_network_code" api:"nullable"`
PhoneNumber string `json:"phone_number"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
CarrierName respjson.Field
CountryCode respjson.Field
IsPorted respjson.Field
IsValid respjson.Field
IsVoip respjson.Field
LineType respjson.Field
MobileCountryCode respjson.Field
MobileNetworkCode respjson.Field
PhoneNumber respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
The response data (null if error)
func (NumberLookupResponseData) RawJSON ¶ added in v0.9.0
func (r NumberLookupResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*NumberLookupResponseData) UnmarshalJSON ¶ added in v0.9.0
func (r *NumberLookupResponseData) UnmarshalJSON(data []byte) error
type NumberService ¶ added in v0.9.0
type NumberService struct {
Options []option.RequestOption
}
Manage and lookup phone numbers
NumberService contains methods and other services that help with interacting with the Sent 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 NewNumberService method instead.
func NewNumberService ¶ added in v0.9.0
func NewNumberService(opts ...option.RequestOption) (r NumberService)
NewNumberService 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 (*NumberService) Lookup ¶ added in v0.9.0
func (r *NumberService) Lookup(ctx context.Context, phoneNumber string, query NumberLookupParams, opts ...option.RequestOption) (res *NumberLookupResponse, err error)
Retrieves detailed information about a phone number including carrier, line type, porting status, and VoIP detection. Uses the customer's messaging provider for rich data, with fallback to the internal index.
type PaginationMeta ¶ added in v0.7.0
type PaginationMeta struct {
// Cursor-based pagination pointers
Cursors PaginationMetaCursors `json:"cursors" api:"nullable"`
// Whether there are more pages after this one
HasMore bool `json:"has_more"`
// Current page number (1-indexed)
Page int64 `json:"page"`
// Number of items per page
PageSize int64 `json:"page_size"`
// Total number of items across all pages
TotalCount int64 `json:"total_count"`
// Total number of pages
TotalPages int64 `json:"total_pages"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Cursors respjson.Field
HasMore 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:"-"`
}
Pagination metadata for list responses
func (PaginationMeta) RawJSON ¶ added in v0.7.0
func (r PaginationMeta) RawJSON() string
Returns the unmodified JSON received from the API
func (*PaginationMeta) UnmarshalJSON ¶ added in v0.7.0
func (r *PaginationMeta) UnmarshalJSON(data []byte) error
type PaginationMetaCursors ¶ added in v0.7.0
type PaginationMetaCursors struct {
// Cursor to fetch the next page
After string `json:"after" api:"nullable"`
// Cursor to fetch the previous page
Before string `json:"before" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
After respjson.Field
Before respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Cursor-based pagination pointers
func (PaginationMetaCursors) RawJSON ¶ added in v0.7.0
func (r PaginationMetaCursors) RawJSON() string
Returns the unmodified JSON received from the API
func (*PaginationMetaCursors) UnmarshalJSON ¶ added in v0.7.0
func (r *PaginationMetaCursors) UnmarshalJSON(data []byte) error
type PaymentDetailsParam ¶ added in v0.9.0
type PaymentDetailsParam struct {
// Card number (digits only, 13–19 characters)
CardNumber string `json:"card_number" api:"required"`
// Card security code (3–4 digits)
Cvc string `json:"cvc" api:"required"`
// Card expiry date in MM/YY format (e.g. "09/27")
Expiry string `json:"expiry" api:"required"`
// Billing ZIP / postal code associated with the card
ZipCode string `json:"zip_code" api:"required"`
// contains filtered or unexported fields
}
Payment card details for a profile. Accepted when billing_model is "profile" or "profile_and_organization". These details are not stored on our servers and will be forwarded to the payment processor.
The properties CardNumber, Cvc, Expiry, ZipCode are required.
func (PaymentDetailsParam) MarshalJSON ¶ added in v0.9.0
func (r PaymentDetailsParam) MarshalJSON() (data []byte, err error)
func (*PaymentDetailsParam) UnmarshalJSON ¶ added in v0.9.0
func (r *PaymentDetailsParam) UnmarshalJSON(data []byte) error
type ProfileCampaignDeleteParams ¶ added in v0.9.0
type ProfileCampaignDeleteParams struct {
ProfileID string `path:"profileId" api:"required" format:"uuid" json:"-"`
// Request to delete a campaign from a brand
Body ProfileCampaignDeleteParamsBody
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ProfileCampaignDeleteParams) MarshalJSON ¶ added in v0.9.0
func (r ProfileCampaignDeleteParams) MarshalJSON() (data []byte, err error)
func (*ProfileCampaignDeleteParams) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileCampaignDeleteParams) UnmarshalJSON(data []byte) error
type ProfileCampaignDeleteParamsBody ¶ added in v0.9.0
type ProfileCampaignDeleteParamsBody struct {
MutationRequestParam
}
Request to delete a campaign from a brand
func (ProfileCampaignDeleteParamsBody) MarshalJSON ¶ added in v0.9.0
func (r ProfileCampaignDeleteParamsBody) MarshalJSON() (data []byte, err error)
type ProfileCampaignListParams ¶ added in v0.9.0
type ProfileCampaignListResponse ¶ added in v0.9.0
type ProfileCampaignListResponse struct {
// The response data (null if error)
Data []TcrCampaignWithUseCases `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (ProfileCampaignListResponse) RawJSON ¶ added in v0.9.0
func (r ProfileCampaignListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileCampaignListResponse) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileCampaignListResponse) UnmarshalJSON(data []byte) error
type ProfileCampaignNewParams ¶ added in v0.9.0
type ProfileCampaignNewParams struct {
// Campaign data for create or update operation
Campaign CampaignDataParam `json:"campaign,omitzero" api:"required"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ProfileCampaignNewParams) MarshalJSON ¶ added in v0.9.0
func (r ProfileCampaignNewParams) MarshalJSON() (data []byte, err error)
func (*ProfileCampaignNewParams) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileCampaignNewParams) UnmarshalJSON(data []byte) error
type ProfileCampaignService ¶ added in v0.9.0
type ProfileCampaignService struct {
Options []option.RequestOption
}
Manage organization profiles
ProfileCampaignService contains methods and other services that help with interacting with the Sent 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 NewProfileCampaignService method instead.
func NewProfileCampaignService ¶ added in v0.9.0
func NewProfileCampaignService(opts ...option.RequestOption) (r ProfileCampaignService)
NewProfileCampaignService 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 (*ProfileCampaignService) Delete ¶ added in v0.9.0
func (r *ProfileCampaignService) Delete(ctx context.Context, campaignID string, params ProfileCampaignDeleteParams, opts ...option.RequestOption) (err error)
Deletes a campaign by ID from the brand of the specified profile. The profile must belong to the authenticated organization.
func (*ProfileCampaignService) List ¶ added in v0.9.0
func (r *ProfileCampaignService) List(ctx context.Context, profileID string, query ProfileCampaignListParams, opts ...option.RequestOption) (res *ProfileCampaignListResponse, err error)
Retrieves all campaigns linked to the profile's brand, including use cases and sample messages. Returns inherited campaigns if inherit_tcr_campaign=true.
func (*ProfileCampaignService) New ¶ added in v0.9.0
func (r *ProfileCampaignService) New(ctx context.Context, profileID string, params ProfileCampaignNewParams, opts ...option.RequestOption) (res *APIResponseOfTcrCampaignWithUseCases, err error)
Creates a new campaign scoped under the brand of the specified profile. Each campaign must include at least one use case with sample messages.
func (*ProfileCampaignService) Update ¶ added in v0.9.0
func (r *ProfileCampaignService) Update(ctx context.Context, campaignID string, params ProfileCampaignUpdateParams, opts ...option.RequestOption) (res *APIResponseOfTcrCampaignWithUseCases, err error)
Updates an existing campaign under the brand of the specified profile. Cannot update campaigns that have already been submitted to TCR.
type ProfileCampaignUpdateParams ¶ added in v0.9.0
type ProfileCampaignUpdateParams struct {
ProfileID string `path:"profileId" api:"required" format:"uuid" json:"-"`
// Campaign data for create or update operation
Campaign CampaignDataParam `json:"campaign,omitzero" api:"required"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ProfileCampaignUpdateParams) MarshalJSON ¶ added in v0.9.0
func (r ProfileCampaignUpdateParams) MarshalJSON() (data []byte, err error)
func (*ProfileCampaignUpdateParams) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileCampaignUpdateParams) UnmarshalJSON(data []byte) error
type ProfileCompleteParams ¶ added in v0.7.0
type ProfileCompleteParams struct {
// Webhook URL to call when profile completion finishes (success or failure)
WebHookURL string `json:"webHookUrl" api:"required" format:"uri"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ProfileCompleteParams) MarshalJSON ¶ added in v0.7.0
func (r ProfileCompleteParams) MarshalJSON() (data []byte, err error)
func (*ProfileCompleteParams) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileCompleteParams) UnmarshalJSON(data []byte) error
type ProfileCompleteResponse ¶ added in v0.7.0
type ProfileCompleteResponse = any
type ProfileDeleteParams ¶ added in v0.7.0
type ProfileDeleteParams struct {
// Request to delete a profile
Body ProfileDeleteParamsBody
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (ProfileDeleteParams) MarshalJSON ¶ added in v0.7.0
func (r ProfileDeleteParams) MarshalJSON() (data []byte, err error)
func (*ProfileDeleteParams) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileDeleteParams) UnmarshalJSON(data []byte) error
type ProfileDeleteParamsBody ¶ added in v0.8.0
type ProfileDeleteParamsBody struct {
MutationRequestParam
}
Request to delete a profile
func (ProfileDeleteParamsBody) MarshalJSON ¶ added in v0.8.0
func (r ProfileDeleteParamsBody) MarshalJSON() (data []byte, err error)
type ProfileDetail ¶ added in v0.7.0
type ProfileDetail struct {
// Profile unique identifier
ID string `json:"id" format:"uuid"`
// Whether contacts are shared across profiles in the organization
AllowContactSharing bool `json:"allow_contact_sharing"`
// Whether number changes are allowed during onboarding
AllowNumberChangeDuringOnboarding bool `json:"allow_number_change_during_onboarding" api:"nullable"`
// Whether templates are shared across profiles in the organization
AllowTemplateSharing bool `json:"allow_template_sharing"`
// Billing contact info returned in profile responses
BillingContact ProfileDetailBillingContact `json:"billing_contact" api:"nullable"`
// Billing model: profile, organization, or profile_and_organization
BillingModel string `json:"billing_model"`
// Brand response with nested contact, business, and compliance sections — mirrors
// the request structure.
Brand ProfileDetailBrand `json:"brand" api:"nullable"`
// When the profile was created
CreatedAt time.Time `json:"created_at" format:"date-time"`
// Profile description
Description string `json:"description" api:"nullable"`
// Profile email (inherited from organization)
Email string `json:"email" api:"nullable"`
// Profile icon URL
Icon string `json:"icon" api:"nullable"`
// Whether this profile inherits contacts from the organization
InheritContacts bool `json:"inherit_contacts"`
// Whether this profile inherits TCR brand from the organization
InheritTcrBrand bool `json:"inherit_tcr_brand"`
// Whether this profile inherits TCR campaign from the organization
InheritTcrCampaign bool `json:"inherit_tcr_campaign"`
// Whether this profile inherits templates from the organization
InheritTemplates bool `json:"inherit_templates"`
// Profile name
Name string `json:"name"`
// Parent organization ID
OrganizationID string `json:"organization_id" api:"nullable" format:"uuid"`
// Direct SMS phone number
SendingPhoneNumber string `json:"sending_phone_number" api:"nullable"`
// Reference to another profile for SMS/Telnyx configuration
SendingPhoneNumberProfileID string `json:"sending_phone_number_profile_id" api:"nullable" format:"uuid"`
// Reference to another profile for WhatsApp configuration
SendingWhatsappNumberProfileID string `json:"sending_whatsapp_number_profile_id" api:"nullable" format:"uuid"`
// Profile short name/abbreviation. 3–11 characters: letters, numbers, and spaces
// only, with at least one letter.
ShortName string `json:"short_name" api:"nullable"`
// Profile setup status: incomplete, pending_review, approved, rejected
Status string `json:"status"`
// When the profile was last updated
UpdatedAt time.Time `json:"updated_at" api:"nullable" format:"date-time"`
// WhatsApp Business Account ID associated with this profile. Present whether the
// WABA is inherited from the organization or configured directly.
WabaID string `json:"waba_id" api:"nullable"`
// Direct WhatsApp phone number
WhatsappPhoneNumber string `json:"whatsapp_phone_number" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
AllowContactSharing respjson.Field
AllowNumberChangeDuringOnboarding respjson.Field
AllowTemplateSharing respjson.Field
BillingContact respjson.Field
BillingModel respjson.Field
Brand respjson.Field
CreatedAt respjson.Field
Description respjson.Field
Email respjson.Field
Icon respjson.Field
InheritContacts respjson.Field
InheritTcrBrand respjson.Field
InheritTcrCampaign respjson.Field
InheritTemplates respjson.Field
Name respjson.Field
OrganizationID respjson.Field
SendingPhoneNumber respjson.Field
SendingPhoneNumberProfileID respjson.Field
SendingWhatsappNumberProfileID respjson.Field
ShortName respjson.Field
Status respjson.Field
UpdatedAt respjson.Field
WabaID respjson.Field
WhatsappPhoneNumber respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Detailed profile response for v3 API
func (ProfileDetail) RawJSON ¶ added in v0.7.0
func (r ProfileDetail) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileDetail) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileDetail) UnmarshalJSON(data []byte) error
type ProfileDetailBillingContact ¶ added in v0.8.0
type ProfileDetailBillingContact struct {
Address string `json:"address" api:"nullable"`
Email string `json:"email" api:"nullable"`
Name string `json:"name" api:"nullable"`
Phone string `json:"phone" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Address respjson.Field
Email respjson.Field
Name respjson.Field
Phone respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Billing contact info returned in profile responses
func (ProfileDetailBillingContact) RawJSON ¶ added in v0.8.0
func (r ProfileDetailBillingContact) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileDetailBillingContact) UnmarshalJSON ¶ added in v0.8.0
func (r *ProfileDetailBillingContact) UnmarshalJSON(data []byte) error
type ProfileDetailBrand ¶ added in v0.9.0
type ProfileDetailBrand struct {
// Unique identifier for the brand
ID string `json:"id" format:"uuid"`
// Business details and address information
Business ProfileDetailBrandBusiness `json:"business" api:"nullable"`
// Compliance and TCR-related information
Compliance ProfileDetailBrandCompliance `json:"compliance" api:"nullable"`
// Contact information for the brand
Contact ProfileDetailBrandContact `json:"contact" api:"nullable"`
// When the brand was created
CreatedAt time.Time `json:"created_at" format:"date-time"`
// CSP (Campaign Service Provider) ID
CspID string `json:"csp_id" api:"nullable"`
// Any of "SELF_DECLARED", "UNVERIFIED", "VERIFIED", "VETTED_VERIFIED".
IdentityStatus string `json:"identity_status" api:"nullable"`
// Whether this brand is inherited from the parent organization
IsInherited bool `json:"is_inherited"`
// Any of "ACTIVE", "INACTIVE", "SUSPENDED".
Status string `json:"status" api:"nullable"`
// When the brand was submitted to TCR
SubmittedAt time.Time `json:"submitted_at" api:"nullable" format:"date-time"`
// Whether this brand has been submitted to TCR
SubmittedToTcr bool `json:"submitted_to_tcr"`
// TCR brand ID (populated after TCR submission)
TcrBrandID string `json:"tcr_brand_id" api:"nullable"`
// Universal EIN from TCR
UniversalEin string `json:"universal_ein" api:"nullable"`
// When the brand was last updated
UpdatedAt time.Time `json:"updated_at" api:"nullable" format:"date-time"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Business respjson.Field
Compliance respjson.Field
Contact respjson.Field
CreatedAt respjson.Field
CspID respjson.Field
IdentityStatus respjson.Field
IsInherited respjson.Field
Status respjson.Field
SubmittedAt respjson.Field
SubmittedToTcr respjson.Field
TcrBrandID respjson.Field
UniversalEin respjson.Field
UpdatedAt respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Brand response with nested contact, business, and compliance sections — mirrors the request structure.
func (ProfileDetailBrand) RawJSON ¶ added in v0.9.0
func (r ProfileDetailBrand) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileDetailBrand) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileDetailBrand) UnmarshalJSON(data []byte) error
type ProfileDetailBrandBusiness ¶ added in v0.9.0
type ProfileDetailBrandBusiness struct {
// City
City string `json:"city" api:"nullable"`
// Country code (e.g., US, CA)
Country string `json:"country" api:"nullable"`
// Country where the business is registered
CountryOfRegistration string `json:"country_of_registration" api:"nullable"`
// Business entity type
EntityType string `json:"entity_type" api:"nullable"`
// Legal business name
LegalName string `json:"legal_name" api:"nullable"`
// Postal/ZIP code
PostalCode string `json:"postal_code" api:"nullable"`
// State/province code
State string `json:"state" api:"nullable"`
// Street address
Street string `json:"street" api:"nullable"`
// Tax ID/EIN number
TaxID string `json:"tax_id" api:"nullable"`
// Type of tax ID (e.g., us_ein, ca_bn)
TaxIDType string `json:"tax_id_type" api:"nullable"`
// Business website URL
URL string `json:"url" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
City respjson.Field
Country respjson.Field
CountryOfRegistration respjson.Field
EntityType respjson.Field
LegalName respjson.Field
PostalCode respjson.Field
State respjson.Field
Street respjson.Field
TaxID respjson.Field
TaxIDType respjson.Field
URL respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Business details and address information
func (ProfileDetailBrandBusiness) RawJSON ¶ added in v0.9.0
func (r ProfileDetailBrandBusiness) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileDetailBrandBusiness) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileDetailBrandBusiness) UnmarshalJSON(data []byte) error
type ProfileDetailBrandCompliance ¶ added in v0.9.0
type ProfileDetailBrandCompliance struct {
// Any of "BASIC_ACCOUNT", "MEDIUM_ACCOUNT", "LARGE_ACCOUNT", "SMALL_ACCOUNT",
// "KEY_ACCOUNT".
BrandRelationship TcrBrandRelationship `json:"brand_relationship" api:"nullable"`
// List of destination countries for messaging
DestinationCountries []DestinationCountry `json:"destination_countries"`
// Expected daily messaging volume
ExpectedMessagingVolume string `json:"expected_messaging_volume" api:"nullable"`
// Whether this is a TCR (Campaign Registry) application
IsTcrApplication bool `json:"is_tcr_application"`
// Additional notes about the business or use case
Notes string `json:"notes" api:"nullable"`
// Phone number prefix for messaging (e.g., "+1")
PhoneNumberPrefix string `json:"phone_number_prefix" api:"nullable"`
// Primary messaging use case description
PrimaryUseCase string `json:"primary_use_case" api:"nullable"`
// Any of "PROFESSIONAL", "REAL_ESTATE", "HEALTHCARE", "HUMAN_RESOURCES", "ENERGY",
// "ENTERTAINMENT", "RETAIL", "TRANSPORTATION", "AGRICULTURE", "INSURANCE",
// "POSTAL", "EDUCATION", "HOSPITALITY", "FINANCIAL", "POLITICAL", "GAMBLING",
// "LEGAL", "CONSTRUCTION", "NGO", "MANUFACTURING", "GOVERNMENT", "TECHNOLOGY",
// "COMMUNICATION".
Vertical TcrVertical `json:"vertical" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
BrandRelationship respjson.Field
DestinationCountries respjson.Field
ExpectedMessagingVolume respjson.Field
IsTcrApplication respjson.Field
Notes respjson.Field
PhoneNumberPrefix respjson.Field
PrimaryUseCase respjson.Field
Vertical respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Compliance and TCR-related information
func (ProfileDetailBrandCompliance) RawJSON ¶ added in v0.9.0
func (r ProfileDetailBrandCompliance) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileDetailBrandCompliance) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileDetailBrandCompliance) UnmarshalJSON(data []byte) error
type ProfileDetailBrandContact ¶ added in v0.9.0
type ProfileDetailBrandContact struct {
// Business/brand name
BusinessName string `json:"business_name" api:"nullable"`
// Contact email address
Email string `json:"email" api:"nullable"`
// Primary contact name
Name string `json:"name"`
// Contact phone number in E.164 format
Phone string `json:"phone" api:"nullable"`
// Contact phone country code (e.g., "1" for US)
PhoneCountryCode string `json:"phone_country_code" api:"nullable"`
// Contact's role in the business
Role string `json:"role" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
BusinessName respjson.Field
Email respjson.Field
Name respjson.Field
Phone respjson.Field
PhoneCountryCode respjson.Field
Role respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Contact information for the brand
func (ProfileDetailBrandContact) RawJSON ¶ added in v0.9.0
func (r ProfileDetailBrandContact) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileDetailBrandContact) UnmarshalJSON ¶ added in v0.9.0
func (r *ProfileDetailBrandContact) UnmarshalJSON(data []byte) error
type ProfileGetParams ¶ added in v0.8.0
type ProfileListParams ¶ added in v0.8.0
type ProfileListResponse ¶ added in v0.7.0
type ProfileListResponse struct {
// List of profiles response
Data ProfileListResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (ProfileListResponse) RawJSON ¶ added in v0.7.0
func (r ProfileListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileListResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileListResponse) UnmarshalJSON(data []byte) error
type ProfileListResponseData ¶ added in v0.7.0
type ProfileListResponseData struct {
// List of profiles in the organization
Profiles []ProfileDetail `json:"profiles"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Profiles respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
List of profiles response
func (ProfileListResponseData) RawJSON ¶ added in v0.7.0
func (r ProfileListResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileListResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileListResponseData) UnmarshalJSON(data []byte) error
type ProfileNewParams ¶ added in v0.7.0
type ProfileNewParams struct {
// Billing model: profile, organization, or profile_and_organization (default:
// profile).
//
// - "organization": the organization's billing details are used; no profile-level
// billing info needed.
// - "profile": the profile is billed independently; billing_contact is required.
// - "profile_and_organization": the profile is billed first with the organization
// as fallback; billing_contact is required.
BillingModel param.Opt[string] `json:"billing_model,omitzero"`
// Profile description (optional)
Description param.Opt[string] `json:"description,omitzero"`
// Profile icon URL (optional)
Icon param.Opt[string] `json:"icon,omitzero"`
// Whether this profile inherits contacts from organization (default: true)
InheritContacts param.Opt[bool] `json:"inherit_contacts,omitzero"`
// Whether this profile inherits TCR brand from organization (default: true)
InheritTcrBrand param.Opt[bool] `json:"inherit_tcr_brand,omitzero"`
// Whether this profile inherits TCR campaign from organization (default: true)
InheritTcrCampaign param.Opt[bool] `json:"inherit_tcr_campaign,omitzero"`
// Whether this profile inherits templates from organization (default: true)
InheritTemplates param.Opt[bool] `json:"inherit_templates,omitzero"`
// Profile short name/abbreviation (optional). Must be 3–11 characters, contain
// only letters, numbers, and spaces, and include at least one letter. Example:
// "SALES", "Mkt 2", "Support1".
ShortName param.Opt[string] `json:"short_name,omitzero"`
// Whether contacts are shared across profiles (default: false)
AllowContactSharing param.Opt[bool] `json:"allow_contact_sharing,omitzero"`
// Whether templates are shared across profiles (default: false)
AllowTemplateSharing param.Opt[bool] `json:"allow_template_sharing,omitzero"`
// Profile name (required)
Name param.Opt[string] `json:"name,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// Direct WhatsApp Business Account credentials for a profile. Use this when the
// profile should have its own WhatsApp Business Account instead of inheriting from
// the organization. Credentials must be obtained from Meta Business Manager by
// creating a System User with whatsapp_business_messaging and
// whatsapp_business_management scopes.
WhatsappBusinessAccount ProfileNewParamsWhatsappBusinessAccount `json:"whatsapp_business_account,omitzero"`
// Billing contact information for a profile. Required when billing_model is
// "profile" or "profile_and_organization".
BillingContact BillingContactInfoParam `json:"billing_contact,omitzero"`
// Brand and KYC data grouped into contact, business, and compliance sections
Brand BrandsBrandDataParam `json:"brand,omitzero"`
// Payment card details for a profile. Accepted when billing_model is "profile" or
// "profile_and_organization". These details are not stored on our servers and will
// be forwarded to the payment processor.
PaymentDetails PaymentDetailsParam `json:"payment_details,omitzero"`
// contains filtered or unexported fields
}
func (ProfileNewParams) MarshalJSON ¶ added in v0.7.0
func (r ProfileNewParams) MarshalJSON() (data []byte, err error)
func (*ProfileNewParams) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileNewParams) UnmarshalJSON(data []byte) error
type ProfileNewParamsWhatsappBusinessAccount ¶ added in v0.8.0
type ProfileNewParamsWhatsappBusinessAccount struct {
// System User access token with whatsapp_business_messaging and
// whatsapp_business_management permissions. This value is stored securely and
// never returned in API responses.
AccessToken string `json:"access_token" api:"required"`
// WhatsApp Business Account ID from Meta Business Manager
WabaID string `json:"waba_id" api:"required"`
// Phone Number ID of an existing number already registered under this WABA in Meta
// Business Manager. Optional — when omitted, a number will be provisioned from our
// pool and registered in the WABA during the onboarding flow. When provided, the
// number must already exist in the WABA.
PhoneNumberID param.Opt[string] `json:"phone_number_id,omitzero"`
// contains filtered or unexported fields
}
Direct WhatsApp Business Account credentials for a profile. Use this when the profile should have its own WhatsApp Business Account instead of inheriting from the organization. Credentials must be obtained from Meta Business Manager by creating a System User with whatsapp_business_messaging and whatsapp_business_management scopes.
The properties AccessToken, WabaID are required.
func (ProfileNewParamsWhatsappBusinessAccount) MarshalJSON ¶ added in v0.8.0
func (r ProfileNewParamsWhatsappBusinessAccount) MarshalJSON() (data []byte, err error)
func (*ProfileNewParamsWhatsappBusinessAccount) UnmarshalJSON ¶ added in v0.8.0
func (r *ProfileNewParamsWhatsappBusinessAccount) UnmarshalJSON(data []byte) error
type ProfileService ¶ added in v0.7.0
type ProfileService struct {
Options []option.RequestOption
// Manage organization profiles
Campaigns ProfileCampaignService
}
Manage organization profiles
ProfileService contains methods and other services that help with interacting with the Sent 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 NewProfileService method instead.
func NewProfileService ¶ added in v0.7.0
func NewProfileService(opts ...option.RequestOption) (r ProfileService)
NewProfileService 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 (*ProfileService) Complete ¶ added in v0.7.0
func (r *ProfileService) Complete(ctx context.Context, profileID string, params ProfileCompleteParams, opts ...option.RequestOption) (res *ProfileCompleteResponse, err error)
Final step in profile compliance workflow. Validates all prerequisites (general data, brand, campaigns), connects profile to Telnyx/WhatsApp, and sets status based on configuration. The process runs in the background and calls the provided webhook URL when finished.
Prerequisites: - Profile must be completed - If inheritTcrBrand=false: Profile must have existing brand - If inheritTcrBrand=true: Parent must have existing brand - If TCR application: Must have at least one campaign (own or inherited) - If inheritTcrCampaign=false: Profile should have campaigns - If inheritTcrCampaign=true: Parent must have campaigns Status Logic: - If both SMS and WhatsApp channels are missing → SUBMITTED - If TCR application and not inheriting brand/campaigns → SUBMITTED - If non-TCR with destination country (IsMain=true) → SUBMITTED - Otherwise → COMPLETED
func (*ProfileService) Delete ¶ added in v0.7.0
func (r *ProfileService) Delete(ctx context.Context, profileID string, params ProfileDeleteParams, opts ...option.RequestOption) (err error)
Soft deletes a sender profile. The profile will be marked as deleted but data is retained. Requires admin role in the organization.
func (*ProfileService) Get ¶ added in v0.7.0
func (r *ProfileService) Get(ctx context.Context, profileID string, query ProfileGetParams, opts ...option.RequestOption) (res *APIResponseOfProfileDetail, err error)
Retrieves detailed information about a specific sender profile within an organization, including brand and KYC information if a brand has been configured.
func (*ProfileService) List ¶ added in v0.7.0
func (r *ProfileService) List(ctx context.Context, query ProfileListParams, opts ...option.RequestOption) (res *ProfileListResponse, err error)
Retrieves all sender profiles within an organization, including brand information for each profile. Profiles represent different brands, departments, or use cases within an organization, each with their own messaging configuration.
func (*ProfileService) New ¶ added in v0.7.0
func (r *ProfileService) New(ctx context.Context, params ProfileNewParams, opts ...option.RequestOption) (res *APIResponseOfProfileDetail, err error)
Creates a new sender profile within an organization. Profiles represent different brands, departments, or use cases, each with their own messaging configuration and settings. Requires admin role in the organization.
## WhatsApp Business Account
Every profile must be linked to a WhatsApp Business Account. There are two ways to do this:
**1. Inherit from organization (default)** — Omit the `whatsapp_business_account` field. The profile will share the organization's WhatsApp Business Account, which must have been set up via WhatsApp Embedded Signup. This is the recommended path for most use cases.
**2. Direct credentials** — Provide a `whatsapp_business_account` object with `waba_id`, `phone_number_id`, and `access_token`. Use this when the profile needs its own independent WhatsApp Business Account. Obtain these from Meta Business Manager by creating a System User with `whatsapp_business_messaging` and `whatsapp_business_management` permissions.
If the `whatsapp_business_account` field is omitted and the organization has no WhatsApp Business Account configured, the request will be rejected with HTTP 422.
## Brand
Include the optional `brand` field to create the brand for this profile at the same time. Cannot be used when `inherit_tcr_brand` is `true`.
## Payment Details
When `billing_model` is `"profile"` or `"profile_and_organization"` you may include a `payment_details` object containing the card number, expiry (MM/YY), CVC, and billing ZIP code. Payment details are **never stored** on our servers and are forwarded directly to the payment processor. Providing `payment_details` when `billing_model` is `"organization"` is not allowed.
func (*ProfileService) Update ¶ added in v0.7.0
func (r *ProfileService) Update(ctx context.Context, profileID string, params ProfileUpdateParams, opts ...option.RequestOption) (res *APIResponseOfProfileDetail, err error)
Updates a profile's configuration and settings. Requires admin role in the organization. Only provided fields will be updated (partial update).
## Brand Management
Include the optional `brand` field to create or update the brand associated with this profile. The brand holds KYC and TCR compliance data (legal business info, contact details, messaging vertical). Once a brand has been submitted to TCR it cannot be modified. Setting `inherit_tcr_brand: true` and providing `brand` in the same request is not allowed.
## Payment Details
When `billing_model` is `"profile"` or `"profile_and_organization"` you may include a `payment_details` object containing the card number, expiry (MM/YY), CVC, and billing ZIP code. Payment details are **never stored** on our servers and are forwarded directly to the payment processor. Providing `payment_details` when `billing_model` is `"organization"` is not allowed.
type ProfileSettings ¶ added in v0.7.0
type ProfileSettings struct {
// Whether contacts are shared across profiles in the organization
AllowContactSharing bool `json:"allow_contact_sharing" api:"nullable"`
// Whether templates are shared across profiles in the organization
AllowTemplateSharing bool `json:"allow_template_sharing" api:"nullable"`
// Billing model: profile, organization, or profile_and_organization
BillingModel string `json:"billing_model" api:"nullable"`
// Whether this profile inherits contacts from the organization
InheritContacts bool `json:"inherit_contacts" api:"nullable"`
// Whether this profile inherits TCR brand from the organization
InheritTcrBrand bool `json:"inherit_tcr_brand" api:"nullable"`
// Whether this profile inherits TCR campaign from the organization
InheritTcrCampaign bool `json:"inherit_tcr_campaign" api:"nullable"`
// Whether this profile inherits templates from the organization
InheritTemplates bool `json:"inherit_templates" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
AllowContactSharing respjson.Field
AllowTemplateSharing respjson.Field
BillingModel respjson.Field
InheritContacts respjson.Field
InheritTcrBrand respjson.Field
InheritTcrCampaign respjson.Field
InheritTemplates respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Profile configuration settings
func (ProfileSettings) RawJSON ¶ added in v0.7.0
func (r ProfileSettings) RawJSON() string
Returns the unmodified JSON received from the API
func (*ProfileSettings) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileSettings) UnmarshalJSON(data []byte) error
type ProfileUpdateParams ¶ added in v0.7.0
type ProfileUpdateParams struct {
// Whether contacts are shared across profiles (optional)
AllowContactSharing param.Opt[bool] `json:"allow_contact_sharing,omitzero"`
// Whether number changes are allowed during onboarding (optional)
AllowNumberChangeDuringOnboarding param.Opt[bool] `json:"allow_number_change_during_onboarding,omitzero"`
// Whether templates are shared across profiles (optional)
AllowTemplateSharing param.Opt[bool] `json:"allow_template_sharing,omitzero"`
// Billing model: profile, organization, or profile_and_organization (optional).
//
// - "organization": the organization's billing details are used; no profile-level
// billing info needed.
// - "profile": the profile is billed independently; billing_contact is required.
// - "profile_and_organization": the profile is billed first with the organization
// as fallback; billing_contact is required.
BillingModel param.Opt[string] `json:"billing_model,omitzero"`
// Profile description (optional)
Description param.Opt[string] `json:"description,omitzero"`
// Profile icon URL (optional)
Icon param.Opt[string] `json:"icon,omitzero"`
// Whether this profile inherits contacts from organization (optional)
InheritContacts param.Opt[bool] `json:"inherit_contacts,omitzero"`
// Whether this profile inherits TCR brand from organization (optional)
InheritTcrBrand param.Opt[bool] `json:"inherit_tcr_brand,omitzero"`
// Whether this profile inherits TCR campaign from organization (optional)
InheritTcrCampaign param.Opt[bool] `json:"inherit_tcr_campaign,omitzero"`
// Whether this profile inherits templates from organization (optional)
InheritTemplates param.Opt[bool] `json:"inherit_templates,omitzero"`
// Profile name (optional)
Name param.Opt[string] `json:"name,omitzero"`
// Direct phone number for SMS sending (optional)
SendingPhoneNumber param.Opt[string] `json:"sending_phone_number,omitzero"`
// Reference to another profile to use for SMS/Telnyx configuration (optional)
SendingPhoneNumberProfileID param.Opt[string] `json:"sending_phone_number_profile_id,omitzero" format:"uuid"`
// Reference to another profile to use for WhatsApp configuration (optional)
SendingWhatsappNumberProfileID param.Opt[string] `json:"sending_whatsapp_number_profile_id,omitzero" format:"uuid"`
// Profile short name/abbreviation (optional). Must be 3–11 characters, contain
// only letters, numbers, and spaces, and include at least one letter. Example:
// "SALES", "Mkt 2", "Support1".
ShortName param.Opt[string] `json:"short_name,omitzero"`
// Direct phone number for WhatsApp sending (optional)
WhatsappPhoneNumber param.Opt[string] `json:"whatsapp_phone_number,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// Billing contact information for a profile. Required when billing_model is
// "profile" or "profile_and_organization".
BillingContact BillingContactInfoParam `json:"billing_contact,omitzero"`
// Brand and KYC data grouped into contact, business, and compliance sections
Brand BrandsBrandDataParam `json:"brand,omitzero"`
// Payment card details for a profile. Accepted when billing_model is "profile" or
// "profile_and_organization". These details are not stored on our servers and will
// be forwarded to the payment processor.
PaymentDetails PaymentDetailsParam `json:"payment_details,omitzero"`
// contains filtered or unexported fields
}
func (ProfileUpdateParams) MarshalJSON ¶ added in v0.7.0
func (r ProfileUpdateParams) MarshalJSON() (data []byte, err error)
func (*ProfileUpdateParams) UnmarshalJSON ¶ added in v0.7.0
func (r *ProfileUpdateParams) UnmarshalJSON(data []byte) error
type SentDmServicesCommonContractsPocOsAuthenticationConfigParam ¶ added in v0.7.0
type SentDmServicesCommonContractsPocOsAuthenticationConfigParam 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 for AUTHENTICATION category templates
func (SentDmServicesCommonContractsPocOsAuthenticationConfigParam) MarshalJSON ¶ added in v0.7.0
func (r SentDmServicesCommonContractsPocOsAuthenticationConfigParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesCommonContractsPocOsAuthenticationConfigParam) UnmarshalJSON ¶ added in v0.7.0
func (r *SentDmServicesCommonContractsPocOsAuthenticationConfigParam) UnmarshalJSON(data []byte) error
type SentDmServicesCommonContractsPocOsTemplateBodyParam ¶ added in v0.7.0
type SentDmServicesCommonContractsPocOsTemplateBodyParam 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
}
Body section of a message template with channel-specific content
func (SentDmServicesCommonContractsPocOsTemplateBodyParam) MarshalJSON ¶ added in v0.7.0
func (r SentDmServicesCommonContractsPocOsTemplateBodyParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesCommonContractsPocOsTemplateBodyParam) UnmarshalJSON ¶ added in v0.7.0
func (r *SentDmServicesCommonContractsPocOsTemplateBodyParam) UnmarshalJSON(data []byte) error
type SentDmServicesCommonContractsPocOsTemplateButtonParam ¶ added in v0.7.0
type SentDmServicesCommonContractsPocOsTemplateButtonParam 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 SentDmServicesCommonContractsPocOsTemplateButtonPropsParam `json:"props,omitzero"`
// contains filtered or unexported fields
}
Interactive button in a message template
func (SentDmServicesCommonContractsPocOsTemplateButtonParam) MarshalJSON ¶ added in v0.7.0
func (r SentDmServicesCommonContractsPocOsTemplateButtonParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesCommonContractsPocOsTemplateButtonParam) UnmarshalJSON ¶ added in v0.7.0
func (r *SentDmServicesCommonContractsPocOsTemplateButtonParam) UnmarshalJSON(data []byte) error
type SentDmServicesCommonContractsPocOsTemplateButtonPropsParam ¶ added in v0.7.0
type SentDmServicesCommonContractsPocOsTemplateButtonPropsParam 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
}
func (SentDmServicesCommonContractsPocOsTemplateButtonPropsParam) MarshalJSON ¶ added in v0.7.0
func (r SentDmServicesCommonContractsPocOsTemplateButtonPropsParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesCommonContractsPocOsTemplateButtonPropsParam) UnmarshalJSON ¶ added in v0.7.0
func (r *SentDmServicesCommonContractsPocOsTemplateButtonPropsParam) UnmarshalJSON(data []byte) error
type SentDmServicesCommonContractsPocOsTemplateFooterParam ¶ added in v0.7.0
type SentDmServicesCommonContractsPocOsTemplateFooterParam 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
}
Footer section of a message template
func (SentDmServicesCommonContractsPocOsTemplateFooterParam) MarshalJSON ¶ added in v0.7.0
func (r SentDmServicesCommonContractsPocOsTemplateFooterParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesCommonContractsPocOsTemplateFooterParam) UnmarshalJSON ¶ added in v0.7.0
func (r *SentDmServicesCommonContractsPocOsTemplateFooterParam) UnmarshalJSON(data []byte) error
type SentDmServicesCommonContractsPocOsTemplateHeaderParam ¶ added in v0.7.0
type SentDmServicesCommonContractsPocOsTemplateHeaderParam 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
}
Header section of a message template
func (SentDmServicesCommonContractsPocOsTemplateHeaderParam) MarshalJSON ¶ added in v0.7.0
func (r SentDmServicesCommonContractsPocOsTemplateHeaderParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesCommonContractsPocOsTemplateHeaderParam) UnmarshalJSON ¶ added in v0.7.0
func (r *SentDmServicesCommonContractsPocOsTemplateHeaderParam) UnmarshalJSON(data []byte) error
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType ¶ added in v0.10.0
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType string
const ( SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityTypePrivateProfit SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType = "PRIVATE_PROFIT" SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityTypePublicProfit SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType = "PUBLIC_PROFIT" SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityTypeNonProfit SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType = "NON_PROFIT" SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityTypeSoleProprietor SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType = "SOLE_PROPRIETOR" SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityTypeGovernment SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType = "GOVERNMENT" )
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam ¶ added in v0.10.0
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam struct {
// City
City param.Opt[string] `json:"city,omitzero"`
// Country code (e.g., US, CA)
Country param.Opt[string] `json:"country,omitzero"`
// Country where the business is registered
CountryOfRegistration param.Opt[string] `json:"countryOfRegistration,omitzero"`
// Legal business name
LegalName param.Opt[string] `json:"legalName,omitzero"`
// Postal/ZIP code
PostalCode param.Opt[string] `json:"postalCode,omitzero"`
// State/province code
State param.Opt[string] `json:"state,omitzero"`
// Street address
Street param.Opt[string] `json:"street,omitzero"`
// Tax ID/EIN number
TaxID param.Opt[string] `json:"taxId,omitzero"`
// Type of tax ID (e.g., us_ein, ca_bn)
TaxIDType param.Opt[string] `json:"taxIdType,omitzero"`
// Business website URL
URL param.Opt[string] `json:"url,omitzero" format:"uri"`
// Any of "PRIVATE_PROFIT", "PUBLIC_PROFIT", "NON_PROFIT", "SOLE_PROPRIETOR",
// "GOVERNMENT".
EntityType SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoEntityType `json:"entityType,omitzero"`
// contains filtered or unexported fields
}
Business details and address for brand KYC
func (SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam) MarshalJSON ¶ added in v0.10.0
func (r SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam) UnmarshalJSON ¶ added in v0.10.0
func (r *SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfoParam) UnmarshalJSON(data []byte) error
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam ¶ added in v0.10.0
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam struct {
// Any of "BASIC_ACCOUNT", "MEDIUM_ACCOUNT", "LARGE_ACCOUNT", "SMALL_ACCOUNT",
// "KEY_ACCOUNT".
BrandRelationship TcrBrandRelationship `json:"brandRelationship,omitzero" api:"required"`
// Any of "PROFESSIONAL", "REAL_ESTATE", "HEALTHCARE", "HUMAN_RESOURCES", "ENERGY",
// "ENTERTAINMENT", "RETAIL", "TRANSPORTATION", "AGRICULTURE", "INSURANCE",
// "POSTAL", "EDUCATION", "HOSPITALITY", "FINANCIAL", "POLITICAL", "GAMBLING",
// "LEGAL", "CONSTRUCTION", "NGO", "MANUFACTURING", "GOVERNMENT", "TECHNOLOGY",
// "COMMUNICATION".
Vertical TcrVertical `json:"vertical,omitzero" api:"required"`
// Expected daily messaging volume
ExpectedMessagingVolume param.Opt[string] `json:"expectedMessagingVolume,omitzero"`
// Whether this is a TCR (Campaign Registry) application
IsTcrApplication param.Opt[bool] `json:"isTcrApplication,omitzero"`
// Additional notes about the business or use case
Notes param.Opt[string] `json:"notes,omitzero"`
// Phone number prefix for messaging (e.g., "+1")
PhoneNumberPrefix param.Opt[string] `json:"phoneNumberPrefix,omitzero"`
// Primary messaging use case description
PrimaryUseCase param.Opt[string] `json:"primaryUseCase,omitzero"`
// List of destination countries for messaging
DestinationCountries []DestinationCountryParam `json:"destinationCountries,omitzero"`
// contains filtered or unexported fields
}
Compliance and TCR information for brand registration
The properties BrandRelationship, Vertical are required.
func (SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam) MarshalJSON ¶ added in v0.10.0
func (r SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam) UnmarshalJSON ¶ added in v0.10.0
func (r *SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfoParam) UnmarshalJSON(data []byte) error
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam ¶ added in v0.10.0
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam struct {
// Primary contact name (required)
Name string `json:"name" api:"required"`
// Business/brand name
BusinessName param.Opt[string] `json:"businessName,omitzero"`
// Contact email address
Email param.Opt[string] `json:"email,omitzero" format:"email"`
// Contact phone number in E.164 format
Phone param.Opt[string] `json:"phone,omitzero"`
// Contact phone country code (e.g., "1" for US)
PhoneCountryCode param.Opt[string] `json:"phoneCountryCode,omitzero"`
// Contact's role in the business
Role param.Opt[string] `json:"role,omitzero"`
// contains filtered or unexported fields
}
Contact information for brand KYC
The property Name is required.
func (SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam) MarshalJSON ¶ added in v0.10.0
func (r SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam) UnmarshalJSON ¶ added in v0.10.0
func (r *SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfoParam) UnmarshalJSON(data []byte) error
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam ¶ added in v0.7.0
type SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam struct {
// Any of "MARKETING", "ACCOUNT_NOTIFICATION", "CUSTOMER_CARE", "FRAUD_ALERT",
// "TWO_FA", "DELIVERY_NOTIFICATION", "SECURITY_ALERT", "M2M", "MIXED",
// "HIGHER_EDUCATION", "POLLING_VOTING", "PUBLIC_SERVICE_ANNOUNCEMENT",
// "LOW_VOLUME".
MessagingUseCaseUs MessagingUseCaseUs `json:"messagingUseCaseUs,omitzero" api:"required"`
// Sample messages for this use case (1-5 messages, max 1024 characters each)
SampleMessages []string `json:"sampleMessages,omitzero" api:"required"`
// contains filtered or unexported fields
}
Campaign use case with sample messages
The properties MessagingUseCaseUs, SampleMessages are required.
func (SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam) MarshalJSON ¶ added in v0.7.0
func (r SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam) MarshalJSON() (data []byte, err error)
func (*SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam) UnmarshalJSON ¶ added in v0.7.0
func (r *SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseDataParam) UnmarshalJSON(data []byte) error
type TcrBrandRelationship ¶ added in v0.7.0
type TcrBrandRelationship string
const ( TcrBrandRelationshipBasicAccount TcrBrandRelationship = "BASIC_ACCOUNT" TcrBrandRelationshipMediumAccount TcrBrandRelationship = "MEDIUM_ACCOUNT" TcrBrandRelationshipLargeAccount TcrBrandRelationship = "LARGE_ACCOUNT" TcrBrandRelationshipSmallAccount TcrBrandRelationship = "SMALL_ACCOUNT" TcrBrandRelationshipKeyAccount TcrBrandRelationship = "KEY_ACCOUNT" )
type TcrCampaignWithUseCases ¶ added in v0.7.0
type TcrCampaignWithUseCases struct {
BilledDate time.Time `json:"billedDate" api:"nullable" format:"date-time"`
BrandID string `json:"brandId" api:"nullable" format:"uuid"`
Cost float64 `json:"cost" api:"nullable"`
CspID string `json:"cspId" api:"nullable"`
CustomerID string `json:"customerId" format:"uuid"`
Description string `json:"description"`
HelpKeywords string `json:"helpKeywords" api:"nullable"`
HelpMessage string `json:"helpMessage" api:"nullable"`
KYCSubmissionFormID string `json:"kycSubmissionFormId" api:"nullable" format:"uuid"`
MessageFlow string `json:"messageFlow" api:"nullable"`
Name string `json:"name"`
OptinKeywords string `json:"optinKeywords" api:"nullable"`
OptinMessage string `json:"optinMessage" api:"nullable"`
OptoutKeywords string `json:"optoutKeywords" api:"nullable"`
OptoutMessage string `json:"optoutMessage" api:"nullable"`
PrivacyPolicyLink string `json:"privacyPolicyLink" api:"nullable"`
ResellerID string `json:"resellerId" api:"nullable"`
// Any of "PENDING", "ACCEPTED", "DECLINED".
SharingStatus string `json:"sharingStatus" api:"nullable"`
// Any of "SENT_CREATED", "ACTIVE", "EXPIRED".
Status string `json:"status" api:"nullable"`
SubmittedAt time.Time `json:"submittedAt" api:"nullable" format:"date-time"`
SubmittedToTcr bool `json:"submittedToTCR"`
TcrCampaignID string `json:"tcrCampaignId" api:"nullable"`
TcrSyncError string `json:"tcrSyncError" api:"nullable"`
TelnyxCampaignID string `json:"telnyxCampaignId" api:"nullable"`
TermsAndConditionsLink string `json:"termsAndConditionsLink" api:"nullable"`
Type string `json:"type"`
UpstreamCnpID string `json:"upstreamCnpId" api:"nullable"`
UseCases []TcrCampaignWithUseCasesUseCase `json:"useCases"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
BilledDate respjson.Field
BrandID respjson.Field
Cost respjson.Field
CspID respjson.Field
CustomerID respjson.Field
Description respjson.Field
HelpKeywords respjson.Field
HelpMessage respjson.Field
KYCSubmissionFormID respjson.Field
MessageFlow respjson.Field
Name respjson.Field
OptinKeywords respjson.Field
OptinMessage respjson.Field
OptoutKeywords respjson.Field
OptoutMessage respjson.Field
PrivacyPolicyLink respjson.Field
ResellerID respjson.Field
SharingStatus respjson.Field
Status respjson.Field
SubmittedAt respjson.Field
SubmittedToTcr respjson.Field
TcrCampaignID respjson.Field
TcrSyncError respjson.Field
TelnyxCampaignID respjson.Field
TermsAndConditionsLink respjson.Field
Type respjson.Field
UpstreamCnpID respjson.Field
UseCases respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
BaseDto
}
func (TcrCampaignWithUseCases) RawJSON ¶ added in v0.7.0
func (r TcrCampaignWithUseCases) RawJSON() string
Returns the unmodified JSON received from the API
func (*TcrCampaignWithUseCases) UnmarshalJSON ¶ added in v0.7.0
func (r *TcrCampaignWithUseCases) UnmarshalJSON(data []byte) error
type TcrCampaignWithUseCasesUseCase ¶ added in v0.7.0
type TcrCampaignWithUseCasesUseCase struct {
CampaignID string `json:"campaignId" format:"uuid"`
CustomerID string `json:"customerId" format:"uuid"`
// Any of "MARKETING", "ACCOUNT_NOTIFICATION", "CUSTOMER_CARE", "FRAUD_ALERT",
// "TWO_FA", "DELIVERY_NOTIFICATION", "SECURITY_ALERT", "M2M", "MIXED",
// "HIGHER_EDUCATION", "POLLING_VOTING", "PUBLIC_SERVICE_ANNOUNCEMENT",
// "LOW_VOLUME".
MessagingUseCaseUs MessagingUseCaseUs `json:"messagingUseCaseUs"`
SampleMessages []string `json:"sampleMessages"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
CampaignID respjson.Field
CustomerID respjson.Field
MessagingUseCaseUs respjson.Field
SampleMessages respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
BaseDto
}
func (TcrCampaignWithUseCasesUseCase) RawJSON ¶ added in v0.7.0
func (r TcrCampaignWithUseCasesUseCase) RawJSON() string
Returns the unmodified JSON received from the API
func (*TcrCampaignWithUseCasesUseCase) UnmarshalJSON ¶ added in v0.7.0
func (r *TcrCampaignWithUseCasesUseCase) UnmarshalJSON(data []byte) error
type TcrVertical ¶ added in v0.7.0
type TcrVertical string
const ( TcrVerticalProfessional TcrVertical = "PROFESSIONAL" TcrVerticalRealEstate TcrVertical = "REAL_ESTATE" TcrVerticalHealthcare TcrVertical = "HEALTHCARE" TcrVerticalHumanResources TcrVertical = "HUMAN_RESOURCES" TcrVerticalEnergy TcrVertical = "ENERGY" TcrVerticalEntertainment TcrVertical = "ENTERTAINMENT" TcrVerticalRetail TcrVertical = "RETAIL" TcrVerticalTransportation TcrVertical = "TRANSPORTATION" TcrVerticalAgriculture TcrVertical = "AGRICULTURE" TcrVerticalInsurance TcrVertical = "INSURANCE" TcrVerticalPostal TcrVertical = "POSTAL" TcrVerticalEducation TcrVertical = "EDUCATION" TcrVerticalHospitality TcrVertical = "HOSPITALITY" TcrVerticalFinancial TcrVertical = "FINANCIAL" TcrVerticalPolitical TcrVertical = "POLITICAL" TcrVerticalGambling TcrVertical = "GAMBLING" TcrVerticalLegal TcrVertical = "LEGAL" TcrVerticalConstruction TcrVertical = "CONSTRUCTION" TcrVerticalNgo TcrVertical = "NGO" TcrVerticalManufacturing TcrVertical = "MANUFACTURING" TcrVerticalGovernment TcrVertical = "GOVERNMENT" TcrVerticalTechnology TcrVertical = "TECHNOLOGY" TcrVerticalCommunication TcrVertical = "COMMUNICATION" )
type Template ¶ added in v0.7.0
type Template struct {
// Unique template identifier
ID string `json:"id" format:"uuid"`
// Template category: MARKETING, UTILITY, AUTHENTICATION
Category string `json:"category"`
// Supported channels: sms, whatsapp
Channels []string `json:"channels" api:"nullable"`
// When the template was created
CreatedAt time.Time `json:"created_at" format:"date-time"`
// Whether the template is published and active
IsPublished bool `json:"is_published"`
// Template language code (e.g., en_US)
Language string `json:"language"`
// Template display name
Name string `json:"name"`
// Template status: APPROVED, PENDING, REJECTED
Status string `json:"status"`
// When the template was last updated
UpdatedAt time.Time `json:"updated_at" api:"nullable" format:"date-time"`
// Template variables for personalization
Variables []string `json:"variables" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
Category respjson.Field
Channels respjson.Field
CreatedAt respjson.Field
IsPublished respjson.Field
Language respjson.Field
Name respjson.Field
Status respjson.Field
UpdatedAt respjson.Field
Variables respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Template response for v3 API
func (*Template) UnmarshalJSON ¶ added in v0.7.0
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 TemplateDefinitionParam ¶
type TemplateDefinitionParam struct {
// Body section of a message template with channel-specific content
Body SentDmServicesCommonContractsPocOsTemplateBodyParam `json:"body,omitzero" api:"required"`
// The version of the template definition format
DefinitionVersion param.Opt[string] `json:"definitionVersion,omitzero"`
// Optional list of interactive buttons (e.g., quick replies, URLs, phone numbers)
Buttons []SentDmServicesCommonContractsPocOsTemplateButtonParam `json:"buttons,omitzero"`
// Configuration for AUTHENTICATION category templates
AuthenticationConfig SentDmServicesCommonContractsPocOsAuthenticationConfigParam `json:"authenticationConfig,omitzero"`
Footer SentDmServicesCommonContractsPocOsTemplateFooterParam `json:"footer,omitzero"`
// Header section of a message template
Header SentDmServicesCommonContractsPocOsTemplateHeaderParam `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 TemplateDeleteParams ¶ added in v0.7.0
type TemplateDeleteParams struct {
// Whether to also delete the template from WhatsApp/Meta (optional, defaults to
// false)
DeleteFromMeta param.Opt[bool] `json:"delete_from_meta,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (TemplateDeleteParams) MarshalJSON ¶ added in v0.7.0
func (r TemplateDeleteParams) MarshalJSON() (data []byte, err error)
func (*TemplateDeleteParams) UnmarshalJSON ¶ added in v0.7.0
func (r *TemplateDeleteParams) UnmarshalJSON(data []byte) error
type TemplateGetParams ¶ added in v0.8.0
type TemplateListParams ¶
type TemplateListParams struct {
// Page number (1-indexed)
Page int64 `query:"page" api:"required" json:"-"`
// Number of items per page
PageSize int64 `query:"page_size" api:"required" json:"-"`
// Optional category filter: MARKETING, UTILITY, AUTHENTICATION
Category param.Opt[string] `query:"category,omitzero" json:"-"`
// Optional filter by welcome playground flag
IsWelcomePlayground param.Opt[bool] `query:"is_welcome_playground,omitzero" json:"-"`
// Optional search term for filtering templates
Search param.Opt[string] `query:"search,omitzero" json:"-"`
// Optional status filter: APPROVED, PENDING, REJECTED
Status param.Opt[string] `query:"status,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" 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 {
// Paginated list of templates
Data TemplateListResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
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 TemplateListResponseData ¶ added in v0.7.0
type TemplateListResponseData struct {
// Pagination metadata for list responses
Pagination PaginationMeta `json:"pagination"`
// List of templates
Templates []Template `json:"templates"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Pagination respjson.Field
Templates respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Paginated list of templates
func (TemplateListResponseData) RawJSON ¶ added in v0.7.0
func (r TemplateListResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*TemplateListResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *TemplateListResponseData) UnmarshalJSON(data []byte) error
type TemplateNewParams ¶
type TemplateNewParams struct {
// Template category: MARKETING, UTILITY, AUTHENTICATION (optional, auto-detected
// if not provided)
Category param.Opt[string] `json:"category,omitzero"`
// Source of template creation (default: from-api)
CreationSource param.Opt[string] `json:"creation_source,omitzero"`
// Template language code (e.g., en_US) (optional, auto-detected if not provided)
Language param.Opt[string] `json:"language,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
// Whether to submit the template for review after creation (default: false)
SubmitForReview param.Opt[bool] `json:"submit_for_review,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// Complete definition of a message template including header, body, footer, and
// buttons
Definition TemplateDefinitionParam `json:"definition,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 TemplateService ¶
type TemplateService struct {
Options []option.RequestOption
}
Manage message templates with variable substitution
TemplateService contains methods and other services that help with interacting with the Sent 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, params TemplateDeleteParams, opts ...option.RequestOption) (err error)
Deletes a template by ID. Optionally, you can also delete the template from WhatsApp/Meta by setting delete_from_meta=true.
func (*TemplateService) Get ¶
func (r *TemplateService) Get(ctx context.Context, id string, query TemplateGetParams, opts ...option.RequestOption) (res *APIResponseTemplate, err error)
Retrieves a specific template by its ID. Returns template details including name, category, language, status, and definition.
func (*TemplateService) List ¶
func (r *TemplateService) List(ctx context.Context, params TemplateListParams, opts ...option.RequestOption) (res *TemplateListResponse, err error)
Retrieves a paginated list of message templates for the authenticated customer. Supports filtering by status, category, and search term.
func (*TemplateService) New ¶
func (r *TemplateService) New(ctx context.Context, params TemplateNewParams, opts ...option.RequestOption) (res *APIResponseTemplate, err error)
Creates a new message template with header, body, footer, and buttons. The template can be submitted for review immediately or saved as draft for later submission.
func (*TemplateService) Update ¶ added in v0.7.0
func (r *TemplateService) Update(ctx context.Context, id string, params TemplateUpdateParams, opts ...option.RequestOption) (res *APIResponseTemplate, err error)
Updates an existing template's name, category, language, definition, or submits it for review.
type TemplateUpdateParams ¶ added in v0.7.0
type TemplateUpdateParams struct {
// Template category: MARKETING, UTILITY, AUTHENTICATION
Category param.Opt[string] `json:"category,omitzero"`
// Template language code (e.g., en_US)
Language param.Opt[string] `json:"language,omitzero"`
// Template display name
Name param.Opt[string] `json:"name,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
// Whether to submit the template for review after updating (default: false)
SubmitForReview param.Opt[bool] `json:"submit_for_review,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// Complete definition of a message template including header, body, footer, and
// buttons
Definition TemplateDefinitionParam `json:"definition,omitzero"`
// contains filtered or unexported fields
}
func (TemplateUpdateParams) MarshalJSON ¶ added in v0.7.0
func (r TemplateUpdateParams) MarshalJSON() (data []byte, err error)
func (*TemplateUpdateParams) UnmarshalJSON ¶ added in v0.7.0
func (r *TemplateUpdateParams) 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 TemplateVariablePropsParam ¶
type TemplateVariablePropsParam struct {
Alt param.Opt[string] `json:"alt,omitzero"`
MediaType param.Opt[string] `json:"mediaType,omitzero"`
Regex param.Opt[string] `json:"regex,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
type UserGetParams ¶ added in v0.8.0
type UserInviteParams ¶ added in v0.7.0
type UserInviteParams struct {
// User email address (required)
Email param.Opt[string] `json:"email,omitzero" format:"email"`
// User full name (required)
Name param.Opt[string] `json:"name,omitzero"`
// User role: admin, billing, or developer (required)
Role param.Opt[string] `json:"role,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (UserInviteParams) MarshalJSON ¶ added in v0.7.0
func (r UserInviteParams) MarshalJSON() (data []byte, err error)
func (*UserInviteParams) UnmarshalJSON ¶ added in v0.7.0
func (r *UserInviteParams) UnmarshalJSON(data []byte) error
type UserListParams ¶ added in v0.8.0
type UserListResponse ¶ added in v0.7.0
type UserListResponse struct {
// List of users response
Data UserListResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (UserListResponse) RawJSON ¶ added in v0.7.0
func (r UserListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*UserListResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *UserListResponse) UnmarshalJSON(data []byte) error
type UserListResponseData ¶ added in v0.7.0
type UserListResponseData struct {
// List of users in the organization
Users []UserResponse `json:"users"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Users respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
List of users response
func (UserListResponseData) RawJSON ¶ added in v0.7.0
func (r UserListResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*UserListResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *UserListResponseData) UnmarshalJSON(data []byte) error
type UserRemoveParams ¶ added in v0.7.0
type UserRemoveParams struct {
// Request to remove a user from an organization
Body UserRemoveParamsBody
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (UserRemoveParams) MarshalJSON ¶ added in v0.7.0
func (r UserRemoveParams) MarshalJSON() (data []byte, err error)
func (*UserRemoveParams) UnmarshalJSON ¶ added in v0.7.0
func (r *UserRemoveParams) UnmarshalJSON(data []byte) error
type UserRemoveParamsBody ¶ added in v0.8.0
type UserRemoveParamsBody struct {
MutationRequestParam
}
Request to remove a user from an organization
func (UserRemoveParamsBody) MarshalJSON ¶ added in v0.8.0
func (r UserRemoveParamsBody) MarshalJSON() (data []byte, err error)
type UserResponse ¶ added in v0.7.0
type UserResponse struct {
// User unique identifier
ID string `json:"id" format:"uuid"`
// When the user was added to the organization
CreatedAt time.Time `json:"created_at" format:"date-time"`
// User email address
Email string `json:"email"`
// When the user was invited
InvitedAt time.Time `json:"invited_at" api:"nullable" format:"date-time"`
// When the user last logged in
LastLoginAt time.Time `json:"last_login_at" api:"nullable" format:"date-time"`
// User full name
Name string `json:"name"`
// User role in the organization: admin, billing, developer
Role string `json:"role"`
// User status: active, invited, suspended, rejected
Status string `json:"status"`
// When the user record was last updated
UpdatedAt time.Time `json:"updated_at" api:"nullable" format:"date-time"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
CreatedAt respjson.Field
Email respjson.Field
InvitedAt respjson.Field
LastLoginAt respjson.Field
Name respjson.Field
Role respjson.Field
Status respjson.Field
UpdatedAt respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
User response for v3 API
func (UserResponse) RawJSON ¶ added in v0.7.0
func (r UserResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*UserResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *UserResponse) UnmarshalJSON(data []byte) error
type UserService ¶ added in v0.7.0
type UserService struct {
Options []option.RequestOption
}
Invite, update, and manage organization users and roles
UserService contains methods and other services that help with interacting with the Sent 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 NewUserService method instead.
func NewUserService ¶ added in v0.7.0
func NewUserService(opts ...option.RequestOption) (r UserService)
NewUserService 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 (*UserService) Get ¶ added in v0.7.0
func (r *UserService) Get(ctx context.Context, userID string, query UserGetParams, opts ...option.RequestOption) (res *APIResponseOfUser, err error)
Retrieves detailed information about a specific user in an organization or profile. Requires developer role or higher.
func (*UserService) Invite ¶ added in v0.7.0
func (r *UserService) Invite(ctx context.Context, params UserInviteParams, opts ...option.RequestOption) (res *APIResponseOfUser, err error)
Sends an invitation to a user to join the organization or profile with a specific role. Requires admin role. The user will receive an invitation email with a token to accept. Invitation tokens expire after 7 days.
func (*UserService) List ¶ added in v0.7.0
func (r *UserService) List(ctx context.Context, query UserListParams, opts ...option.RequestOption) (res *UserListResponse, err error)
Retrieves all users who have access to the organization or profile identified by the API key, including their roles and status. Shows invited users (pending acceptance) and active users. Requires developer role or higher.
func (*UserService) Remove ¶ added in v0.7.0
func (r *UserService) Remove(ctx context.Context, userID string, params UserRemoveParams, opts ...option.RequestOption) (err error)
Removes a user's access to an organization or profile. Requires admin role. You cannot remove yourself or remove the last admin.
func (*UserService) UpdateRole ¶ added in v0.7.0
func (r *UserService) UpdateRole(ctx context.Context, userID string, params UserUpdateRoleParams, opts ...option.RequestOption) (res *APIResponseOfUser, err error)
Updates a user's role in the organization or profile. Requires admin role. You cannot change your own role or demote the last admin.
type UserUpdateRoleParams ¶ added in v0.7.0
type UserUpdateRoleParams struct {
// User role: admin, billing, or developer (required)
Role param.Opt[string] `json:"role,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (UserUpdateRoleParams) MarshalJSON ¶ added in v0.7.0
func (r UserUpdateRoleParams) MarshalJSON() (data []byte, err error)
func (*UserUpdateRoleParams) UnmarshalJSON ¶ added in v0.7.0
func (r *UserUpdateRoleParams) UnmarshalJSON(data []byte) error
type WebhookDeleteParams ¶ added in v0.8.0
type WebhookGetParams ¶ added in v0.8.0
type WebhookListEventTypesParams ¶ added in v0.8.0
type WebhookListEventTypesResponse ¶ added in v0.7.0
type WebhookListEventTypesResponse struct {
// The response data (null if error)
Data WebhookListEventTypesResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (WebhookListEventTypesResponse) RawJSON ¶ added in v0.7.0
func (r WebhookListEventTypesResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListEventTypesResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListEventTypesResponse) UnmarshalJSON(data []byte) error
type WebhookListEventTypesResponseData ¶ added in v0.7.0
type WebhookListEventTypesResponseData struct {
EventTypes []WebhookListEventTypesResponseDataEventType `json:"event_types"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
EventTypes respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
The response data (null if error)
func (WebhookListEventTypesResponseData) RawJSON ¶ added in v0.7.0
func (r WebhookListEventTypesResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListEventTypesResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListEventTypesResponseData) UnmarshalJSON(data []byte) error
type WebhookListEventTypesResponseDataEventType ¶ added in v0.7.0
type WebhookListEventTypesResponseDataEventType struct {
Description string `json:"description" api:"nullable"`
DisplayName string `json:"display_name"`
IsActive bool `json:"is_active"`
Name string `json:"name"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Description respjson.Field
DisplayName respjson.Field
IsActive respjson.Field
Name respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (WebhookListEventTypesResponseDataEventType) RawJSON ¶ added in v0.7.0
func (r WebhookListEventTypesResponseDataEventType) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListEventTypesResponseDataEventType) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListEventTypesResponseDataEventType) UnmarshalJSON(data []byte) error
type WebhookListEventsParams ¶ added in v0.7.0
type WebhookListEventsParams struct {
Page int64 `query:"page" api:"required" json:"-"`
PageSize int64 `query:"page_size" api:"required" json:"-"`
Search param.Opt[string] `query:"search,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (WebhookListEventsParams) URLQuery ¶ added in v0.7.0
func (r WebhookListEventsParams) URLQuery() (v url.Values, err error)
URLQuery serializes WebhookListEventsParams's query parameters as `url.Values`.
type WebhookListEventsResponse ¶ added in v0.7.0
type WebhookListEventsResponse struct {
// The response data (null if error)
Data WebhookListEventsResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (WebhookListEventsResponse) RawJSON ¶ added in v0.7.0
func (r WebhookListEventsResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListEventsResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListEventsResponse) UnmarshalJSON(data []byte) error
type WebhookListEventsResponseData ¶ added in v0.7.0
type WebhookListEventsResponseData struct {
Events []WebhookListEventsResponseDataEvent `json:"events"`
// Pagination metadata for list responses
Pagination PaginationMeta `json:"pagination"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Events respjson.Field
Pagination respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
The response data (null if error)
func (WebhookListEventsResponseData) RawJSON ¶ added in v0.7.0
func (r WebhookListEventsResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListEventsResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListEventsResponseData) UnmarshalJSON(data []byte) error
type WebhookListEventsResponseDataEvent ¶ added in v0.7.0
type WebhookListEventsResponseDataEvent struct {
ID string `json:"id" format:"uuid"`
CreatedAt time.Time `json:"created_at" format:"date-time"`
DeliveryAttempts int64 `json:"delivery_attempts"`
DeliveryStatus string `json:"delivery_status"`
ErrorMessage string `json:"error_message" api:"nullable"`
EventData any `json:"event_data"`
EventType string `json:"event_type"`
HTTPStatusCode int64 `json:"http_status_code" api:"nullable"`
ProcessingCompletedAt time.Time `json:"processing_completed_at" api:"nullable" format:"date-time"`
ProcessingStartedAt time.Time `json:"processing_started_at" api:"nullable" format:"date-time"`
ResponseBody string `json:"response_body" api:"nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
CreatedAt respjson.Field
DeliveryAttempts respjson.Field
DeliveryStatus respjson.Field
ErrorMessage respjson.Field
EventData respjson.Field
EventType respjson.Field
HTTPStatusCode respjson.Field
ProcessingCompletedAt respjson.Field
ProcessingStartedAt respjson.Field
ResponseBody respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (WebhookListEventsResponseDataEvent) RawJSON ¶ added in v0.7.0
func (r WebhookListEventsResponseDataEvent) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListEventsResponseDataEvent) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListEventsResponseDataEvent) UnmarshalJSON(data []byte) error
type WebhookListParams ¶ added in v0.7.0
type WebhookListParams struct {
Page int64 `query:"page" api:"required" json:"-"`
PageSize int64 `query:"page_size" api:"required" json:"-"`
IsActive param.Opt[bool] `query:"is_active,omitzero" json:"-"`
Search param.Opt[string] `query:"search,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (WebhookListParams) URLQuery ¶ added in v0.7.0
func (r WebhookListParams) URLQuery() (v url.Values, err error)
URLQuery serializes WebhookListParams's query parameters as `url.Values`.
type WebhookListResponse ¶ added in v0.7.0
type WebhookListResponse struct {
// The response data (null if error)
Data WebhookListResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (WebhookListResponse) RawJSON ¶ added in v0.7.0
func (r WebhookListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListResponse) UnmarshalJSON(data []byte) error
type WebhookListResponseData ¶ added in v0.7.0
type WebhookListResponseData struct {
// Pagination metadata for list responses
Pagination PaginationMeta `json:"pagination"`
Webhooks []WebhookResponse `json:"webhooks"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Pagination respjson.Field
Webhooks respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
The response data (null if error)
func (WebhookListResponseData) RawJSON ¶ added in v0.7.0
func (r WebhookListResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookListResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookListResponseData) UnmarshalJSON(data []byte) error
type WebhookNewParams ¶ added in v0.7.0
type WebhookNewParams struct {
DisplayName param.Opt[string] `json:"display_name,omitzero"`
EndpointURL param.Opt[string] `json:"endpoint_url,omitzero"`
RetryCount param.Opt[int64] `json:"retry_count,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
TimeoutSeconds param.Opt[int64] `json:"timeout_seconds,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
EventTypes []string `json:"event_types,omitzero"`
// contains filtered or unexported fields
}
func (WebhookNewParams) MarshalJSON ¶ added in v0.7.0
func (r WebhookNewParams) MarshalJSON() (data []byte, err error)
func (*WebhookNewParams) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookNewParams) UnmarshalJSON(data []byte) error
type WebhookResponse ¶ added in v0.7.0
type WebhookResponse struct {
ID string `json:"id" format:"uuid"`
ConsecutiveFailures int64 `json:"consecutive_failures"`
CreatedAt time.Time `json:"created_at" format:"date-time"`
DisplayName string `json:"display_name"`
EndpointURL string `json:"endpoint_url"`
EventTypes []string `json:"event_types"`
IsActive bool `json:"is_active"`
LastDeliveryAttemptAt time.Time `json:"last_delivery_attempt_at" api:"nullable" format:"date-time"`
LastSuccessfulDeliveryAt time.Time `json:"last_successful_delivery_at" api:"nullable" format:"date-time"`
RetryCount int64 `json:"retry_count"`
SigningSecret string `json:"signing_secret" api:"nullable"`
TimeoutSeconds int64 `json:"timeout_seconds"`
UpdatedAt time.Time `json:"updated_at" api:"nullable" format:"date-time"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
ConsecutiveFailures respjson.Field
CreatedAt respjson.Field
DisplayName respjson.Field
EndpointURL respjson.Field
EventTypes respjson.Field
IsActive respjson.Field
LastDeliveryAttemptAt respjson.Field
LastSuccessfulDeliveryAt respjson.Field
RetryCount respjson.Field
SigningSecret respjson.Field
TimeoutSeconds respjson.Field
UpdatedAt respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (WebhookResponse) RawJSON ¶ added in v0.7.0
func (r WebhookResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookResponse) UnmarshalJSON(data []byte) error
type WebhookRotateSecretParams ¶ added in v0.7.0
type WebhookRotateSecretParams struct {
Body WebhookRotateSecretParamsBody
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (WebhookRotateSecretParams) MarshalJSON ¶ added in v0.7.0
func (r WebhookRotateSecretParams) MarshalJSON() (data []byte, err error)
func (*WebhookRotateSecretParams) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookRotateSecretParams) UnmarshalJSON(data []byte) error
type WebhookRotateSecretParamsBody ¶ added in v0.7.0
type WebhookRotateSecretParamsBody struct {
MutationRequestParam
}
func (WebhookRotateSecretParamsBody) MarshalJSON ¶ added in v0.7.0
func (r WebhookRotateSecretParamsBody) MarshalJSON() (data []byte, err error)
type WebhookRotateSecretResponse ¶ added in v0.7.0
type WebhookRotateSecretResponse struct {
// The response data (null if error)
Data WebhookRotateSecretResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (WebhookRotateSecretResponse) RawJSON ¶ added in v0.7.0
func (r WebhookRotateSecretResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookRotateSecretResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookRotateSecretResponse) UnmarshalJSON(data []byte) error
type WebhookRotateSecretResponseData ¶ added in v0.7.0
type WebhookRotateSecretResponseData struct {
SigningSecret string `json:"signing_secret"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
SigningSecret respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
The response data (null if error)
func (WebhookRotateSecretResponseData) RawJSON ¶ added in v0.7.0
func (r WebhookRotateSecretResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookRotateSecretResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookRotateSecretResponseData) UnmarshalJSON(data []byte) error
type WebhookService ¶ added in v0.7.0
type WebhookService struct {
Options []option.RequestOption
}
Configure webhook endpoints for real-time event delivery
WebhookService contains methods and other services that help with interacting with the Sent 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 NewWebhookService method instead.
func NewWebhookService ¶ added in v0.7.0
func NewWebhookService(opts ...option.RequestOption) (r WebhookService)
NewWebhookService 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 (*WebhookService) Delete ¶ added in v0.7.0
func (r *WebhookService) Delete(ctx context.Context, id string, body WebhookDeleteParams, opts ...option.RequestOption) (err error)
Deletes a webhook for the authenticated customer.
func (*WebhookService) Get ¶ added in v0.7.0
func (r *WebhookService) Get(ctx context.Context, id string, query WebhookGetParams, opts ...option.RequestOption) (res *APIResponseWebhook, err error)
Retrieves a single webhook by ID for the authenticated customer.
func (*WebhookService) List ¶ added in v0.7.0
func (r *WebhookService) List(ctx context.Context, params WebhookListParams, opts ...option.RequestOption) (res *WebhookListResponse, err error)
Retrieves a paginated list of webhooks for the authenticated customer.
func (*WebhookService) ListEventTypes ¶ added in v0.7.0
func (r *WebhookService) ListEventTypes(ctx context.Context, query WebhookListEventTypesParams, opts ...option.RequestOption) (res *WebhookListEventTypesResponse, err error)
Retrieves all available webhook event types that can be subscribed to.
func (*WebhookService) ListEvents ¶ added in v0.7.0
func (r *WebhookService) ListEvents(ctx context.Context, id string, params WebhookListEventsParams, opts ...option.RequestOption) (res *WebhookListEventsResponse, err error)
Retrieves a paginated list of delivery events for the specified webhook.
func (*WebhookService) New ¶ added in v0.7.0
func (r *WebhookService) New(ctx context.Context, params WebhookNewParams, opts ...option.RequestOption) (res *APIResponseWebhook, err error)
Creates a new webhook endpoint for the authenticated customer.
func (*WebhookService) RotateSecret ¶ added in v0.7.0
func (r *WebhookService) RotateSecret(ctx context.Context, id string, params WebhookRotateSecretParams, opts ...option.RequestOption) (res *WebhookRotateSecretResponse, err error)
Generates a new signing secret for the specified webhook. The old secret is immediately invalidated.
func (*WebhookService) Test ¶ added in v0.7.0
func (r *WebhookService) Test(ctx context.Context, id string, params WebhookTestParams, opts ...option.RequestOption) (res *WebhookTestResponse, err error)
Sends a test event to the specified webhook endpoint to verify connectivity.
func (*WebhookService) ToggleStatus ¶ added in v0.7.0
func (r *WebhookService) ToggleStatus(ctx context.Context, id string, params WebhookToggleStatusParams, opts ...option.RequestOption) (res *APIResponseWebhook, err error)
Activates or deactivates a webhook for the authenticated customer.
func (*WebhookService) Update ¶ added in v0.7.0
func (r *WebhookService) Update(ctx context.Context, id string, params WebhookUpdateParams, opts ...option.RequestOption) (res *APIResponseWebhook, err error)
Updates an existing webhook for the authenticated customer.
type WebhookTestParams ¶ added in v0.7.0
type WebhookTestParams struct {
EventType param.Opt[string] `json:"event_type,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (WebhookTestParams) MarshalJSON ¶ added in v0.7.0
func (r WebhookTestParams) MarshalJSON() (data []byte, err error)
func (*WebhookTestParams) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookTestParams) UnmarshalJSON(data []byte) error
type WebhookTestResponse ¶ added in v0.7.0
type WebhookTestResponse struct {
// The response data (null if error)
Data WebhookTestResponseData `json:"data" api:"nullable"`
// Error information
Error ErrorDetail `json:"error" api:"nullable"`
// Request and response metadata
Meta APIMeta `json:"meta"`
// Indicates whether the request was successful
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Data respjson.Field
Error respjson.Field
Meta respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Standard API response envelope for all v3 endpoints
func (WebhookTestResponse) RawJSON ¶ added in v0.7.0
func (r WebhookTestResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookTestResponse) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookTestResponse) UnmarshalJSON(data []byte) error
type WebhookTestResponseData ¶ added in v0.7.0
type WebhookTestResponseData struct {
Message string `json:"message"`
Success bool `json:"success"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Message respjson.Field
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
The response data (null if error)
func (WebhookTestResponseData) RawJSON ¶ added in v0.7.0
func (r WebhookTestResponseData) RawJSON() string
Returns the unmodified JSON received from the API
func (*WebhookTestResponseData) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookTestResponseData) UnmarshalJSON(data []byte) error
type WebhookToggleStatusParams ¶ added in v0.7.0
type WebhookToggleStatusParams struct {
IsActive param.Opt[bool] `json:"is_active,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
// contains filtered or unexported fields
}
func (WebhookToggleStatusParams) MarshalJSON ¶ added in v0.7.0
func (r WebhookToggleStatusParams) MarshalJSON() (data []byte, err error)
func (*WebhookToggleStatusParams) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookToggleStatusParams) UnmarshalJSON(data []byte) error
type WebhookUpdateParams ¶ added in v0.7.0
type WebhookUpdateParams struct {
DisplayName param.Opt[string] `json:"display_name,omitzero"`
EndpointURL param.Opt[string] `json:"endpoint_url,omitzero"`
RetryCount param.Opt[int64] `json:"retry_count,omitzero"`
// Sandbox flag - when true, the operation is simulated without side effects Useful
// for testing integrations without actual execution
Sandbox param.Opt[bool] `json:"sandbox,omitzero"`
TimeoutSeconds param.Opt[int64] `json:"timeout_seconds,omitzero"`
IdempotencyKey param.Opt[string] `header:"Idempotency-Key,omitzero" json:"-"`
XProfileID param.Opt[string] `header:"x-profile-id,omitzero" format:"uuid" json:"-"`
EventTypes []string `json:"event_types,omitzero"`
// contains filtered or unexported fields
}
func (WebhookUpdateParams) MarshalJSON ¶ added in v0.7.0
func (r WebhookUpdateParams) MarshalJSON() (data []byte, err error)
func (*WebhookUpdateParams) UnmarshalJSON ¶ added in v0.7.0
func (r *WebhookUpdateParams) 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
|
|