Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.52.0"
".": "0.53.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 12
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sequenzy/sequenzy-463aa679069f8fe8b5b57bfba1bf9141078f4601a1c5af0b76b4e8057d6ecc30.yml
openapi_spec_hash: d12926d1219fc6a5c6dd8c7b6d49d4f8
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sequenzy/sequenzy-e9eb1e7c6947fc840258c85663c5bdde63a88197347b4b4f5ffdd4aac57ca5e8.yml
openapi_spec_hash: 1bb2ed1b4d6e01f20107cbaab1140299
config_hash: 51c1d1194ac58d8c8e3162839c8f84dd
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.53.0 (2026-09-08)

Full Changelog: [v0.52.0...v0.53.0](https://github.com/Sequenzy/sequenzy-typescript/compare/v0.52.0...v0.53.0)

### Features

* **api:** api update ([98b5237](https://github.com/Sequenzy/sequenzy-typescript/commit/98b523735bc15a6132f5bcb09dd7751bf3118bcd))

## 0.52.0 (2026-09-07)

Full Changelog: [v0.51.0...v0.52.0](https://github.com/Sequenzy/sequenzy-typescript/compare/v0.51.0...v0.52.0)
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sequenzy",
"version": "0.52.0",
"version": "0.53.0",
"description": "The official TypeScript library for the Sequenzy API",
"author": "Sequenzy <nic@sequenzy.com>",
"types": "dist/index.d.ts",
Expand Down
6 changes: 6 additions & 0 deletions src/resources/subscribers/subscribers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,12 @@ export interface Subscriber {
*/
phone?: string | null;

/**
* Two-letter ISO country code associated with the normalized phone number, or null
* when unavailable.
*/
phoneCountry?: string | null;

/**
* SMS marketing consent status, independent of the email status
*/
Expand Down
98 changes: 77 additions & 21 deletions src/resources/transactional.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ export class Transactional extends APIResource {
* Optionally set `from` (domain must be verified) and `replyTo` addresses. When
* reply tracking is enabled, Sequenzy uses a unique trackable `Reply-To` header
* and treats the resolved reply destination as the forwarding destination for
* captured replies. When `replyTo` is omitted, direct-content sends inherit the
* company's default reply profile and saved-template sends prefer the template
* reply profile before the company default. Both fall back to the first company
* captured replies. Without a reply identity override, saved-template sends prefer
* the template reply profile. Otherwise sends prefer the effective sending
* domain's default reply profile, then the company default, then the first company
* reply profile. The resolved destination is retained whether or not reply
* tracking is enabled; it is sent as the Reply-To header only when reply tracking
* is disabled. Variables can be passed to customize the email content. Nested
Expand All @@ -101,6 +101,11 @@ export class Transactional extends APIResource {
* object. Missing values do not block queueing or sending; a required variable
* that is not provided and has no default renders as an empty string.
*
* Select existing identities with senderProfileId or fromEmail (and optional
* fromName), and replyProfileId or replyTo (with optional replyToName). These
* inputs look up profiles rather than create them. Use emailType, not isMarketing,
* to choose delivery policy.
*
* @example
* ```ts
* const response = await client.transactional.send({
Expand Down Expand Up @@ -187,6 +192,16 @@ export type TransactionalSendResponse =

export namespace TransactionalSendResponse {
export interface SlugBasedResponse {
/**
* Deduplicated BCC recipients; omitted when empty.
*/
bcc?: Array<string>;

/**
* Deduplicated CC recipients; omitted when empty.
*/
cc?: Array<string>;

/**
* Non-blocking warnings about template variable issues. The send is still queued
* when this object is present, and missing values without defaults render as empty
Expand Down Expand Up @@ -282,6 +297,16 @@ export namespace TransactionalSendResponse {
}

export interface DirectContentResponse {
/**
* Deduplicated BCC recipients; omitted when empty.
*/
bcc?: Array<string>;

/**
* Deduplicated CC recipients; omitted when empty.
*/
cc?: Array<string>;

/**
* Non-blocking warnings about template variable issues. The send is still queued
* when this object is present, and missing values without defaults render as empty
Expand Down Expand Up @@ -449,10 +474,24 @@ export interface TransactionalSendParams {
* (the display name disambiguates if several identities share the address), that
* identity - including its sending route - is used for the send; otherwise the
* template or company-default identity is kept and this field only changes the
* visible From.
* visible From. Mutually exclusive with senderProfileId, fromEmail and fromName.
*/
from?: string;

/**
* Body param: Address of an existing verified sender profile in this company.
* Mutually exclusive with senderProfileId and from. If several identities share
* the address, select one with fromName.
*/
fromEmail?: string;

/**
* Body param: Display name selecting an existing identity on fromEmail. Requires
* fromEmail; mutually exclusive with senderProfileId and from. Does not create a
* profile.
*/
fromName?: string;

/**
* Body param: Compatibility alias for `body`. Accepted with `subject` for direct
* sends and must match `body` when both are provided.
Expand All @@ -465,18 +504,35 @@ export interface TransactionalSendParams {
preview?: string;

/**
* Body param: Reply-to address. Format: "Name <email>" or just "email". Can be any
* valid email address. When reply tracking is disabled, this value is sent as the
* email's `Reply-To` header. When reply tracking is enabled, Sequenzy sends a
* unique trackable `Reply-To` header and stores this value as the forwarding
* destination for replies. When omitted, direct-content sends inherit the company
* default and saved-template sends prefer the template reply profile before the
* company default. Both fall back to the first company reply profile. The resolved
* destination is retained whether or not reply tracking is enabled; it is sent
* directly only when reply tracking is disabled.
* Body param: Existing reply profile ID. Mutually exclusive with replyTo and
* replyToName. Overrides the saved template and default reply identity.
*/
replyProfileId?: string;

/**
* Body param: Reply-to address as "Name <email>" or a bare email, optionally
* paired with replyToName. Mutually exclusive with replyProfileId. With reply
* tracking enabled, Sequenzy sends a trackable Reply-To and stores this address as
* its forwarding destination. Without a reply override, saved-template sends
* prefer the template reply profile; otherwise sends prefer the effective
* sending-domain default, then company default, then the first company reply
* profile.
*/
replyTo?: string;

/**
* Body param: Display name for a bare replyTo address. Requires replyTo and is
* mutually exclusive with replyProfileId. Does not create a profile.
*/
replyToName?: string;

/**
* Body param: Existing verified sender profile ID. Mutually exclusive with
* fromEmail, fromName and from. Selects that identity and its sending route; does
* not create a profile.
*/
senderProfileId?: string;

/**
* Body param: Canonical slug of the transactional email template to use (mutually
* exclusive with direct content).
Expand Down Expand Up @@ -504,10 +560,10 @@ export interface TransactionalSendParams {
templateId?: string;

/**
* Body param: Per-send tracking opt-outs. Each field defaults to `true`, meaning
* your account's tracking settings apply; set a field to `false` to disable that
* tracking for this send only. These fields can only opt out; they cannot enable
* tracking that is disabled for your account.
* Body param: Per-send tracking opt-outs. Omitted fields follow the company
* Transactional API open/click defaults. Set false to disable tracking for this
* send. Neither true nor omission can enable tracking disabled by account-wide or
* Transactional API settings.
*/
trackingSettings?: TransactionalSendParams.TrackingSettings;

Expand Down Expand Up @@ -570,10 +626,10 @@ export namespace TransactionalSendParams {
}

/**
* Per-send tracking opt-outs. Each field defaults to `true`, meaning your
* account's tracking settings apply; set a field to `false` to disable that
* tracking for this send only. These fields can only opt out; they cannot enable
* tracking that is disabled for your account.
* Per-send tracking opt-outs. Omitted fields follow the company Transactional API
* open/click defaults. Set false to disable tracking for this send. Neither true
* nor omission can enable tracking disabled by account-wide or Transactional API
* settings.
*/
export interface TrackingSettings {
/**
Expand Down
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '0.52.0'; // x-release-please-version
export const VERSION = '0.53.0'; // x-release-please-version
5 changes: 5 additions & 0 deletions tests/api-resources/transactional.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,14 @@ describe('resource transactional', () => {
cc: 'manager@example.com',
emailType: 'marketing',
from: 'Notifications <notifications@example.com>',
fromEmail: 'fromEmail',
fromName: 'fromName',
html: '<h1>Welcome!</h1><p>Thanks for signing up.</p>',
preview: 'Welcome to our platform',
replyProfileId: 'replyProfileId',
replyTo: 'Support <support@example.com>',
replyToName: 'replyToName',
senderProfileId: 'senderProfileId',
slug: 'welcome-email',
subject: 'Welcome to our platform!',
subscriberExternalId: 'user_123',
Expand Down
Loading