samva 0.18.0 → 0.19.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 (47) hide show
  1. package/README.md +2 -0
  2. package/dist/client/sdk.gen.d.ts +39 -23
  3. package/dist/client/sdk.gen.js +83 -21
  4. package/dist/client/types.gen.d.ts +175 -44
  5. package/dist/effect/contact-groups.d.ts +39 -3
  6. package/dist/effect/contacts.d.ts +216 -13
  7. package/dist/effect/contacts.js +3 -1
  8. package/dist/effect/conversations.d.ts +11 -11
  9. package/dist/effect/extension-installations.d.ts +12 -12
  10. package/dist/effect/extensions.d.ts +3 -3
  11. package/dist/effect/generated/contact-groups.d.ts +33 -3
  12. package/dist/effect/generated/contacts.d.ts +477 -54
  13. package/dist/effect/generated/contacts.js +39 -9
  14. package/dist/effect/generated/conversations.d.ts +25 -25
  15. package/dist/effect/generated/conversations.js +1 -1
  16. package/dist/effect/generated/extension-installations.d.ts +44 -44
  17. package/dist/effect/generated/extension-installations.js +6 -0
  18. package/dist/effect/generated/extensions.d.ts +10 -10
  19. package/dist/effect/generated/extensions.js +2 -0
  20. package/dist/effect/generated/mailboxes.d.ts +310 -0
  21. package/dist/effect/generated/mailboxes.js +37 -4
  22. package/dist/effect/generated/messages.d.ts +31 -0
  23. package/dist/effect/generated/messages.js +7 -1
  24. package/dist/effect/generated/organizations.d.ts +13 -11
  25. package/dist/effect/generated/organizations.js +7 -3
  26. package/dist/effect/generated/shared.d.ts +70 -20
  27. package/dist/effect/generated/shared.js +27 -7
  28. package/dist/effect/generated/unsubscribe-groups.d.ts +173 -78
  29. package/dist/effect/generated/unsubscribe-groups.js +75 -58
  30. package/dist/effect/generated/webhooks.d.ts +19 -19
  31. package/dist/effect/generated/webhooks.js +8 -0
  32. package/dist/effect/generated-metadata.d.ts +7 -2
  33. package/dist/effect/generated-metadata.js +331 -325
  34. package/dist/effect/mailboxes.d.ts +133 -1
  35. package/dist/effect/messages.d.ts +5 -0
  36. package/dist/effect/organizations.d.ts +4 -4
  37. package/dist/effect/unsubscribe-groups.d.ts +29 -18
  38. package/dist/effect/unsubscribe-groups.js +5 -5
  39. package/dist/effect/webhooks.d.ts +8 -8
  40. package/dist/mailbox-events.d.ts +31 -4
  41. package/dist/mailbox-events.js +39 -11
  42. package/dist/package.js +1 -1
  43. package/dist/promises/index.d.ts +1 -1
  44. package/dist/promises/types.gen.d.ts +1 -1
  45. package/dist/service-map.d.ts +9 -4
  46. package/dist/service-map.js +10 -2
  47. package/package.json +2 -2
@@ -34,7 +34,7 @@ export type ResourceNotFoundError = {
34
34
  export type ExtensionRun = {
35
35
  id: string;
36
36
  eventId: string;
37
- eventType: "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded";
37
+ eventType: "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded";
38
38
  attempt: number;
39
39
  startedAt: string;
40
40
  durationMs: number;
@@ -49,7 +49,7 @@ export type ExtensionRunList = {
49
49
  export type ExtensionRunSummary = {
50
50
  id: string;
51
51
  eventId: string;
52
- eventType: "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded";
52
+ eventType: "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded";
53
53
  attempt: number;
54
54
  startedAt: string;
55
55
  durationMs: number;
@@ -71,7 +71,7 @@ export type ExtensionInstallation = {
71
71
  runtime: "hosted" | "webhook";
72
72
  status: "active" | "disabled";
73
73
  createdAt: string;
74
- events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
74
+ events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
75
75
  permissions: Array<"read" | "update" | "send" | "quarantine.read">;
76
76
  sendMode: "send" | "approval";
77
77
  scope: {
@@ -115,13 +115,13 @@ export type ExtensionVersionChange = {
115
115
  };
116
116
  export type UserId = string;
117
117
  export type ExtensionPermissionDiff = {
118
- added: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded">;
119
- removed: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded">;
118
+ added: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.action.resolved" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded">;
119
+ removed: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.action.resolved" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded">;
120
120
  };
121
121
  export type OrganizationId = string;
122
122
  export type UpgradeExtensionPayload = {
123
123
  version?: string | ExtensionVersionId | null | undefined;
124
- acceptPermissions?: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded"> | null | undefined;
124
+ acceptPermissions?: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.action.resolved" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded"> | null | undefined;
125
125
  dryRun?: boolean | null | undefined;
126
126
  };
127
127
  export type SuccessResponse = {
@@ -170,7 +170,7 @@ export type ExtensionVersion = {
170
170
  description?: string | null | undefined;
171
171
  version: string;
172
172
  runtime: "hosted" | "webhook";
173
- events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
173
+ events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
174
174
  permissions: Array<"read" | "update" | "send" | "quarantine.read">;
175
175
  };
176
176
  };
@@ -210,7 +210,7 @@ export type PublishExtensionVersionPayload = {
210
210
  description?: string | null | undefined;
211
211
  version: string;
212
212
  runtime: "hosted" | "webhook";
213
- events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
213
+ events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
214
214
  permissions: Array<"read" | "update" | "send" | "quarantine.read">;
215
215
  };
216
216
  bundle?: string | null | undefined;
@@ -369,11 +369,35 @@ export type MailboxNonSendAction = {
369
369
  threadId: MailboxThreadId | null;
370
370
  draftId: MailboxDraftId | null;
371
371
  decision: MailboxActionDecision | null;
372
+ /**
373
+ * How a held action's approval ended: who approved, denied, or cancelled it, when, and the denial reason. Null while it waits for approval and for an action that never needed one.
374
+ */
375
+ resolution: MailboxActionResolution | null;
372
376
  createdAt: string;
373
377
  updatedAt: string;
374
378
  type: "updateDraft" | "createNote" | "assignThread" | "changeThreadState" | "call" | "extensionRequest";
375
379
  state: "proposed" | "allowed" | "approvalRequired" | "policyDenied" | "approved" | "approvalDenied" | "executing" | "executed" | "failed";
376
380
  };
381
+ /**
382
+ * How the action's approval ended.
383
+ */
384
+ export type MailboxActionResolution = {
385
+ outcome: "approved" | "denied" | "cancelled";
386
+ /**
387
+ * Who resolved the approval.
388
+ */
389
+ actor: {
390
+ kind: "user" | "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system";
391
+ id: string;
392
+ displayName?: string | null | undefined;
393
+ source: "humanUi" | "externalApi" | "externalAgent" | "extension" | "system";
394
+ };
395
+ resolvedAt: string;
396
+ /**
397
+ * The denial reason; null for an approval or a cancellation.
398
+ */
399
+ reason: string | null;
400
+ };
377
401
  export type MailboxSendAction = {
378
402
  id: MailboxActionId;
379
403
  source: "humanUi" | "externalApi" | "aiSdkTool" | "extension" | "externalAgent" | "samvaManagedAgent" | "system";
@@ -385,6 +409,10 @@ export type MailboxSendAction = {
385
409
  threadId: MailboxThreadId | null;
386
410
  draftId: MailboxDraftId | null;
387
411
  decision: MailboxActionDecision | null;
412
+ /**
413
+ * How a held action's approval ended: who approved, denied, or cancelled it, when, and the denial reason. Null while it waits for approval and for an action that never needed one.
414
+ */
415
+ resolution: MailboxActionResolution | null;
388
416
  createdAt: string;
389
417
  updatedAt: string;
390
418
  type: "sendMessage" | "reply";
@@ -1130,7 +1158,7 @@ export type Organization = {
1130
1158
  billingAccountId: string;
1131
1159
  name: string;
1132
1160
  slug: string;
1133
- countryCode: string;
1161
+ defaultRegion: PhoneRegion | null;
1134
1162
  timezone: string;
1135
1163
  plan: string;
1136
1164
  isActive: boolean;
@@ -1150,6 +1178,10 @@ export type Organization = {
1150
1178
  teamMembersUsed: number;
1151
1179
  messagesResetAt: string | null;
1152
1180
  };
1181
+ /**
1182
+ * An ISO 3166-1 alpha-2 region code, such as US or IN.
1183
+ */
1184
+ export type PhoneRegion = string;
1153
1185
  export type IanaTimezone = string;
1154
1186
  export type WebhookAttemptId = string;
1155
1187
  export type WebhookDeliveryId = string;
@@ -1210,7 +1242,7 @@ export type WebhookEndpoint = {
1210
1242
  id: WebhookEndpointId;
1211
1243
  name: string;
1212
1244
  url: string;
1213
- eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
1245
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "contact.consent_changed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
1214
1246
  channels: Array<"email"> | null;
1215
1247
  mailboxIds: Array<MailboxId> | null;
1216
1248
  namespaceId: NamespaceId | null;
@@ -1224,7 +1256,7 @@ export type WebhookEndpoint = {
1224
1256
  export type UpdateWebhookPayload = {
1225
1257
  name?: string | null | undefined;
1226
1258
  url?: string | null | undefined;
1227
- eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook"> | null | undefined;
1259
+ eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "contact.consent_changed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook"> | null | undefined;
1228
1260
  channels?: Array<"email"> | null | null | undefined;
1229
1261
  mailboxIds?: [MailboxId, ...Array<MailboxId>] | null | null | undefined;
1230
1262
  namespaceId?: NamespaceId | null | null | undefined;
@@ -1241,7 +1273,7 @@ export type WebhookEndpointListItem = {
1241
1273
  id: WebhookEndpointId;
1242
1274
  name: string;
1243
1275
  url: string;
1244
- eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
1276
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "contact.consent_changed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
1245
1277
  channels: Array<"email"> | null;
1246
1278
  mailboxIds: Array<MailboxId> | null;
1247
1279
  namespaceId: NamespaceId | null;
@@ -1263,7 +1295,7 @@ export type WebhookDeliveryCounts = {
1263
1295
  export type CreateWebhookPayload = {
1264
1296
  name: string;
1265
1297
  url: string;
1266
- eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
1298
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "contact.consent_changed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
1267
1299
  channels?: Array<"email"> | null | undefined;
1268
1300
  mailboxIds?: [MailboxId, ...Array<MailboxId>] | null | undefined;
1269
1301
  namespaceId?: NamespaceId | null | undefined;
@@ -1517,17 +1549,28 @@ export type AnalyticsQueryError = {
1517
1549
  _tag: "AnalyticsQueryError";
1518
1550
  message: string;
1519
1551
  };
1552
+ export type ContactId = string;
1520
1553
  export type UnsubscribeGroupMemberPage = {
1521
1554
  items: Array<{
1522
- id: string;
1523
- email: string;
1524
- contactId: string | null;
1555
+ id: UnsubscribeGroupMemberId;
1556
+ contactId: ContactId;
1525
1557
  source: "link" | "api" | "manual" | "complaint";
1526
1558
  unsubscribedAt: string;
1527
1559
  createdAt: string;
1528
1560
  }>;
1529
1561
  nextCursor: string | null;
1530
1562
  };
1563
+ export type UnsubscribeGroupMemberId = string;
1564
+ export type UnsubscribeGroupMemberRef = UnsubscribeGroupMemberByContact | UnsubscribeGroupMemberByEmail | UnsubscribeGroupMemberByPhone;
1565
+ export type UnsubscribeGroupMemberByPhone = {
1566
+ phone: string;
1567
+ };
1568
+ export type UnsubscribeGroupMemberByEmail = {
1569
+ email: string;
1570
+ };
1571
+ export type UnsubscribeGroupMemberByContact = {
1572
+ contactId: ContactId;
1573
+ };
1531
1574
  export type UnsubscribeGroupList = {
1532
1575
  items: Array<{
1533
1576
  id: UnsubscribeId;
@@ -1556,7 +1599,6 @@ export type CustomFieldList = {
1556
1599
  updatedAt: string;
1557
1600
  }>;
1558
1601
  };
1559
- export type ContactId = string;
1560
1602
  export type ContactGroupId = string;
1561
1603
  export type ContactGroupMemberPage = {
1562
1604
  items: Array<{
@@ -1580,9 +1622,24 @@ export type ContactGroupMemberPage = {
1580
1622
  };
1581
1623
  export type ContactIdentity = {
1582
1624
  id: ContactIdentityId;
1583
- channel: "email";
1625
+ type: "email" | "phone";
1584
1626
  identifier: string;
1585
1627
  verified: boolean;
1628
+ channels: Array<ContactIdentityChannel>;
1629
+ };
1630
+ export type ContactIdentityChannel = {
1631
+ channel: "email";
1632
+ reachability: "unknown" | "reachable" | "unreachable";
1633
+ consent: ContactConsent | null;
1634
+ };
1635
+ export type ContactConsent = {
1636
+ status: "opted_in" | "opted_out";
1637
+ source: string;
1638
+ capturedAt: string;
1639
+ proof: JsonObject | null;
1640
+ };
1641
+ export type JsonObject = {
1642
+ [key: string]: JsonValue;
1586
1643
  };
1587
1644
  export type ContactIdentityId = string;
1588
1645
  export type ContactGroupPage = {
@@ -1688,9 +1745,6 @@ export type JourneyRunTrigger = {
1688
1745
  eventName: string;
1689
1746
  properties: JsonObject;
1690
1747
  };
1691
- export type JsonObject = {
1692
- [key: string]: JsonValue;
1693
- };
1694
1748
  export type JourneyRunExitReason = "completed" | "goal" | "archived";
1695
1749
  export type JourneyRunStatus = "active" | "paused" | "exited" | "failed";
1696
1750
  export type JourneyId = string;
@@ -2027,7 +2081,7 @@ export type ContactLocation = {
2027
2081
  timezone: string;
2028
2082
  };
2029
2083
  export type ContactIdentityInput = {
2030
- channel: "email";
2084
+ type: "email" | "phone";
2031
2085
  identifier: string;
2032
2086
  verified?: boolean | null | undefined;
2033
2087
  };
@@ -2050,6 +2104,15 @@ export type Contact = {
2050
2104
  export type ContactTags = {
2051
2105
  tags: [string, ...Array<string>];
2052
2106
  };
2107
+ export type SetContactConsent = {
2108
+ status: "opted_in" | "opted_out";
2109
+ /**
2110
+ * Where the consent was captured, such as a form URL or a checkout step.
2111
+ */
2112
+ source: string;
2113
+ capturedAt: string;
2114
+ proof?: JsonObject | null | undefined;
2115
+ };
2053
2116
  export type ContactProfileUpdate = {
2054
2117
  firstName?: string | null | null | undefined;
2055
2118
  lastName?: string | null | null | undefined;
@@ -2127,7 +2190,7 @@ export type ConversationContact = {
2127
2190
  name: string;
2128
2191
  displayName: string | null;
2129
2192
  identities: Array<{
2130
- channel: "email";
2193
+ type: "email" | "phone";
2131
2194
  identifier: string;
2132
2195
  verified: boolean;
2133
2196
  }>;
@@ -3122,9 +3185,15 @@ export type MessageDelivery = {
3122
3185
  readAt: string | null;
3123
3186
  failedAt: string | null;
3124
3187
  error: MessageDeliveryError | null;
3188
+ estimatedProviderCost: EstimatedProviderCost | null;
3125
3189
  createdAt: string;
3126
3190
  updatedAt: string;
3127
3191
  };
3192
+ export type EstimatedProviderCost = {
3193
+ amount: string;
3194
+ currency: string;
3195
+ billingMode: "pass_through";
3196
+ };
3128
3197
  export type MessageDeliveryError = {
3129
3198
  code: string | null;
3130
3199
  message: string | null;
@@ -8962,7 +9031,7 @@ export type ContactsUpdateResponses = {
8962
9031
  export type ContactsUpdateResponse = ContactsUpdateResponses[keyof ContactsUpdateResponses];
8963
9032
  export type ContactsAddIdentityData = {
8964
9033
  body: {
8965
- channel: "email";
9034
+ type: "email" | "phone";
8966
9035
  identifier: string;
8967
9036
  verified?: boolean | null | undefined;
8968
9037
  };
@@ -9053,6 +9122,58 @@ export type ContactsRemoveIdentityResponses = {
9053
9122
  200: Contact;
9054
9123
  };
9055
9124
  export type ContactsRemoveIdentityResponse = ContactsRemoveIdentityResponses[keyof ContactsRemoveIdentityResponses];
9125
+ export type ContactsSetConsentData = {
9126
+ body: {
9127
+ status: "opted_in" | "opted_out";
9128
+ /**
9129
+ * Where the consent was captured, such as a form URL or a checkout step.
9130
+ */
9131
+ source: string;
9132
+ capturedAt: string;
9133
+ proof?: JsonObject | null | undefined;
9134
+ };
9135
+ path: {
9136
+ id: ContactId;
9137
+ identityId: ContactIdentityId;
9138
+ channel: "email";
9139
+ };
9140
+ query?: never;
9141
+ url: "/v1/contacts/{id}/identities/{identityId}/consent/{channel}";
9142
+ };
9143
+ export type ContactsSetConsentErrors = {
9144
+ /**
9145
+ * UnauthorizedError
9146
+ */
9147
+ 401: UnauthorizedError;
9148
+ /**
9149
+ * ForbiddenError
9150
+ */
9151
+ 403: ForbiddenError;
9152
+ /**
9153
+ * ResourceNotFoundError
9154
+ */
9155
+ 404: ResourceNotFoundError;
9156
+ /**
9157
+ * ValidationError
9158
+ */
9159
+ 422: ValidationError;
9160
+ /**
9161
+ * InternalError
9162
+ */
9163
+ 500: InternalError;
9164
+ /**
9165
+ * GatewayTimeoutError
9166
+ */
9167
+ 504: GatewayTimeoutError;
9168
+ };
9169
+ export type ContactsSetConsentError = ContactsSetConsentErrors[keyof ContactsSetConsentErrors];
9170
+ export type ContactsSetConsentResponses = {
9171
+ /**
9172
+ * Contact
9173
+ */
9174
+ 200: Contact;
9175
+ };
9176
+ export type ContactsSetConsentResponse = ContactsSetConsentResponses[keyof ContactsSetConsentResponses];
9056
9177
  export type ContactsRemoveTagsData = {
9057
9178
  body: {
9058
9179
  tags: [string, ...Array<string>];
@@ -11389,9 +11510,9 @@ export type UnsubscribeSetDefaultResponses = {
11389
11510
  };
11390
11511
  };
11391
11512
  export type UnsubscribeSetDefaultResponse = UnsubscribeSetDefaultResponses[keyof UnsubscribeSetDefaultResponses];
11392
- export type UnsubscribeRemoveEmailsData = {
11513
+ export type UnsubscribeRemoveMembersData = {
11393
11514
  body: {
11394
- emails: Array<string>;
11515
+ members: Array<UnsubscribeGroupMemberRef>;
11395
11516
  };
11396
11517
  path: {
11397
11518
  id: UnsubscribeId;
@@ -11399,7 +11520,7 @@ export type UnsubscribeRemoveEmailsData = {
11399
11520
  query?: never;
11400
11521
  url: "/v1/unsubscribe-groups/{id}/members";
11401
11522
  };
11402
- export type UnsubscribeRemoveEmailsErrors = {
11523
+ export type UnsubscribeRemoveMembersErrors = {
11403
11524
  /**
11404
11525
  * UnauthorizedError
11405
11526
  */
@@ -11425,8 +11546,8 @@ export type UnsubscribeRemoveEmailsErrors = {
11425
11546
  */
11426
11547
  504: GatewayTimeoutError;
11427
11548
  };
11428
- export type UnsubscribeRemoveEmailsError = UnsubscribeRemoveEmailsErrors[keyof UnsubscribeRemoveEmailsErrors];
11429
- export type UnsubscribeRemoveEmailsResponses = {
11549
+ export type UnsubscribeRemoveMembersError = UnsubscribeRemoveMembersErrors[keyof UnsubscribeRemoveMembersErrors];
11550
+ export type UnsubscribeRemoveMembersResponses = {
11430
11551
  /**
11431
11552
  * Success
11432
11553
  */
@@ -11434,7 +11555,7 @@ export type UnsubscribeRemoveEmailsResponses = {
11434
11555
  removed: number;
11435
11556
  };
11436
11557
  };
11437
- export type UnsubscribeRemoveEmailsResponse = UnsubscribeRemoveEmailsResponses[keyof UnsubscribeRemoveEmailsResponses];
11558
+ export type UnsubscribeRemoveMembersResponse = UnsubscribeRemoveMembersResponses[keyof UnsubscribeRemoveMembersResponses];
11438
11559
  export type UnsubscribeListMembersData = {
11439
11560
  body?: never;
11440
11561
  path: {
@@ -11480,9 +11601,9 @@ export type UnsubscribeListMembersResponses = {
11480
11601
  200: UnsubscribeGroupMemberPage;
11481
11602
  };
11482
11603
  export type UnsubscribeListMembersResponse = UnsubscribeListMembersResponses[keyof UnsubscribeListMembersResponses];
11483
- export type UnsubscribeAddEmailsData = {
11604
+ export type UnsubscribeAddMembersData = {
11484
11605
  body: {
11485
- emails: Array<string>;
11606
+ members: Array<UnsubscribeGroupMemberRef>;
11486
11607
  source?: "link" | "api" | "manual" | "complaint" | null | undefined;
11487
11608
  };
11488
11609
  path: {
@@ -11491,11 +11612,15 @@ export type UnsubscribeAddEmailsData = {
11491
11612
  query?: never;
11492
11613
  url: "/v1/unsubscribe-groups/{id}/members";
11493
11614
  };
11494
- export type UnsubscribeAddEmailsErrors = {
11615
+ export type UnsubscribeAddMembersErrors = {
11495
11616
  /**
11496
11617
  * UnauthorizedError
11497
11618
  */
11498
11619
  401: UnauthorizedError;
11620
+ /**
11621
+ * PaymentRequiredError
11622
+ */
11623
+ 402: PaymentRequiredError;
11499
11624
  /**
11500
11625
  * ForbiddenError
11501
11626
  */
@@ -11512,13 +11637,17 @@ export type UnsubscribeAddEmailsErrors = {
11512
11637
  * InternalError
11513
11638
  */
11514
11639
  500: InternalError;
11640
+ /**
11641
+ * BillingProviderError
11642
+ */
11643
+ 502: BillingProviderError;
11515
11644
  /**
11516
11645
  * GatewayTimeoutError
11517
11646
  */
11518
11647
  504: GatewayTimeoutError;
11519
11648
  };
11520
- export type UnsubscribeAddEmailsError = UnsubscribeAddEmailsErrors[keyof UnsubscribeAddEmailsErrors];
11521
- export type UnsubscribeAddEmailsResponses = {
11649
+ export type UnsubscribeAddMembersError = UnsubscribeAddMembersErrors[keyof UnsubscribeAddMembersErrors];
11650
+ export type UnsubscribeAddMembersResponses = {
11522
11651
  /**
11523
11652
  * Success
11524
11653
  */
@@ -11527,12 +11656,14 @@ export type UnsubscribeAddEmailsResponses = {
11527
11656
  skipped: number;
11528
11657
  };
11529
11658
  };
11530
- export type UnsubscribeAddEmailsResponse = UnsubscribeAddEmailsResponses[keyof UnsubscribeAddEmailsResponses];
11659
+ export type UnsubscribeAddMembersResponse = UnsubscribeAddMembersResponses[keyof UnsubscribeAddMembersResponses];
11531
11660
  export type UnsubscribeCheckSubscriptionData = {
11532
11661
  body?: never;
11533
11662
  path?: never;
11534
- query: {
11535
- email: string;
11663
+ query?: {
11664
+ contactId?: ContactId | null | undefined;
11665
+ email?: string | null | undefined;
11666
+ phone?: string | null | undefined;
11536
11667
  groupIds?: string | null | undefined;
11537
11668
  };
11538
11669
  url: "/v1/unsubscribe-groups/check";
@@ -11565,7 +11696,7 @@ export type UnsubscribeCheckSubscriptionResponses = {
11565
11696
  * Success
11566
11697
  */
11567
11698
  200: {
11568
- email: string;
11699
+ contactId: ContactId | null;
11569
11700
  unsubscribedGroups: Array<{
11570
11701
  groupId: string;
11571
11702
  groupName: string;
@@ -14781,7 +14912,7 @@ export type WebhooksCreateData = {
14781
14912
  body: {
14782
14913
  name: string;
14783
14914
  url: string;
14784
- eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
14915
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "contact.consent_changed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook">;
14785
14916
  channels?: Array<"email"> | null | undefined;
14786
14917
  mailboxIds?: [MailboxId, ...Array<MailboxId>] | null | undefined;
14787
14918
  namespaceId?: NamespaceId | null | undefined;
@@ -14935,7 +15066,7 @@ export type WebhooksUpdateData = {
14935
15066
  body: {
14936
15067
  name?: string | null | undefined;
14937
15068
  url?: string | null | undefined;
14938
- eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook"> | null | undefined;
15069
+ eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "message.opened" | "message.clicked" | "contact.created" | "contact.updated" | "contact.deleted" | "contact.subscribed" | "contact.unsubscribed" | "contact.resubscribed" | "contact.consent_changed" | "conversation.created" | "conversation.updated" | "conversation.archived" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated" | "mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded" | "journey.webhook"> | null | undefined;
14939
15070
  channels?: Array<"email"> | null | null | undefined;
14940
15071
  mailboxIds?: [MailboxId, ...Array<MailboxId>] | null | null | undefined;
14941
15072
  namespaceId?: NamespaceId | null | null | undefined;
@@ -15314,7 +15445,7 @@ export type OrganizationsUpdateData = {
15314
15445
  body: {
15315
15446
  name?: string | null | undefined;
15316
15447
  slug?: string | null | undefined;
15317
- countryCode?: string | null | undefined;
15448
+ defaultRegion?: PhoneRegion | null | null | undefined;
15318
15449
  timezone?: IanaTimezone | null | undefined;
15319
15450
  isActive?: boolean | null | undefined;
15320
15451
  metadata?: {
@@ -19303,7 +19434,7 @@ export type ExtensionsPublishData = {
19303
19434
  description?: string | null | undefined;
19304
19435
  version: string;
19305
19436
  runtime: "hosted" | "webhook";
19306
- events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
19437
+ events: Array<"mailbox.message.received" | "mailbox.message.sent" | "mailbox.action.pending_approval" | "mailbox.action.resolved" | "mailbox.message.quarantined" | "mailbox.message.released" | "mailbox.message.discarded">;
19307
19438
  permissions: Array<"read" | "update" | "send" | "quarantine.read">;
19308
19439
  };
19309
19440
  bundle?: string | null | undefined;
@@ -19680,7 +19811,7 @@ export type ExtensionInstallationsGetResponse = ExtensionInstallationsGetRespons
19680
19811
  export type ExtensionInstallationsUpgradeData = {
19681
19812
  body: {
19682
19813
  version?: string | ExtensionVersionId | null | undefined;
19683
- acceptPermissions?: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded"> | null | undefined;
19814
+ acceptPermissions?: Array<"permission:read" | "permission:update" | "permission:send" | "permission:quarantine.read" | "event:mailbox.message.received" | "event:mailbox.message.sent" | "event:mailbox.action.pending_approval" | "event:mailbox.action.resolved" | "event:mailbox.message.quarantined" | "event:mailbox.message.released" | "event:mailbox.message.discarded"> | null | undefined;
19684
19815
  dryRun?: boolean | null | undefined;
19685
19816
  };
19686
19817
  path: {
@@ -275,9 +275,21 @@ export declare const getMembers: ((input: {
275
275
  readonly type: string;
276
276
  readonly identities?: readonly {
277
277
  readonly id: string & import("effect/Brand").Brand<"ContactIdentityId">;
278
- readonly channel: "email";
278
+ readonly type: "email" | "phone";
279
279
  readonly identifier: string;
280
280
  readonly verified: boolean;
281
+ readonly channels: readonly {
282
+ readonly channel: "email";
283
+ readonly reachability: "reachable" | "unknown" | "unreachable";
284
+ readonly consent: {
285
+ readonly status: "opted_in" | "opted_out";
286
+ readonly source: string;
287
+ readonly capturedAt: string;
288
+ readonly proof: {
289
+ readonly [x: string]: import("./generated").JsonValue;
290
+ } | null;
291
+ } | null;
292
+ }[];
281
293
  }[] | null;
282
294
  } | null;
283
295
  }[];
@@ -304,9 +316,21 @@ export declare const getMembers: ((input: {
304
316
  readonly type: string;
305
317
  readonly identities?: readonly {
306
318
  readonly id: string & import("effect/Brand").Brand<"ContactIdentityId">;
307
- readonly channel: "email";
319
+ readonly type: "email" | "phone";
308
320
  readonly identifier: string;
309
321
  readonly verified: boolean;
322
+ readonly channels: readonly {
323
+ readonly channel: "email";
324
+ readonly reachability: "reachable" | "unknown" | "unreachable";
325
+ readonly consent: {
326
+ readonly status: "opted_in" | "opted_out";
327
+ readonly source: string;
328
+ readonly capturedAt: string;
329
+ readonly proof: {
330
+ readonly [x: string]: import("./generated").JsonValue;
331
+ } | null;
332
+ } | null;
333
+ }[];
310
334
  }[] | null;
311
335
  } | null;
312
336
  }[];
@@ -332,9 +356,21 @@ export declare const getMembers: ((input: {
332
356
  readonly type: string;
333
357
  readonly identities?: readonly {
334
358
  readonly id: string & import("effect/Brand").Brand<"ContactIdentityId">;
335
- readonly channel: "email";
359
+ readonly type: "email" | "phone";
336
360
  readonly identifier: string;
337
361
  readonly verified: boolean;
362
+ readonly channels: readonly {
363
+ readonly channel: "email";
364
+ readonly reachability: "reachable" | "unknown" | "unreachable";
365
+ readonly consent: {
366
+ readonly status: "opted_in" | "opted_out";
367
+ readonly source: string;
368
+ readonly capturedAt: string;
369
+ readonly proof: {
370
+ readonly [x: string]: import("./generated").JsonValue;
371
+ } | null;
372
+ } | null;
373
+ }[];
338
374
  }[] | null;
339
375
  } | null;
340
376
  }, import("./errors").ForbiddenError | import("./errors").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./errors").InternalError | import("./errors").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./errors").UnauthorizedError | import("./errors").ValidationError, import("./client").Service>;