@stackshift-cloud/sdk 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +58 -1
  2. package/dist/assets-dam-types.d.ts +225 -0
  3. package/dist/assets-dam-types.js +1 -0
  4. package/dist/assets-dam.d.ts +96 -0
  5. package/dist/assets-dam.js +47 -0
  6. package/dist/assets-video-types.d.ts +116 -0
  7. package/dist/assets-video-types.js +1 -0
  8. package/dist/assets-video.d.ts +25 -0
  9. package/dist/assets-video.js +19 -0
  10. package/dist/assets.d.ts +5 -1
  11. package/dist/assets.js +11 -2
  12. package/dist/client.d.ts +4 -0
  13. package/dist/client.js +11 -0
  14. package/dist/generated/assets-contract.d.ts +246 -1
  15. package/dist/generated/assets-contract.js +49 -0
  16. package/dist/index.d.ts +14 -0
  17. package/dist/index.js +8 -0
  18. package/dist/mail-advanced-types.d.ts +9 -0
  19. package/dist/mail-billing.d.ts +34 -0
  20. package/dist/mail-billing.js +7 -0
  21. package/dist/mail-brands.d.ts +35 -0
  22. package/dist/mail-brands.js +17 -0
  23. package/dist/mail-campaigns.d.ts +72 -10
  24. package/dist/mail-campaigns.js +25 -2
  25. package/dist/mail-marketing.d.ts +84 -0
  26. package/dist/mail-marketing.js +24 -0
  27. package/dist/mail-migration.d.ts +16 -0
  28. package/dist/mail-migration.js +10 -0
  29. package/dist/mail-otp-types.d.ts +4 -0
  30. package/dist/mail-simulation.d.ts +4 -0
  31. package/dist/mail-simulation.js +1 -0
  32. package/dist/mail-subscribers.d.ts +39 -0
  33. package/dist/mail-subscribers.js +1 -0
  34. package/dist/mail-template-types.d.ts +8 -0
  35. package/dist/mail-tracking.d.ts +59 -0
  36. package/dist/mail-tracking.js +14 -0
  37. package/dist/mail-webhook-types.d.ts +4 -1
  38. package/dist/mail.d.ts +12 -0
  39. package/dist/mail.js +19 -0
  40. package/dist/types.d.ts +13 -0
  41. package/dist/workload-security.d.ts +172 -0
  42. package/dist/workload-security.js +50 -0
  43. package/package.json +2 -2
@@ -0,0 +1,17 @@
1
+ export class MailBrandsClient {
2
+ client;
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ create(input) {
7
+ return this.client.mailRequest('/mail/brands', { method: 'POST', body: input });
8
+ }
9
+ list() { return this.client.mailRequest('/mail/brands'); }
10
+ get(id) { return this.client.mailRequest(`/mail/brands/${encodeURIComponent(id)}`); }
11
+ update(id, input) {
12
+ return this.client.mailRequest(`/mail/brands/${encodeURIComponent(id)}`, { method: 'PUT', body: input });
13
+ }
14
+ archive(id) {
15
+ return this.client.mailRequest(`/mail/brands/${encodeURIComponent(id)}/archive`, { method: 'POST' });
16
+ }
17
+ }
@@ -1,5 +1,14 @@
1
+ import type { MailCampaignEstimate } from './mail-billing.js';
2
+ import type { MailMode, MailSimulationOptions } from './mail-simulation.js';
3
+ import type { MailImportMode, MailImportResult } from './mail-subscribers.js';
4
+ import type { MailTrackingOptions, MailEngagementReport } from './mail-tracking.js';
5
+ import type { MailTemplatePreview } from './mail-template-types.js';
6
+ import type { MailTemplateDiagnosticResult } from './mail-diagnostics.js';
1
7
  import type { StackShift } from './client.js';
2
8
  export interface MailAudience {
9
+ brandId: string;
10
+ mode?: MailMode;
11
+ editableFields?: string[];
3
12
  id: string;
4
13
  workspaceId: string;
5
14
  name: string;
@@ -10,14 +19,18 @@ export interface MailAudience {
10
19
  updatedAt: string;
11
20
  }
12
21
  export interface MailAudienceMember {
22
+ brandId: string;
23
+ confirmedIp?: string;
24
+ confirmedAt?: string;
13
25
  id: string;
14
26
  audienceId: string;
15
27
  email: string;
16
28
  name?: string;
17
- status: 'subscribed' | 'unsubscribed' | 'complained' | 'hard_bounced';
29
+ status: 'pending_confirmation' | 'subscribed' | 'unsubscribed' | 'complained' | 'hard_bounced';
18
30
  consentSource: string;
19
31
  consentAt: string;
20
32
  consentIp?: string;
33
+ attributes?: Record<string, string>;
21
34
  }
22
35
  export interface MailAudienceMemberImport {
23
36
  email: string;
@@ -25,8 +38,43 @@ export interface MailAudienceMemberImport {
25
38
  consentSource: string;
26
39
  consentAt: string;
27
40
  consentIp?: string;
41
+ attributes?: Record<string, string>;
42
+ }
43
+ export interface MailCampaignContent {
44
+ subject: string;
45
+ previewText?: string;
46
+ html: string;
47
+ text: string;
48
+ editorMode: 'code' | 'visual';
49
+ editorState?: Record<string, unknown> | null;
50
+ }
51
+ export interface MailCampaignInput {
52
+ simulation?: MailSimulationOptions;
53
+ name: string;
54
+ audienceId: string;
55
+ segmentId?: string;
56
+ from?: string;
57
+ replyTo?: string;
58
+ template?: string;
59
+ versionId?: string;
60
+ content?: MailCampaignContent;
61
+ variantBVersionId?: string;
62
+ variantBContent?: MailCampaignContent | null;
63
+ variantBPercent?: number;
64
+ tracking?: MailTrackingOptions;
28
65
  }
29
66
  export interface MailCampaign {
67
+ approvedMaxKobo?: number;
68
+ billingBlockReason?: string;
69
+ simulation?: MailSimulationOptions;
70
+ brandId: string;
71
+ mode?: MailMode;
72
+ content?: MailCampaignContent;
73
+ variantBContent?: MailCampaignContent | null;
74
+ variantBPercent?: number;
75
+ replyTo?: string;
76
+ revision: number;
77
+ tracking?: MailTrackingOptions;
30
78
  id: string;
31
79
  audienceId: string;
32
80
  batchId?: string;
@@ -34,7 +82,7 @@ export interface MailCampaign {
34
82
  template: string;
35
83
  versionId?: string;
36
84
  from: string;
37
- status: 'draft' | 'processing' | 'queued' | 'completed' | 'failed';
85
+ status: 'draft' | 'scheduled' | 'processing' | 'queued' | 'completed' | 'failed' | 'blocked';
38
86
  createdAt: string;
39
87
  updatedAt: string;
40
88
  queuedAt?: string;
@@ -43,6 +91,7 @@ export declare class MailAudiencesClient {
43
91
  private readonly client;
44
92
  constructor(client: StackShift);
45
93
  create(input: {
94
+ brandId: string;
46
95
  name: string;
47
96
  description?: string;
48
97
  }): Promise<MailAudience>;
@@ -57,20 +106,33 @@ export declare class MailAudiencesClient {
57
106
  imported: number;
58
107
  skipped: number;
59
108
  }>;
109
+ previewImport(id: string, members: MailAudienceMemberImport[], mode?: MailImportMode): Promise<MailImportResult>;
110
+ importDetailed(id: string, members: MailAudienceMemberImport[], mode?: MailImportMode): Promise<MailImportResult>;
111
+ setEditableFields(id: string, editableFields: string[]): Promise<{
112
+ editableFields: string[];
113
+ }>;
60
114
  }
61
115
  export declare class MailCampaignsClient {
62
116
  private readonly client;
63
117
  constructor(client: StackShift);
64
- create(input: {
65
- name: string;
66
- audienceId: string;
67
- template: string;
68
- versionId?: string;
69
- from: string;
70
- }): Promise<MailCampaign>;
118
+ create(input: MailCampaignInput): Promise<MailCampaign>;
71
119
  list(): Promise<{
72
120
  data: MailCampaign[];
73
121
  }>;
74
122
  get(id: string): Promise<MailCampaign>;
75
- send(id: string): Promise<MailCampaign>;
123
+ update(id: string, input: MailCampaignInput & {
124
+ revision: number;
125
+ }): Promise<MailCampaign>;
126
+ preview(id: string, data?: Record<string, unknown>, variant?: string): Promise<MailTemplatePreview & {
127
+ diagnostics: MailTemplateDiagnosticResult;
128
+ }>;
129
+ test(id: string, to: string, data?: Record<string, unknown>, variant?: string, simulation?: MailSimulationOptions): Promise<{
130
+ id: string;
131
+ status: string;
132
+ mode: "live" | "test";
133
+ }>;
134
+ schedule(id: string, sendAt: string, revision?: number, approvedMaxKobo?: number): Promise<MailCampaign>;
135
+ engagement(id: string): Promise<MailEngagementReport>;
136
+ estimate(id: string): Promise<MailCampaignEstimate>;
137
+ send(id: string, revision?: number, approvedMaxKobo?: number): Promise<MailCampaign>;
76
138
  }
@@ -21,6 +21,15 @@ export class MailAudiencesClient {
21
21
  body: { members },
22
22
  });
23
23
  }
24
+ previewImport(id, members, mode = 'recorded_consent') {
25
+ return this.client.mailRequest(`/mail/audiences/${encodeURIComponent(id)}/imports/preview`, { method: 'POST', body: { members, mode } });
26
+ }
27
+ importDetailed(id, members, mode = 'recorded_consent') {
28
+ return this.client.mailRequest(`/mail/audiences/${encodeURIComponent(id)}/imports`, { method: 'POST', body: { members, mode } });
29
+ }
30
+ setEditableFields(id, editableFields) {
31
+ return this.client.mailRequest(`/mail/audiences/${encodeURIComponent(id)}/preferences`, { method: 'PUT', body: { editableFields } });
32
+ }
24
33
  }
25
34
  export class MailCampaignsClient {
26
35
  client;
@@ -36,7 +45,21 @@ export class MailCampaignsClient {
36
45
  get(id) {
37
46
  return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}`);
38
47
  }
39
- send(id) {
40
- return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/send`, { method: 'POST' });
48
+ update(id, input) {
49
+ return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}`, { method: 'PUT', body: input });
50
+ }
51
+ preview(id, data = {}, variant = 'a') {
52
+ return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/preview`, { method: 'POST', body: { data, variant } });
53
+ }
54
+ test(id, to, data = {}, variant = 'a', simulation) {
55
+ return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/test`, { method: 'POST', body: { to, data, variant, simulation } });
56
+ }
57
+ schedule(id, sendAt, revision, approvedMaxKobo) {
58
+ return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/schedule`, { method: 'POST', body: { sendAt, revision, approvedMaxKobo } });
59
+ }
60
+ engagement(id) { return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/engagement`); }
61
+ estimate(id) { return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/estimate`); }
62
+ send(id, revision, approvedMaxKobo) {
63
+ return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/send`, { method: 'POST', body: { revision, approvedMaxKobo } });
41
64
  }
42
65
  }
@@ -0,0 +1,84 @@
1
+ import type { MailBrand } from './mail-brands.js';
2
+ import type { StackShift } from './client.js';
3
+ import type { MailMode, MailSimulationOptions } from './mail-simulation.js';
4
+ export interface MailAutomationInput {
5
+ audienceId: string;
6
+ name: string;
7
+ template: string;
8
+ versionId?: string;
9
+ from: string;
10
+ delaySeconds?: number;
11
+ simulation?: MailSimulationOptions;
12
+ }
13
+ export interface MailAutomation extends MailAutomationInput {
14
+ triggerType: string;
15
+ runCount: number;
16
+ id: string;
17
+ workspaceId: string;
18
+ brandId: string;
19
+ mode: MailMode;
20
+ createdAt: string;
21
+ updatedAt: string;
22
+ status?: string;
23
+ }
24
+ export declare class MailAutomationsClient {
25
+ private readonly client;
26
+ constructor(client: StackShift);
27
+ create(input: MailAutomationInput): Promise<MailAutomation>;
28
+ list(): Promise<{
29
+ data: MailAutomation[];
30
+ }>;
31
+ }
32
+ export interface MailSignupFormInput {
33
+ audienceId: string;
34
+ name: string;
35
+ heading?: string;
36
+ description?: string;
37
+ buttonLabel?: string;
38
+ successMessage?: string;
39
+ }
40
+ export interface MailSignupForm extends MailSignupFormInput {
41
+ publicToken: string;
42
+ brand?: MailBrand;
43
+ id: string;
44
+ workspaceId: string;
45
+ brandId: string;
46
+ mode: MailMode;
47
+ createdAt: string;
48
+ updatedAt: string;
49
+ status?: string;
50
+ }
51
+ export declare class MailFormsClient {
52
+ private readonly client;
53
+ constructor(client: StackShift);
54
+ create(input: MailSignupFormInput): Promise<MailSignupForm>;
55
+ list(): Promise<{
56
+ data: MailSignupForm[];
57
+ }>;
58
+ }
59
+ export interface MailSegmentInput {
60
+ audienceId: string;
61
+ name: string;
62
+ description?: string;
63
+ field: string;
64
+ operator: string;
65
+ value?: string;
66
+ }
67
+ export interface MailSegment extends MailSegmentInput {
68
+ memberCount: number;
69
+ id: string;
70
+ workspaceId: string;
71
+ brandId: string;
72
+ mode: MailMode;
73
+ createdAt: string;
74
+ updatedAt: string;
75
+ status?: string;
76
+ }
77
+ export declare class MailSegmentsClient {
78
+ private readonly client;
79
+ constructor(client: StackShift);
80
+ create(input: MailSegmentInput): Promise<MailSegment>;
81
+ list(): Promise<{
82
+ data: MailSegment[];
83
+ }>;
84
+ }
@@ -0,0 +1,24 @@
1
+ export class MailAutomationsClient {
2
+ client;
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ create(input) { return this.client.mailRequest('/mail/automations', { method: 'POST', body: input }); }
7
+ list() { return this.client.mailRequest('/mail/automations'); }
8
+ }
9
+ export class MailFormsClient {
10
+ client;
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ create(input) { return this.client.mailRequest('/mail/forms', { method: 'POST', body: input }); }
15
+ list() { return this.client.mailRequest('/mail/forms'); }
16
+ }
17
+ export class MailSegmentsClient {
18
+ client;
19
+ constructor(client) {
20
+ this.client = client;
21
+ }
22
+ create(input) { return this.client.mailRequest('/mail/segments', { method: 'POST', body: input }); }
23
+ list() { return this.client.mailRequest('/mail/segments'); }
24
+ }
@@ -0,0 +1,16 @@
1
+ import type { StackShift } from './client.js';
2
+ export interface MailMigrationChecklist {
3
+ domain: string;
4
+ provider: string;
5
+ completed: string[];
6
+ revision: number;
7
+ updatedAt?: string;
8
+ }
9
+ export declare class MailMigrationClient {
10
+ private readonly client;
11
+ constructor(client: StackShift);
12
+ audit(domain: string, selectors?: string[]): Promise<Record<string, unknown>>;
13
+ plan(domain: string, provider: string, selectors?: string[]): Promise<Record<string, unknown>>;
14
+ checklist(domain: string, provider: string): Promise<MailMigrationChecklist>;
15
+ saveChecklist(input: MailMigrationChecklist): Promise<MailMigrationChecklist>;
16
+ }
@@ -0,0 +1,10 @@
1
+ export class MailMigrationClient {
2
+ client;
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ audit(domain, selectors = []) { return this.client.request(`/mail/audit?${new URLSearchParams({ domain, selectors: selectors.join(',') })}`); }
7
+ plan(domain, provider, selectors = []) { return this.client.request(`/mail/migration-plan?${new URLSearchParams({ domain, provider, selectors: selectors.join(',') })}`); }
8
+ checklist(domain, provider) { return this.client.mailRequest(`/mail/migration/checklist?${new URLSearchParams({ domain, provider })}`); }
9
+ saveChecklist(input) { return this.client.mailRequest('/mail/migration/checklist', { method: 'PUT', body: { domain: input.domain, provider: input.provider, completed: input.completed, revision: input.revision } }); }
10
+ }
@@ -1,6 +1,8 @@
1
+ import type { MailMode, MailSimulationOptions } from './mail-simulation.js';
1
2
  import type { JsonValue } from './types.js';
2
3
  export type MailOtpStatus = 'pending' | 'verified' | 'expired' | 'failed' | 'canceled';
3
4
  export interface MailOtpSendInput {
5
+ simulation?: MailSimulationOptions;
4
6
  to: string;
5
7
  purpose: string;
6
8
  from?: string;
@@ -25,6 +27,7 @@ export interface MailOtpChallengeListOptions {
25
27
  cursor?: string;
26
28
  }
27
29
  export interface MailOtpChallenge {
30
+ mode?: MailMode;
28
31
  id: string;
29
32
  to: string;
30
33
  purpose: string;
@@ -46,6 +49,7 @@ export interface MailOtpChallengeListResult {
46
49
  nextCursor?: string | null;
47
50
  }
48
51
  export interface MailOtpSendResponse {
52
+ mode?: MailMode;
49
53
  id: string;
50
54
  to: string;
51
55
  purpose: string;
@@ -0,0 +1,4 @@
1
+ export type MailMode = 'live' | 'test';
2
+ export interface MailSimulationOptions {
3
+ scenario: 'delivered' | 'bounced' | 'complained' | 'delayed';
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ export type MailImportMode = 'recorded_consent' | 'confirmation';
2
+ export interface MailImportRow {
3
+ row: number;
4
+ email: string;
5
+ outcome: 'imported' | 'updated' | 'invalid' | 'skipped';
6
+ code: string;
7
+ reason: string;
8
+ status?: string;
9
+ }
10
+ export interface MailImportResult {
11
+ imported: number;
12
+ skipped: number;
13
+ summary: {
14
+ imported: number;
15
+ updated: number;
16
+ invalid: number;
17
+ skipped: number;
18
+ pending: number;
19
+ };
20
+ rows: MailImportRow[];
21
+ preview: boolean;
22
+ }
23
+ export interface MailSendingDomainHealth {
24
+ state: 'healthy' | 'suspect' | 'degraded';
25
+ lastResult: 'verified' | 'failed' | 'indeterminate' | 'unknown';
26
+ lastCheckedAt: string | null;
27
+ lastSuccessAt: string | null;
28
+ nextCheckAt: string;
29
+ degradedAt: string | null;
30
+ issues: {
31
+ type?: string;
32
+ record: string;
33
+ name: string;
34
+ expected: string;
35
+ observed: string[];
36
+ status: string;
37
+ scope: 'customer' | 'platform';
38
+ }[];
39
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,5 @@
1
+ import type { MailMode, MailSimulationOptions } from './mail-simulation.js';
2
+ import type { MailTrackingOptions } from './mail-tracking.js';
1
3
  import type { JsonValue, MailAddressInput, MailIdempotencyStatus, MailStatus } from './types.js';
2
4
  export type MailTemplateStatus = 'active' | 'archived' | 'deleted';
3
5
  export interface MailTemplateCreateInput {
@@ -22,6 +24,7 @@ export interface MailTemplateListOptions {
22
24
  search?: string;
23
25
  }
24
26
  export interface MailTemplate {
27
+ mode?: MailMode;
25
28
  id: string;
26
29
  name: string;
27
30
  slug: string;
@@ -61,16 +64,20 @@ export interface MailTemplatePreviewInput {
61
64
  versionId?: string;
62
65
  }
63
66
  export interface MailTemplateTestSendInput {
67
+ simulation?: MailSimulationOptions;
64
68
  to: MailAddressInput;
65
69
  from?: MailAddressInput;
66
70
  data: Record<string, JsonValue>;
67
71
  versionId?: string;
68
72
  }
69
73
  export interface MailTemplateTestSendResponse {
74
+ mode?: MailMode;
70
75
  messageId: string;
71
76
  status: MailStatus;
72
77
  }
73
78
  export interface MailSendTemplateInput {
79
+ simulation?: MailSimulationOptions;
80
+ tracking?: MailTrackingOptions;
74
81
  template: string;
75
82
  versionId?: string;
76
83
  to: MailAddressInput;
@@ -88,6 +95,7 @@ export interface MailSendTemplateInput {
88
95
  }>;
89
96
  }
90
97
  export interface MailSendTemplateResponse {
98
+ mode?: MailMode;
91
99
  id: string;
92
100
  status: MailStatus;
93
101
  templateId: string;
@@ -0,0 +1,59 @@
1
+ import type { StackShift } from './client.js';
2
+ export interface MailTrackingOptions {
3
+ opens?: boolean;
4
+ clicks?: boolean;
5
+ }
6
+ export interface MailTrackingSettings {
7
+ opens: boolean;
8
+ clicks: boolean;
9
+ }
10
+ export interface MailEngagementCount {
11
+ kind: 'open' | 'click';
12
+ variant: string;
13
+ link?: string;
14
+ total: number;
15
+ unique: number;
16
+ suspectedAutomated: number;
17
+ firstAt?: string;
18
+ lastAt?: string;
19
+ }
20
+ export interface MailEngagementReport {
21
+ counts: MailEngagementCount[];
22
+ openEligible: number;
23
+ clickEligible: number;
24
+ openEngagedDelivered: number;
25
+ clickEngagedDelivered: number;
26
+ openDelivered: number;
27
+ clickDelivered: number;
28
+ scope: 'message' | 'recipient';
29
+ retentionDays: number;
30
+ }
31
+ export interface MailTrackingDomain {
32
+ id: string;
33
+ domainId: string;
34
+ hostname: string;
35
+ ownershipToken: string;
36
+ enabled: boolean;
37
+ status: 'pending' | 'provisioning' | 'active' | 'degraded' | 'revoked';
38
+ checkedAt?: string;
39
+ dnsValidUntil?: string;
40
+ }
41
+ export declare class MailTrackingClient {
42
+ private readonly client;
43
+ constructor(client: StackShift);
44
+ settings(): Promise<{
45
+ settings: MailTrackingSettings;
46
+ available: boolean;
47
+ }>;
48
+ updateSettings(input: MailTrackingSettings): Promise<MailTrackingSettings>;
49
+ message(id: string): Promise<MailEngagementReport>;
50
+ campaign(id: string): Promise<MailEngagementReport>;
51
+ domains(): Promise<{
52
+ data: MailTrackingDomain[];
53
+ target: string;
54
+ available: boolean;
55
+ }>;
56
+ createDomain(domainId: string, hostname: string): Promise<MailTrackingDomain>;
57
+ verifyDomain(id: string): Promise<MailTrackingDomain>;
58
+ updateDomain(id: string, enabled: boolean, revoke?: boolean): Promise<void>;
59
+ }
@@ -0,0 +1,14 @@
1
+ export class MailTrackingClient {
2
+ client;
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ settings() { return this.client.mailRequest('/mail/tracking/settings'); }
7
+ updateSettings(input) { return this.client.mailRequest('/mail/tracking/settings', { method: 'PUT', body: input }); }
8
+ message(id) { return this.client.mailRequest(`/mail/messages/${encodeURIComponent(id)}/engagement`); }
9
+ campaign(id) { return this.client.mailRequest(`/mail/campaigns/${encodeURIComponent(id)}/engagement`); }
10
+ domains() { return this.client.mailRequest('/mail/tracking/domains'); }
11
+ createDomain(domainId, hostname) { return this.client.mailRequest('/mail/tracking/domains', { method: 'POST', body: { domainId, hostname } }); }
12
+ verifyDomain(id) { return this.client.mailRequest(`/mail/tracking/domains/${encodeURIComponent(id)}/verify`, { method: 'POST' }); }
13
+ updateDomain(id, enabled, revoke = false) { return this.client.mailRequest(`/mail/tracking/domains/${encodeURIComponent(id)}`, { method: 'PUT', body: { enabled, revoke } }); }
14
+ }
@@ -1,6 +1,8 @@
1
+ import type { MailMode } from './mail-simulation.js';
1
2
  import type { JsonValue } from './types.js';
2
- export type MailEventType = 'mail.message.accepted' | 'mail.message.queued' | 'mail.message.sending' | 'mail.message.mta_accepted' | 'mail.delivery.delayed' | 'mail.delivery.delivered' | 'mail.message.failed' | 'mail.message.bounced' | 'mail.message.suppressed' | 'mail.message.complained' | 'mail.suppression.created' | 'mail.suppression.deleted' | 'mail.otp.created' | 'mail.otp.sent' | 'mail.otp.verified' | 'mail.otp.failed_attempt' | 'mail.otp.failed' | 'mail.otp.expired' | 'mail.otp.canceled' | 'mail.template.created' | 'mail.template.updated' | 'mail.template.deleted' | 'mail.template.version.created' | 'mail.template.test_queued' | 'mail.domain.created' | 'mail.domain.verified' | 'mail.domain.failed' | 'mail.domain.deleted' | 'mail.webhook.created' | 'mail.webhook.updated' | 'mail.webhook.disabled' | 'mail.webhook.delivery.succeeded' | 'mail.webhook.delivery.failed' | 'mail.audience.created' | 'mail.audience.members.imported' | 'mail.campaign.created' | 'mail.campaign.queued';
3
+ export type MailEventType = 'mail.message.opened' | 'mail.message.clicked' | 'mail.message.accepted' | 'mail.message.queued' | 'mail.message.sending' | 'mail.message.mta_accepted' | 'mail.delivery.delayed' | 'mail.delivery.delivered' | 'mail.message.failed' | 'mail.message.bounced' | 'mail.message.suppressed' | 'mail.message.complained' | 'mail.suppression.created' | 'mail.suppression.deleted' | 'mail.otp.created' | 'mail.otp.sent' | 'mail.otp.verified' | 'mail.otp.failed_attempt' | 'mail.otp.failed' | 'mail.otp.expired' | 'mail.otp.canceled' | 'mail.template.created' | 'mail.template.updated' | 'mail.template.deleted' | 'mail.template.version.created' | 'mail.template.test_queued' | 'mail.domain.created' | 'mail.domain.verified' | 'mail.domain.failed' | 'mail.domain.deleted' | 'mail.webhook.created' | 'mail.webhook.updated' | 'mail.webhook.disabled' | 'mail.webhook.delivery.succeeded' | 'mail.webhook.delivery.failed' | 'mail.audience.created' | 'mail.audience.members.imported' | 'mail.campaign.created' | 'mail.campaign.queued';
3
4
  export interface MailEvent {
5
+ mode?: MailMode;
4
6
  id: string;
5
7
  type: MailEventType | string;
6
8
  resourceType?: string | null;
@@ -64,6 +66,7 @@ export interface MailWebhookListResult {
64
66
  nextCursor?: string | null;
65
67
  }
66
68
  export interface MailWebhookDelivery {
69
+ mode?: MailMode;
67
70
  id: string;
68
71
  endpointId: string;
69
72
  eventId: string;
package/dist/mail.d.ts CHANGED
@@ -1,3 +1,8 @@
1
+ import { MailAutomationsClient, MailFormsClient, MailSegmentsClient } from './mail-marketing.js';
2
+ import { MailBillingClient } from './mail-billing.js';
3
+ import { MailMigrationClient } from './mail-migration.js';
4
+ import { MailBrandsClient } from './mail-brands.js';
5
+ import { MailTrackingClient } from './mail-tracking.js';
1
6
  import type { StackShift } from './client.js';
2
7
  import type { MailLog, MailDomain, MailDomainListResult, MailMessage, MailMessageListOptions, MailMessageListResult, MailSendAttempt, MailSendInput, MailSendResponse } from './types.js';
3
8
  import type { MailBounce, MailBounceListOptions, MailBounceListResult, MailSuppression, MailSuppressionCreateInput, MailSuppressionListOptions, MailSuppressionListResult } from './mail-delivery-types.js';
@@ -17,6 +22,10 @@ export { MailExportsClient } from './mail-exports.js';
17
22
  import type { MailTemplateDiagnosticInput, MailTemplateDiagnosticResult } from './mail-diagnostics.js';
18
23
  export declare class MailClient {
19
24
  private readonly client;
25
+ readonly automations: MailAutomationsClient;
26
+ readonly forms: MailFormsClient;
27
+ readonly segments: MailSegmentsClient;
28
+ readonly tracking: MailTrackingClient;
20
29
  readonly domains: MailDomainsClient;
21
30
  readonly messages: MailMessagesClient;
22
31
  readonly suppressions: MailSuppressionsClient;
@@ -26,6 +35,9 @@ export declare class MailClient {
26
35
  readonly events: MailEventsClient;
27
36
  readonly webhooks: MailWebhooksClient;
28
37
  readonly streams: MailStreamsClient;
38
+ readonly billing: MailBillingClient;
39
+ readonly migration: MailMigrationClient;
40
+ readonly brands: MailBrandsClient;
29
41
  readonly audiences: MailAudiencesClient;
30
42
  readonly campaigns: MailCampaignsClient;
31
43
  readonly exports: MailExportsClient;
package/dist/mail.js CHANGED
@@ -1,3 +1,8 @@
1
+ import { MailAutomationsClient, MailFormsClient, MailSegmentsClient } from './mail-marketing.js';
2
+ import { MailBillingClient } from './mail-billing.js';
3
+ import { MailMigrationClient } from './mail-migration.js';
4
+ import { MailBrandsClient } from './mail-brands.js';
5
+ import { MailTrackingClient } from './mail-tracking.js';
1
6
  import { MailAnalyticsClient, MailBatchClient, MailInboundClient, MailScheduledClient } from './mail-advanced.js';
2
7
  export { MailAnalyticsClient, MailBatchClient, MailInboundClient, MailScheduledClient } from './mail-advanced.js';
3
8
  export { MailEventsClient, MailWebhooksClient, verifyWebhookSignature } from './mail-events-webhooks.js';
@@ -10,6 +15,10 @@ import { MailExportsClient } from './mail-exports.js';
10
15
  export { MailExportsClient } from './mail-exports.js';
11
16
  export class MailClient {
12
17
  client;
18
+ automations;
19
+ forms;
20
+ segments;
21
+ tracking;
13
22
  domains;
14
23
  messages;
15
24
  suppressions;
@@ -19,6 +28,9 @@ export class MailClient {
19
28
  events;
20
29
  webhooks;
21
30
  streams;
31
+ billing;
32
+ migration;
33
+ brands;
22
34
  audiences;
23
35
  campaigns;
24
36
  exports;
@@ -30,6 +42,7 @@ export class MailClient {
30
42
  analytics;
31
43
  constructor(client) {
32
44
  this.client = client;
45
+ this.tracking = new MailTrackingClient(client);
33
46
  this.domains = new MailDomainsClient(client);
34
47
  this.messages = new MailMessagesClient(client);
35
48
  this.suppressions = new MailSuppressionsClient(client);
@@ -39,6 +52,12 @@ export class MailClient {
39
52
  this.events = new MailEventsClient(client);
40
53
  this.webhooks = new MailWebhooksClient(client);
41
54
  this.streams = new MailStreamsClient(client);
55
+ this.billing = new MailBillingClient(client);
56
+ this.automations = new MailAutomationsClient(client);
57
+ this.forms = new MailFormsClient(client);
58
+ this.segments = new MailSegmentsClient(client);
59
+ this.migration = new MailMigrationClient(client);
60
+ this.brands = new MailBrandsClient(client);
42
61
  this.audiences = new MailAudiencesClient(client);
43
62
  this.campaigns = new MailCampaignsClient(client);
44
63
  this.exports = new MailExportsClient(client);