@epilot/sdk 2.18.5 → 2.18.7

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 (141) hide show
  1. package/definitions/email-settings-runtime.json +1 -1
  2. package/definitions/email-settings.json +50 -10
  3. package/definitions/integration-toolkit-runtime.json +1 -1
  4. package/definitions/integration-toolkit.json +176 -8
  5. package/dist/apis/access-token.cjs +6 -6
  6. package/dist/apis/access-token.js +1 -1
  7. package/dist/apis/address-suggestions.cjs +6 -6
  8. package/dist/apis/address-suggestions.js +1 -1
  9. package/dist/apis/address.cjs +6 -6
  10. package/dist/apis/address.js +1 -1
  11. package/dist/apis/ai-agents.cjs +6 -6
  12. package/dist/apis/ai-agents.js +1 -1
  13. package/dist/apis/app.cjs +6 -6
  14. package/dist/apis/app.js +1 -1
  15. package/dist/apis/audit-logs.cjs +6 -6
  16. package/dist/apis/audit-logs.js +1 -1
  17. package/dist/apis/automation.cjs +6 -6
  18. package/dist/apis/automation.js +1 -1
  19. package/dist/apis/billing.cjs +6 -6
  20. package/dist/apis/billing.js +1 -1
  21. package/dist/apis/blueprint-manifest.cjs +6 -6
  22. package/dist/apis/blueprint-manifest.js +1 -1
  23. package/dist/apis/calendar.cjs +6 -6
  24. package/dist/apis/calendar.js +1 -1
  25. package/dist/apis/configuration-hub.cjs +6 -6
  26. package/dist/apis/configuration-hub.js +1 -1
  27. package/dist/apis/consent.cjs +6 -6
  28. package/dist/apis/consent.js +1 -1
  29. package/dist/apis/customer-portal.cjs +6 -6
  30. package/dist/apis/customer-portal.js +1 -1
  31. package/dist/apis/dashboard.cjs +6 -6
  32. package/dist/apis/dashboard.js +1 -1
  33. package/dist/apis/data-governance.cjs +6 -6
  34. package/dist/apis/data-governance.js +1 -1
  35. package/dist/apis/deduplication.cjs +6 -6
  36. package/dist/apis/deduplication.js +1 -1
  37. package/dist/apis/design.cjs +6 -6
  38. package/dist/apis/design.js +1 -1
  39. package/dist/apis/document.cjs +6 -6
  40. package/dist/apis/document.js +1 -1
  41. package/dist/apis/email-settings.cjs +8 -8
  42. package/dist/apis/email-settings.d.cts +2 -2
  43. package/dist/apis/email-settings.d.ts +2 -2
  44. package/dist/apis/email-settings.js +2 -2
  45. package/dist/apis/email-template.cjs +6 -6
  46. package/dist/apis/email-template.js +1 -1
  47. package/dist/apis/entity-mapping.cjs +6 -6
  48. package/dist/apis/entity-mapping.js +1 -1
  49. package/dist/apis/entity.cjs +6 -6
  50. package/dist/apis/entity.js +1 -1
  51. package/dist/apis/environments.cjs +6 -6
  52. package/dist/apis/environments.js +1 -1
  53. package/dist/apis/event-catalog.cjs +6 -6
  54. package/dist/apis/event-catalog.js +1 -1
  55. package/dist/apis/file.cjs +6 -6
  56. package/dist/apis/file.js +1 -1
  57. package/dist/apis/iban.cjs +6 -6
  58. package/dist/apis/iban.js +1 -1
  59. package/dist/apis/integration-toolkit.cjs +8 -8
  60. package/dist/apis/integration-toolkit.d.cts +2 -2
  61. package/dist/apis/integration-toolkit.d.ts +2 -2
  62. package/dist/apis/integration-toolkit.js +2 -2
  63. package/dist/apis/journey.cjs +6 -6
  64. package/dist/apis/journey.js +1 -1
  65. package/dist/apis/kanban.cjs +6 -6
  66. package/dist/apis/kanban.js +1 -1
  67. package/dist/apis/message.cjs +6 -6
  68. package/dist/apis/message.js +1 -1
  69. package/dist/apis/metering.cjs +6 -6
  70. package/dist/apis/metering.js +1 -1
  71. package/dist/apis/notes.cjs +6 -6
  72. package/dist/apis/notes.js +1 -1
  73. package/dist/apis/notification.cjs +6 -6
  74. package/dist/apis/notification.js +1 -1
  75. package/dist/apis/organization.cjs +6 -6
  76. package/dist/apis/organization.js +1 -1
  77. package/dist/apis/partner-directory.cjs +6 -6
  78. package/dist/apis/partner-directory.js +1 -1
  79. package/dist/apis/permissions.cjs +6 -6
  80. package/dist/apis/permissions.js +1 -1
  81. package/dist/apis/pricing-tier.cjs +6 -6
  82. package/dist/apis/pricing-tier.js +1 -1
  83. package/dist/apis/pricing.cjs +6 -6
  84. package/dist/apis/pricing.js +1 -1
  85. package/dist/apis/purpose.cjs +6 -6
  86. package/dist/apis/purpose.js +1 -1
  87. package/dist/apis/query.cjs +6 -6
  88. package/dist/apis/query.js +1 -1
  89. package/dist/apis/sandbox.cjs +6 -6
  90. package/dist/apis/sandbox.js +1 -1
  91. package/dist/apis/sharing.cjs +6 -6
  92. package/dist/apis/sharing.js +1 -1
  93. package/dist/apis/snapshot.cjs +6 -6
  94. package/dist/apis/snapshot.js +1 -1
  95. package/dist/apis/submission.cjs +6 -6
  96. package/dist/apis/submission.js +1 -1
  97. package/dist/apis/target.cjs +6 -6
  98. package/dist/apis/target.js +1 -1
  99. package/dist/apis/targeting.cjs +6 -6
  100. package/dist/apis/targeting.js +1 -1
  101. package/dist/apis/template-variables.cjs +6 -6
  102. package/dist/apis/template-variables.js +1 -1
  103. package/dist/apis/user.cjs +6 -6
  104. package/dist/apis/user.js +1 -1
  105. package/dist/apis/validation-rules.cjs +6 -6
  106. package/dist/apis/validation-rules.js +1 -1
  107. package/dist/apis/webhooks.cjs +6 -6
  108. package/dist/apis/webhooks.js +1 -1
  109. package/dist/apis/workflow-definition.cjs +6 -6
  110. package/dist/apis/workflow-definition.js +1 -1
  111. package/dist/apis/workflow.cjs +6 -6
  112. package/dist/apis/workflow.js +1 -1
  113. package/dist/{chunk-EWY5NKI7.cjs → chunk-2L5YHQFJ.cjs} +4 -4
  114. package/dist/{chunk-KHKNOPEX.js → chunk-7HQ3GMYQ.js} +1 -1
  115. package/dist/{chunk-YNJPE3SS.cjs → chunk-AWJHA3GG.cjs} +1 -1
  116. package/dist/{chunk-5MIH4RZR.js → chunk-FMM7LLAO.js} +4 -4
  117. package/dist/{chunk-RXFXAZK3.cjs → chunk-TIH5X7Q4.cjs} +1 -1
  118. package/dist/{chunk-5OOGTDF2.js → chunk-YWZCVCG2.js} +1 -1
  119. package/dist/email-settings-U753HXGA.js +7 -0
  120. package/dist/email-settings-Z5EBAELW.cjs +7 -0
  121. package/dist/{email-settings-runtime-J7JLYDMU.cjs → email-settings-runtime-IW2AT2RB.cjs} +2 -2
  122. package/dist/{email-settings-runtime-4BT72ADN.js → email-settings-runtime-YJYEC5AH.js} +1 -1
  123. package/dist/{email-settings.d-CR4lORuR.d.cts → email-settings.d-DViLYaOl.d.cts} +56 -14
  124. package/dist/{email-settings.d-CR4lORuR.d.ts → email-settings.d-DViLYaOl.d.ts} +56 -14
  125. package/dist/index.cjs +12 -12
  126. package/dist/index.d.cts +2 -2
  127. package/dist/index.d.ts +2 -2
  128. package/dist/index.js +3 -3
  129. package/dist/integration-toolkit-MT7RPOOG.js +7 -0
  130. package/dist/integration-toolkit-S5BHYFIW.cjs +7 -0
  131. package/dist/{integration-toolkit-runtime-2MBB4EOE.js → integration-toolkit-runtime-6J2KUTFL.js} +1 -1
  132. package/dist/{integration-toolkit-runtime-VUI4NCRJ.cjs → integration-toolkit-runtime-REEOXZO6.cjs} +2 -2
  133. package/dist/{integration-toolkit.d-E2nrIdIM.d.cts → integration-toolkit.d-CVI89-A-.d.cts} +122 -9
  134. package/dist/{integration-toolkit.d-E2nrIdIM.d.ts → integration-toolkit.d-CVI89-A-.d.ts} +122 -9
  135. package/docs/email-settings.md +17 -13
  136. package/docs/integration-toolkit.md +103 -7
  137. package/package.json +1 -1
  138. package/dist/email-settings-ECSU7KWC.js +0 -7
  139. package/dist/email-settings-RHMYC2KT.cjs +0 -7
  140. package/dist/integration-toolkit-63NIMAHB.js +0 -7
  141. package/dist/integration-toolkit-7NCK7Z5G.cjs +0 -7
@@ -92,12 +92,17 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
92
92
  - [`createErpImport`](#createerpimport)
93
93
  - [`listErpImports`](#listerpimports)
94
94
  - [`getErpImport`](#geterpimport)
95
+ - [`validateErpImport`](#validateerpimport)
96
+ - [`suggestErpImportUseCases`](#suggesterpimportusecases)
95
97
  - [`executeErpImport`](#executeerpimport)
96
98
  - [`abortErpImport`](#aborterpimport)
97
99
 
98
100
  **Schemas**
99
101
  - [`S3Reference`](#s3reference)
100
102
  - [`CreateErpImportRequest`](#createerpimportrequest)
103
+ - [`ValidateErpImportRequest`](#validateerpimportrequest)
104
+ - [`ErpImportUseCaseSuggestion`](#erpimportusecasesuggestion)
105
+ - [`SuggestErpImportUseCasesResponse`](#suggesterpimportusecasesresponse)
101
106
  - [`ExecuteErpImportRequest`](#executeerpimportrequest)
102
107
  - [`ErpImportIssue`](#erpimportissue)
103
108
  - [`ErpImportValidation`](#erpimportvalidation)
@@ -3192,7 +3197,7 @@ const { data } = await client.commitTypes(
3192
3197
 
3193
3198
  ### `createErpImport`
3194
3199
 
3195
- Create a pricing-file import job from an already-uploaded file (S3 ref). Returns a job id and starts the validate phase asynchronously poll GET /v2/erp/imports/{importId}.
3200
+ Register an already-uploaded file (S3 ref) as a pricing-file import job and return its id. Nothing runs yet: no use case is chosen and no validation starts here. Rank the candidates with POST /v2/erp/
3196
3201
 
3197
3202
  `POST /v2/erp/imports`
3198
3203
 
@@ -3203,9 +3208,7 @@ const { data } = await client.createErpImport(
3203
3208
  s3_reference: {
3204
3209
  bucket: 'string',
3205
3210
  key: 'string'
3206
- },
3207
- integration_id: 'string',
3208
- use_case_slug: 'string'
3211
+ }
3209
3212
  },
3210
3213
  )
3211
3214
  ```
@@ -3340,6 +3343,62 @@ const { data } = await client.getErpImport({
3340
3343
 
3341
3344
  ---
3342
3345
 
3346
+ ### `validateErpImport`
3347
+
3348
+ Choose the use case to read this file with, and start the validate phase.
3349
+ Callable from PENDING, READY and FAILED — so a wrong choice is corrected by calling this again with a different use case, rath
3350
+
3351
+ `POST /v2/erp/imports/{importId}:validate`
3352
+
3353
+ ```ts
3354
+ const { data } = await client.validateErpImport(
3355
+ {
3356
+ importId: 'example',
3357
+ },
3358
+ {
3359
+ integration_id: 'string',
3360
+ use_case_slug: 'string'
3361
+ },
3362
+ )
3363
+ ```
3364
+
3365
+ ---
3366
+
3367
+ ### `suggestErpImportUseCases`
3368
+
3369
+ Rank the org's inbound use cases against this file's columns — the input to the ranked picker ("matches 6 of your 7 columns"). Reads only the file's first row, not its data.
3370
+ Every eligible use case is
3371
+
3372
+ `POST /v2/erp/imports/{importId}:suggest-use-cases`
3373
+
3374
+ ```ts
3375
+ const { data } = await client.suggestErpImportUseCases({
3376
+ importId: 'example',
3377
+ })
3378
+ ```
3379
+
3380
+ <details>
3381
+ <summary>Response</summary>
3382
+
3383
+ ```json
3384
+ {
3385
+ "suggestions": [
3386
+ {
3387
+ "integration_id": "string",
3388
+ "integration_name": "string",
3389
+ "use_case_slug": "string",
3390
+ "use_case_name": "string",
3391
+ "matched_columns": 0,
3392
+ "file_columns": 0
3393
+ }
3394
+ ]
3395
+ }
3396
+ ```
3397
+
3398
+ </details>
3399
+
3400
+ ---
3401
+
3343
3402
  ### `executeErpImport`
3344
3403
 
3345
3404
  Confirm and run the write phase of a validated import. Only a READY job may be executed; any other status returns 409.
@@ -3434,14 +3493,51 @@ type S3Reference = {
3434
3493
 
3435
3494
  ### `CreateErpImportRequest`
3436
3495
 
3496
+ Register an already-uploaded file as an import. The use case is chosen later, via `:validate` — upload and interpretation are separate decisions.
3497
+
3437
3498
  ```ts
3438
3499
  type CreateErpImportRequest = {
3439
3500
  s3_reference: {
3440
3501
  bucket: string
3441
3502
  key: string
3442
3503
  }
3504
+ }
3505
+ ```
3506
+
3507
+ ### `ValidateErpImportRequest`
3508
+
3509
+ ```ts
3510
+ type ValidateErpImportRequest = {
3443
3511
  integration_id: string
3444
- use_case_slug?: string
3512
+ use_case_slug: string
3513
+ }
3514
+ ```
3515
+
3516
+ ### `ErpImportUseCaseSuggestion`
3517
+
3518
+ ```ts
3519
+ type ErpImportUseCaseSuggestion = {
3520
+ integration_id: string
3521
+ integration_name: string
3522
+ use_case_slug: string
3523
+ use_case_name: string
3524
+ matched_columns: number
3525
+ file_columns: number
3526
+ }
3527
+ ```
3528
+
3529
+ ### `SuggestErpImportUseCasesResponse`
3530
+
3531
+ ```ts
3532
+ type SuggestErpImportUseCasesResponse = {
3533
+ suggestions: Array<{
3534
+ integration_id: string
3535
+ integration_name: string
3536
+ use_case_slug: string
3537
+ use_case_name: string
3538
+ matched_columns: number
3539
+ file_columns: number
3540
+ }>
3445
3541
  }
3446
3542
  ```
3447
3543
 
@@ -3525,7 +3621,7 @@ type ErpImportJob = {
3525
3621
  import_id: string
3526
3622
  org_id: string
3527
3623
  created_by?: string
3528
- integration_id: string
3624
+ integration_id?: string
3529
3625
  use_case_slug?: string
3530
3626
  format: "csv" | "xlsx"
3531
3627
  status: "PENDING" | "VALIDATING" | "READY" | "PROCESSING" | "IMPORTED" | "FAILED" | "CANCELLING" | "CANCELLED"
@@ -3568,7 +3664,7 @@ type ErpImportList = {
3568
3664
  import_id: string
3569
3665
  org_id: string
3570
3666
  created_by?: string
3571
- integration_id: string
3667
+ integration_id?: string
3572
3668
  use_case_slug?: string
3573
3669
  format: "csv" | "xlsx"
3574
3670
  status: "PENDING" | "VALIDATING" | "READY" | "PROCESSING" | "IMPORTED" | "FAILED" | "CANCELLING" | "CANCELLED"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/sdk",
3
- "version": "2.18.5",
3
+ "version": "2.18.7",
4
4
  "description": "JavaScript/TypeScript SDK for epilot APIs",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1,7 +0,0 @@
1
- import "./chunk-YPSWSI3M.js";
2
-
3
- // src/docs/email-settings.json
4
- var email_settings_default = '# Messaging Settings API\n\n- **Base URL:** `https://email-settings.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/email-settings](https://docs.epilot.io/api/email-settings)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.emailSettings.provisionEpilotEmailAddress(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/email-settings\'\n\nconst emailSettingsClient = getClient()\nauthorize(emailSettingsClient, () => \'<token>\')\nconst { data } = await emailSettingsClient.provisionEpilotEmailAddress(...)\n```\n\n## Operations\n\n**Email addresses**\n- [`provisionEpilotEmailAddress`](#provisionepilotemailaddress)\n- [`setEmailAddressPrimary`](#setemailaddressprimary)\n- [`getEmailAddress`](#getemailaddress)\n- [`deleteEmailAddress`](#deleteemailaddress)\n- [`updateEmailAddress`](#updateemailaddress)\n- [`listEmailAddresses`](#listemailaddresses)\n- [`addEmailAddress`](#addemailaddress)\n\n**Shared inboxes**\n- [`getSharedInbox`](#getsharedinbox)\n- [`deleteSharedInbox`](#deletesharedinbox)\n- [`updateSharedInbox`](#updatesharedinbox)\n- [`listSharedInboxes`](#listsharedinboxes)\n- [`addSharedInbox`](#addsharedinbox)\n\n**Inbox buckets**\n- [`listInboxBuckets`](#listinboxbuckets)\n\n**O365 Outlook Connection**\n- [`connectOutlook`](#connectoutlook)\n- [`getOutlookConnectionStatus`](#getoutlookconnectionstatus)\n- [`getCalendarAdminConsentStatus`](#getcalendaradminconsentstatus)\n- [`getMyCalendarConnection`](#getmycalendarconnection)\n- [`disconnectMyCalendar`](#disconnectmycalendar)\n- [`disconnectOutlook`](#disconnectoutlook)\n- [`connectOutlookMailbox`](#connectoutlookmailbox)\n- [`disconnectOutlookMailbox`](#disconnectoutlookmailbox)\n- [`startMailboxSync`](#startmailboxsync)\n- [`getMailboxSyncStatus`](#getmailboxsyncstatus)\n- [`retryMailboxSync`](#retrymailboxsync)\n- [`getConnectedOutlookEmails`](#getconnectedoutlookemails)\n- [`outlookOAuthCallback`](#outlookoauthcallback)\n\n**Channels**\n- [`connectMsTeams`](#connectmsteams)\n- [`disconnectMsTeams`](#disconnectmsteams)\n- [`getMsTeamsStatus`](#getmsteamsstatus)\n\n**Custom SMTP**\n- [`listSmtpConnections`](#listsmtpconnections)\n- [`createSmtpConnection`](#createsmtpconnection)\n- [`getSmtpConnection`](#getsmtpconnection)\n- [`updateSmtpConnection`](#updatesmtpconnection)\n- [`deleteSmtpConnection`](#deletesmtpconnection)\n- [`testSmtpConnection`](#testsmtpconnection)\n- [`listSmtpSenders`](#listsmtpsenders)\n- [`connectSmtpSender`](#connectsmtpsender)\n- [`disconnectSmtpSender`](#disconnectsmtpsender)\n\n**Settings**\n- [`getSettings`](#getsettings)\n- [`addSetting`](#addsetting)\n- [`deleteSetting`](#deletesetting)\n- [`updateSetting`](#updatesetting)\n\n**Domains**\n- [`addDomain`](#adddomain)\n- [`deleteDomain`](#deletedomain)\n- [`getDomains`](#getdomains)\n- [`verifyNameServers`](#verifynameservers)\n- [`verifyDnsRecords`](#verifydnsrecords)\n- [`verifyDomain`](#verifydomain)\n\n**Schemas**\n- [`ConnectOutlookRequest`](#connectoutlookrequest)\n- [`MailboxSyncStatus`](#mailboxsyncstatus)\n- [`MailboxSyncStatuses`](#mailboxsyncstatuses)\n- [`MailboxSyncFolderStatuses`](#mailboxsyncfolderstatuses)\n- [`MailboxSyncTimeframePeriods`](#mailboxsynctimeframeperiods)\n- [`InboxBucketResponse`](#inboxbucketresponse)\n- [`ProvisionEpilotEmailAddressPayload`](#provisionepilotemailaddresspayload)\n- [`SetEmailAddressPrimaryPayload`](#setemailaddressprimarypayload)\n- [`UpdateEmailAddressPayload`](#updateemailaddresspayload)\n- [`CreateEmailAddressPayload`](#createemailaddresspayload)\n- [`EmailAddressResponse`](#emailaddressresponse)\n- [`ErrorResponse`](#errorresponse)\n- [`SettingMeta`](#settingmeta)\n- [`UpdateSharedInboxPayload`](#updatesharedinboxpayload)\n- [`CreateSharedInboxPayload`](#createsharedinboxpayload)\n- [`SharedInboxResponse`](#sharedinboxresponse)\n- [`SettingsResponse`](#settingsresponse)\n- [`ConnectedOutlookEmail`](#connectedoutlookemail)\n- [`OutlookConnectionError`](#outlookconnectionerror)\n- [`CalendarAdminConsentStatus`](#calendaradminconsentstatus)\n- [`MyCalendarConnectionResponse`](#mycalendarconnectionresponse)\n- [`CalendarConnectionInfo`](#calendarconnectioninfo)\n- [`OutlookConnectionStatus`](#outlookconnectionstatus)\n- [`SmtpConnection`](#smtpconnection)\n- [`CreateSmtpConnectionRequest`](#createsmtpconnectionrequest)\n- [`UpdateSmtpConnectionRequest`](#updatesmtpconnectionrequest)\n- [`SmtpSender`](#smtpsender)\n- [`ConnectSmtpSenderRequest`](#connectsmtpsenderrequest)\n- [`SmtpTestResult`](#smtptestresult)\n- [`SignatureSetting`](#signaturesetting)\n- [`EmailDomainSetting`](#emaildomainsetting)\n- [`EmailAddressSetting`](#emailaddresssetting)\n- [`WhitelistEmailAddressSetting`](#whitelistemailaddresssetting)\n- [`RestrictDuplicatesWithinSetting`](#restrictduplicateswithinsetting)\n- [`SettingType`](#settingtype)\n- [`Setting`](#setting)\n- [`Domain`](#domain)\n\n### `provisionEpilotEmailAddress`\n\nProvisions or reactivates an epilot-managed email address for the organization.\n\n`PUT /v2/email-settings/email-addresses/epilot:provision`\n\n```ts\nconst { data } = await client.provisionEpilotEmailAddress(\n null,\n {\n address: \'mycompany@epilot.cloud\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `setEmailAddressPrimary`\n\nSets the specified email address as the primary address for the organization.\n\n`POST /v2/email-settings/email-addresses/primary`\n\n```ts\nconst { data } = await client.setEmailAddressPrimary(\n null,\n {\n address: \'sales@yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `getEmailAddress`\n\nRetrieves the details of a specific email address by its ID.\n\n`GET /v2/email-settings/email-addresses/{id}`\n\n```ts\nconst { data } = await client.getEmailAddress({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `deleteEmailAddress`\n\nPermanently deletes an email address from the organization.\n\n`DELETE /v2/email-settings/email-addresses/{id}`\n\n```ts\nconst { data } = await client.deleteEmailAddress({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `updateEmailAddress`\n\nUpdates the configuration of an existing email address.\n\n`PUT /v2/email-settings/email-addresses/{id}`\n\n```ts\nconst { data } = await client.updateEmailAddress(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n name: \'Sales Team\',\n user_ids: [\'user-123\', \'user-456\'],\n group_ids: [\'group-789\'],\n default_signature_id: \'sig-abc\',\n shared_inbox_id: \'inbox-xyz\',\n is_active: true\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `listEmailAddresses`\n\nRetrieves all email addresses configured for the organization.\n\n`GET /v2/email-settings/email-addresses`\n\n```ts\nconst { data } = await client.listEmailAddresses()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n }\n]\n```\n\n</details>\n\n---\n\n### `addEmailAddress`\n\nAdds a new email address to the organization.\n\n`POST /v2/email-settings/email-addresses`\n\n```ts\nconst { data } = await client.addEmailAddress(\n null,\n {\n address: \'support@yourcompany.com\',\n name: \'Customer Support\',\n user_ids: [\'user-123\'],\n group_ids: [\'group-456\'],\n default_signature_id: \'sig-789\',\n shared_inbox_id: \'inbox-abc\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `getSharedInbox`\n\nRetrieves the details of a specific shared inbox by its ID.\n\n`GET /v2/email-settings/shared-inboxes/{id}`\n\n```ts\nconst { data } = await client.getSharedInbox({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n}\n```\n\n</details>\n\n---\n\n### `deleteSharedInbox`\n\nDeletes a shared inbox and reroutes all associated emails to a successor inbox.\n\n`DELETE /v2/email-settings/shared-inboxes/{id}`\n\n```ts\nconst { data } = await client.deleteSharedInbox({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n successorInboxId: \'example\',\n})\n```\n\n---\n\n### `updateSharedInbox`\n\nUpdates the configuration of an existing shared inbox.\n\n`PUT /v2/email-settings/shared-inboxes/{id}`\n\n```ts\nconst { data } = await client.updateSharedInbox(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n color: \'#4CAF50\',\n name: \'Customer Support\',\n assignees: [\'user-123\', \'user-456\'],\n description: \'Incoming customer support requests\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n}\n```\n\n</details>\n\n---\n\n### `listSharedInboxes`\n\nRetrieves all shared inboxes configured for the organization.\n\n`GET /v2/email-settings/shared-inboxes`\n\n```ts\nconst { data } = await client.listSharedInboxes()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n }\n]\n```\n\n</details>\n\n---\n\n### `addSharedInbox`\n\nCreates a new shared inbox for the organization.\n\n`POST /v2/email-settings/shared-inboxes`\n\n```ts\nconst { data } = await client.addSharedInbox(\n null,\n {\n id: \'support-inbox\',\n color: \'#2196F3\',\n name: \'Sales Inquiries\',\n assignees: [\'user-123\', \'user-456\'],\n description: \'Inbound sales and pricing requests\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n}\n```\n\n</details>\n\n---\n\n### `listInboxBuckets`\n\nRetrieves all inbox buckets for the organization.\n\n`GET /v2/email-settings/inbox-buckets`\n\n```ts\nconst { data } = await client.listInboxBuckets()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "bucket-abc",\n "inbox_id": "inbox-xyz"\n }\n]\n```\n\n</details>\n\n---\n\n### `connectOutlook`\n\nReturns the Microsoft authorization URL for Outlook OAuth.\n\n`POST /v2/outlook/connect`\n\n```ts\nconst { data } = await client.connectOutlook(\n null,\n {\n mail: true,\n calendar: true,\n return_to: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "authorization_url": "string"\n}\n```\n\n</details>\n\n---\n\n### `getOutlookConnectionStatus`\n\nReturns all Microsoft 365 / Outlook connections for the organization.\nSupports multiple connections (one per Azure AD tenant).\n\n`GET /v2/outlook/connection/status`\n\n```ts\nconst { data } = await client.getOutlookConnectionStatus()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connections": [\n {\n "status": "connected",\n "action": "connect",\n "action_reason": "expired",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "tenant_id": "string",\n "scopes": ["string"],\n "expires_at": "1970-01-01T00:00:00.000Z",\n "is_token_valid": true\n }\n ],\n "has_connections": true,\n "teams_enabled": true\n}\n```\n\n</details>\n\n---\n\n### `getCalendarAdminConsentStatus`\n\nReports whether the caller\'s organization can connect personal Outlook\ncalendars.\n\n`GET /v2/outlook/calendar/admin-consent-status`\n\n```ts\nconst { data } = await client.getCalendarAdminConsentStatus()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "admin_consented": true,\n "admin_consent_url": "https://example.com/path"\n}\n```\n\n</details>\n\n---\n\n### `getMyCalendarConnection`\n\nReturns the calling user\'s personal Outlook calendar connection,\nor null when the user hasn\'t connected yet.\n\n`GET /v2/outlook/calendar/me`\n\n```ts\nconst { data } = await client.getMyCalendarConnection()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection": {\n "user_id": "string",\n "tenant_id": "string",\n "status": "connected",\n "scopes": ["string"],\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "expires_at": "1970-01-01T00:00:00.000Z"\n }\n}\n```\n\n</details>\n\n---\n\n### `disconnectMyCalendar`\n\nRemoves the calling user\'s personal calendar connection.\n\n`DELETE /v2/outlook/calendar/me`\n\n```ts\nconst { data } = await client.disconnectMyCalendar()\n```\n\n---\n\n### `disconnectOutlook`\n\nRemoves the Microsoft 365 / Outlook connection for a specific tenant.\nThis deletes the stored tokens and disconnects the integration.\n\n`POST /v2/outlook/connection/disconnect`\n\n```ts\nconst { data } = await client.disconnectOutlook(\n null,\n {\n tenant_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "tenant_id": "string",\n "affected_shared_inboxes": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `connectMsTeams`\n\nConnects Microsoft Teams channel (click-to-call deep links, meetings) for the organization.\nRequires an active Microsoft 365 / Outlook connection.\n\n`POST /v2/channels/msteams/connect`\n\n```ts\nconst { data } = await client.connectMsTeams()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true,\n "connected_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `disconnectMsTeams`\n\nDisconnects Microsoft Teams channel for the organization.\n\n`POST /v2/channels/msteams/disconnect`\n\n```ts\nconst { data } = await client.disconnectMsTeams()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true\n}\n```\n\n</details>\n\n---\n\n### `getMsTeamsStatus`\n\nReturns the connection status of the Microsoft Teams channel for the organization.\n\n`GET /v2/channels/msteams/status`\n\n```ts\nconst { data } = await client.getMsTeamsStatus()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true,\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `connectOutlookMailbox`\n\nConnects an Outlook mailbox:\n 1. Validates the user has access to the mailbox via Microsoft Graph API\n 2. Creates a mapping between the email address of the mailbox and the outlook connection\n 3. E\n\n`POST /v2/outlook/mailbox/connect`\n\n```ts\nconst { data } = await client.connectOutlookMailbox(\n null,\n {\n email: \'user@example.com\',\n shared_inbox_id: \'default\',\n name: \'string\',\n user_ids: [\'string\'],\n group_ids: [\'string\'],\n default_signature_id: \'string\',\n mailboxSyncTimeframe: \'5m\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "email_address": {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n },\n "outlook_email": "user@example.com",\n "tenant_id": "string",\n "provider": "outlook"\n}\n```\n\n</details>\n\n---\n\n### `disconnectOutlookMailbox`\n\nDisconnect Outlook Mailbox\n\n`POST /v2/outlook/mailbox/{email}/disconnect`\n\n```ts\nconst { data } = await client.disconnectOutlookMailbox({\n email: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "email": "user@example.com"\n}\n```\n\n</details>\n\n---\n\n### `startMailboxSync`\n\nStart Mailbox Sync\n\n`POST /v2/outlook/mailbox/{email}/sync`\n\n```ts\nconst { data } = await client.startMailboxSync(\n {\n email: \'example\',\n },\n {\n timeframe: \'5m\'\n },\n)\n```\n\n---\n\n### `getMailboxSyncStatus`\n\nGet Mailbox Sync Status\n\n`GET /v2/outlook/mailbox/{email}/sync/status`\n\n```ts\nconst { data } = await client.getMailboxSyncStatus({\n email: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "execution_id": "string",\n "status": "RUNNING",\n "timeframe": "5m",\n "started_at": "1970-01-01T00:00:00.000Z",\n "completed_at": "1970-01-01T00:00:00.000Z",\n "inbox": {\n "status": "PENDING",\n "total_messages": 0,\n "processed_messages": 0,\n "failed_messages": 0\n },\n "sent_items": {\n "status": "PENDING",\n "total_messages": 0,\n "processed_messages": 0,\n "failed_messages": 0\n }\n}\n```\n\n</details>\n\n---\n\n### `retryMailboxSync`\n\nRetry Failed Messages\n\n`POST /v2/outlook/mailbox/{email}/sync/retry`\n\n```ts\nconst { data } = await client.retryMailboxSync(\n {\n email: \'example\',\n },\n {\n sync_id: \'string\',\n scope: \'all_failed\',\n message_ids: [\'string\']\n },\n)\n```\n\n---\n\n### `getConnectedOutlookEmails`\n\nReturns all Outlook email addresses connected to the organization.\n\n`GET /v2/outlook/mailbox/mappings`\n\n```ts\nconst { data } = await client.getConnectedOutlookEmails()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "outlook_emails": [\n {\n "outlook_email": "user@example.com",\n "tenant_id": "string",\n "provider": "outlook",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n }\n ],\n "count": 0\n}\n```\n\n</details>\n\n---\n\n### `listSmtpConnections`\n\nReturns all custom SMTP connections configured for the organization.\nPasswords are never returned.\n\n`GET /v2/smtp/connections`\n\n```ts\nconst { data } = await client.listSmtpConnections()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connections": [\n {\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n }\n ],\n "has_connections": true\n}\n```\n\n</details>\n\n---\n\n### `createSmtpConnection`\n\nCreates a new custom SMTP connection. Runs a live verify against the SMTP server\nbefore persisting; on failure the request is rejected and nothing is saved.\nThe password is encrypted via KMS before be\n\n`POST /v2/smtp/connections`\n\n```ts\nconst { data } = await client.createSmtpConnection(\n null,\n {\n smtp_host: \'string\',\n smtp_port: 1,\n smtp_secure: \'tls\',\n smtp_username: \'string\',\n smtp_password: \'{{ env.smtp_password }}\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n}\n```\n\n</details>\n\n---\n\n### `getSmtpConnection`\n\nReturns a single custom SMTP connection by id. The password is never returned.\n\n`GET /v2/smtp/connections/{connectionId}`\n\n```ts\nconst { data } = await client.getSmtpConnection({\n connectionId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n}\n```\n\n</details>\n\n---\n\n### `updateSmtpConnection`\n\nPartial update; omitted fields keep their existing values. The merged\nconfiguration is verified against the SMTP server before persisting.\n\n`PUT /v2/smtp/connections/{connectionId}`\n\n```ts\nconst { data } = await client.updateSmtpConnection(\n {\n connectionId: \'example\',\n },\n {\n smtp_host: \'string\',\n smtp_port: 1,\n smtp_secure: \'tls\',\n smtp_username: \'string\',\n smtp_password: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n}\n```\n\n</details>\n\n---\n\n### `deleteSmtpConnection`\n\nDeletes a custom SMTP connection. Messages already sent are unaffected.\n\n`DELETE /v2/smtp/connections/{connectionId}`\n\n```ts\nconst { data } = await client.deleteSmtpConnection({\n connectionId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "connection_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `testSmtpConnection`\n\nRe-runs a live SMTP verify against the saved configuration (EHLO + AUTH + NOOP + QUIT)\nand updates `last_test_status` / `last_tested_at` on the connection.\n\n`POST /v2/smtp/connections/{connectionId}/test`\n\n```ts\nconst { data } = await client.testSmtpConnection({\n connectionId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "status": "ok",\n "error": "string",\n "tested_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `listSmtpSenders`\n\nReturns every address registered to send through a custom SMTP connection.\n\n`GET /v2/smtp/senders`\n\n```ts\nconst { data } = await client.listSmtpSenders()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "senders": [\n {\n "email": "user@example.com",\n "connection_id": "string",\n "reply_to_email": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `connectSmtpSender`\n\nRegisters an address as a sender on a custom SMTP connection:\n 1. Creates the email address so it can be picked in the composer\n 2. Binds it to the connection, so outgoing mail from it is routed the\n\n`POST /v2/smtp/senders`\n\n```ts\nconst { data } = await client.connectSmtpSender(\n null,\n {\n email: \'user@example.com\',\n connection_id: \'string\',\n name: \'string\',\n reply_to_email: \'string\',\n shared_inbox_id: \'default\',\n user_ids: [\'string\'],\n group_ids: [\'string\'],\n default_signature_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "email_address": {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n },\n "sender": {\n "email": "user@example.com",\n "connection_id": "string",\n "reply_to_email": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `disconnectSmtpSender`\n\nRemoves a sender address: deletes the email address and its binding to the SMTP\nconnection. The connection itself and messages already sent are unaffected.\n\n`DELETE /v2/smtp/senders/{email}`\n\n```ts\nconst { data } = await client.disconnectSmtpSender({\n email: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "email": "user@example.com"\n}\n```\n\n</details>\n\n---\n\n### `outlookOAuthCallback`\n\nExchanges authorization code for tokens and stores them.\n\n`GET /v2/outlook/oauth/callback`\n\n```ts\nconst { data } = await client.outlookOAuthCallback({\n code: \'example\',\n state: \'example\',\n session_state: \'example\',\n error: \'example\',\n error_description: \'example\',\n error_subcode: \'example\',\n client_info: \'example\',\n error_uri: \'example\',\n admin_consent: \'example\',\n tenant: \'example\',\n clientdata: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true,\n "expires_at": "1970-01-01T00:00:00.000Z",\n "scope": "string"\n}\n```\n\n</details>\n\n---\n\n### `getSettings`\n\nRetrieves settings of a specific type for the organization.\n\n`GET /v1/email-settings`\n\n```ts\nconst { data } = await client.getSettings({\n type: \'example\',\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `addSetting`\n\nCreates a new setting of the specified type.\n\n`POST /v1/email-settings`\n\n```ts\nconst { data } = await client.addSetting(\n null,\n {\n id: \'a10bd0ff-4391-4cfc-88ee-b19d718a9bf7\',\n name: \'Default Signature\',\n org_id: \'org-123\',\n type: \'signature\',\n value: \'Best regards, The Team\',\n html: \'<p>Best regards,<br/><strong>The Team</strong></p>\',\n created_at: \'2024-01-15T10:30:00Z\',\n updated_at: \'2024-01-20T14:45:00Z\',\n created_by: \'user-123\',\n updated_by: \'user-456\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `deleteSetting`\n\nDeletes a setting by its ID and type.\n\n`DELETE /v1/email-settings`\n\n```ts\nconst { data } = await client.deleteSetting(\n null,\n {\n type: \'signature\',\n id: \'a10bd0ff-4391-4cfc-88ee-b19d718a9bf7\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n}\n```\n\n</details>\n\n---\n\n### `updateSetting`\n\nUpdates an existing setting identified by its ID.\n\n`POST /v1/email-settings/{id}`\n\n```ts\nconst { data } = await client.updateSetting(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n id: \'a10bd0ff-4391-4cfc-88ee-b19d718a9bf7\',\n name: \'Default Signature\',\n org_id: \'org-123\',\n type: \'signature\',\n value: \'Best regards, The Team\',\n html: \'<p>Best regards,<br/><strong>The Team</strong></p>\',\n created_at: \'2024-01-15T10:30:00Z\',\n updated_at: \'2024-01-20T14:45:00Z\',\n created_by: \'user-123\',\n updated_by: \'user-456\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n}\n```\n\n</details>\n\n---\n\n### `addDomain`\n\nAdds a custom email domain to the organization.\n\n`POST /v1/email-settings/domain`\n\n```ts\nconst { data } = await client.addDomain(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `deleteDomain`\n\nRemoves a custom email domain from the organization.\n\n`DELETE /v1/email-settings/domain`\n\n```ts\nconst { data } = await client.deleteDomain(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n---\n\n### `getDomains`\n\nRetrieves all custom email domains for the organization.\n\n`GET /v1/email-settings/domain`\n\n```ts\nconst { data } = await client.getDomains()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n["string"]\n```\n\n</details>\n\n---\n\n### `verifyNameServers`\n\nVerifies that the domain\'s name server (NS) records are correctly configured.\n\n`POST /v1/email-settings/domain/name-servers:verify`\n\n```ts\nconst { data } = await client.verifyNameServers(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `verifyDnsRecords`\n\nVerifies that the domain\'s DNS records (MX, TXT, CNAME) are correctly configured\nin the customer\'s DNS provider.\n\n`POST /v1/email-settings/domain/dns-records:verify`\n\n```ts\nconst { data } = await client.verifyDnsRecords(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `verifyDomain`\n\nVerifies ownership and configuration of a custom email domain.\n\n`POST /v1/email-settings/domain:verify`\n\n```ts\nconst { data } = await client.verifyDomain(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `ConnectOutlookRequest`\n\nFeature flags selecting which Microsoft Graph scopes to request.\nAt least one flag must be true. Passing a superset of previously\ngranted features triggers incremental consent for the delta only.\n\n\n```ts\ntype ConnectOutlookRequest = {\n mail?: boolean\n calendar?: boolean\n return_to?: string\n}\n```\n\n### `MailboxSyncStatus`\n\n```ts\ntype MailboxSyncStatus = {\n execution_id: string\n status: "RUNNING" | "COMPLETED" | "COMPLETED_WITH_ERRORS" | "FAILED" | "CANCELLED"\n timeframe: "5m" | "1w" | "2w" | "1m"\n started_at: string // date-time\n completed_at?: string // date-time\n inbox?: {\n status?: "PENDING" | "RUNNING" | "COMPLETED" | "FAILED" | "SKIPPED"\n total_messages?: number\n processed_messages?: number\n failed_messages?: number\n }\n sent_items?: {\n status?: "PENDING" | "RUNNING" | "COMPLETED" | "FAILED" | "SKIPPED"\n total_messages?: number\n processed_messages?: number\n failed_messages?: number\n }\n}\n```\n\n### `MailboxSyncStatuses`\n\n```ts\ntype MailboxSyncStatuses = "RUNNING" | "COMPLETED" | "COMPLETED_WITH_ERRORS" | "FAILED" | "CANCELLED"\n```\n\n### `MailboxSyncFolderStatuses`\n\n```ts\ntype MailboxSyncFolderStatuses = "PENDING" | "RUNNING" | "COMPLETED" | "FAILED" | "SKIPPED"\n```\n\n### `MailboxSyncTimeframePeriods`\n\n```ts\ntype MailboxSyncTimeframePeriods = "5m" | "1w" | "2w" | "1m"\n```\n\n### `InboxBucketResponse`\n\nInbox bucket representing the storage container for a shared inbox.\n\n```ts\ntype InboxBucketResponse = {\n id: string\n inbox_id: string\n}\n```\n\n### `ProvisionEpilotEmailAddressPayload`\n\nRequest payload for provisioning an epilot-managed email address.\n\n```ts\ntype ProvisionEpilotEmailAddressPayload = {\n address: string\n}\n```\n\n### `SetEmailAddressPrimaryPayload`\n\nRequest payload for setting an email address as the organization\'s primary address.\n\n```ts\ntype SetEmailAddressPrimaryPayload = {\n address: string\n}\n```\n\n### `UpdateEmailAddressPayload`\n\nRequest payload for updating an email address configuration.\nAll fields are optional; only provided fields will be updated.\n\n\n```ts\ntype UpdateEmailAddressPayload = {\n name?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n shared_inbox_id?: string\n is_active?: boolean\n}\n```\n\n### `CreateEmailAddressPayload`\n\nRequest payload for creating a new email address.\n\n```ts\ntype CreateEmailAddressPayload = {\n address: string\n name?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n shared_inbox_id?: string\n}\n```\n\n### `EmailAddressResponse`\n\nEmail address configuration with all associated metadata.\n\n```ts\ntype EmailAddressResponse = {\n id: string\n created_at: string // date-time\n updated_at?: string // date-time\n created_by?: string\n updated_by?: string\n address: string\n name?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n shared_inbox_id?: string\n is_active?: boolean\n is_primary?: boolean\n is_epilot_email_address?: boolean\n}\n```\n\n### `ErrorResponse`\n\nStandard error response format for all API errors.\n\n```ts\ntype ErrorResponse = {\n error: string\n status: number\n}\n```\n\n### `SettingMeta`\n\nCommon metadata fields for all settings and resources.\n\n```ts\ntype SettingMeta = {\n id: string\n created_at: string // date-time\n updated_at?: string // date-time\n created_by?: string\n updated_by?: string\n}\n```\n\n### `UpdateSharedInboxPayload`\n\nRequest payload for updating a shared inbox configuration.\nAll fields are optional; only provided fields will be updated.\n\n\n```ts\ntype UpdateSharedInboxPayload = {\n color?: string\n name?: string\n assignees?: string[]\n description?: string\n}\n```\n\n### `CreateSharedInboxPayload`\n\nRequest payload for creating a new shared inbox.\n\n```ts\ntype CreateSharedInboxPayload = {\n id?: string\n color: string\n name: string\n assignees?: string[]\n description?: string\n}\n```\n\n### `SharedInboxResponse`\n\nShared inbox configuration with all associated metadata.\n\n```ts\ntype SharedInboxResponse = {\n id: string\n created_at: string // date-time\n updated_at?: string // date-time\n created_by?: string\n updated_by?: string\n name: string\n color: string\n assignees: string[]\n description?: string\n bucket_id: string\n}\n```\n\n### `SettingsResponse`\n\n```ts\ntype SettingsResponse = Array<{\n id?: string\n name?: string\n org_id?: string\n type: "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n value?: string\n html?: string\n created_at?: string\n updated_at?: string\n created_by?: string\n updated_by?: string\n}> | {\n id?: string\n name?: string\n org_id?: string\n type: "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n value?: string\n html?: string\n created_at?: string\n updated_at?: string\n created_by?: string\n updated_by?: string\n}\n```\n\n### `ConnectedOutlookEmail`\n\nMapping between an Outlook email and its Outlook Connection.\nThis tracks which provider/tenant provisions each Outlook email.\n\n\n```ts\ntype ConnectedOutlookEmail = {\n outlook_email: string // email\n tenant_id?: string\n provider?: "outlook"\n connected_at?: string // date-time\n connected_by_user_id?: string\n}\n```\n\n### `OutlookConnectionError`\n\n```ts\ntype OutlookConnectionError = {\n error: string\n error_description?: string\n admin_consent_url?: string // uri\n}\n```\n\n### `CalendarAdminConsentStatus`\n\n```ts\ntype CalendarAdminConsentStatus = {\n admin_consented: boolean\n admin_consent_url?: string // uri\n}\n```\n\n### `MyCalendarConnectionResponse`\n\nPer-user calendar connection metadata, or null when the caller has\nnot connected their personal calendar yet.\n\n\n```ts\ntype MyCalendarConnectionResponse = {\n connection?: {\n user_id: string\n tenant_id: string\n status: "connected" | "expired"\n scopes?: string[]\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_at?: string // date-time\n updated_at?: string // date-time\n expires_at?: string // date-time\n }\n}\n```\n\n### `CalendarConnectionInfo`\n\n```ts\ntype CalendarConnectionInfo = {\n user_id: string\n tenant_id: string\n status: "connected" | "expired"\n scopes?: string[]\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_at?: string // date-time\n updated_at?: string // date-time\n expires_at?: string // date-time\n}\n```\n\n### `OutlookConnectionStatus`\n\n```ts\ntype OutlookConnectionStatus = {\n status: "connected" | "expired" | "pending_auth" | "not_connected"\n action: "connect" | "authorize" | "reconnect" | "none"\n action_reason?: "expired" | "permission_update"\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_by_user_id?: string\n connected_at?: string // date-time\n updated_at?: string // date-time\n tenant_id: string\n scopes?: string[]\n expires_at?: string // date-time\n is_token_valid?: boolean\n}\n```\n\n### `SmtpConnection`\n\n```ts\ntype SmtpConnection = {\n connection_id: string\n smtp_host: string\n smtp_port: number\n smtp_secure: "tls" | "starttls"\n smtp_username: string\n smtp_password?: string\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_by_user_id?: string\n connected_at?: string // date-time\n updated_at?: string // date-time\n last_tested_at?: string // date-time\n last_test_status?: "ok" | "auth_failed" | "tls_failed" | "host_unreachable" | "timeout" | "secret_missing" | "unknown"\n last_test_error?: string\n}\n```\n\n### `CreateSmtpConnectionRequest`\n\n```ts\ntype CreateSmtpConnectionRequest = {\n smtp_host: string\n smtp_port: number\n smtp_secure: "tls" | "starttls"\n smtp_username: string\n smtp_password: string\n}\n```\n\n### `UpdateSmtpConnectionRequest`\n\nPartial update; omitted fields keep their existing values.\n\n```ts\ntype UpdateSmtpConnectionRequest = {\n smtp_host?: string\n smtp_port?: number\n smtp_secure?: "tls" | "starttls"\n smtp_username?: string\n smtp_password?: string\n}\n```\n\n### `SmtpSender`\n\nAn address allowed to send through a custom SMTP connection. Mirrors an Outlook\nmailbox: the address, its display name and its assignees live on the shared\nemail-address record, while this row binds it to a set of SMTP credentials.\n\n\n```ts\ntype SmtpSender = {\n email: string // email\n connection_id: string\n reply_to_email?: string\n connected_at?: string // date-time\n connected_by_user_id?: string\n}\n```\n\n### `ConnectSmtpSenderRequest`\n\n```ts\ntype ConnectSmtpSenderRequest = {\n email: string // email\n connection_id: string\n name?: string\n reply_to_email?: string\n shared_inbox_id?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n}\n```\n\n### `SmtpTestResult`\n\n```ts\ntype SmtpTestResult = {\n status: "ok" | "auth_failed" | "tls_failed" | "host_unreachable" | "timeout" | "secret_missing" | "unknown"\n error?: string\n tested_at: string // date-time\n}\n```\n\n### `SignatureSetting`\n\nSetting that allows to add a signature.\n\n```ts\ntype SignatureSetting = "signature"\n```\n\n### `EmailDomainSetting`\n\nSetting that allows to add a custom domain. For e.g; doe.com\n\n```ts\ntype EmailDomainSetting = "email_domain"\n```\n\n### `EmailAddressSetting`\n\nSetting that allows to add an email address on the custom domain. For e.g; john@doe.com\n\n```ts\ntype EmailAddressSetting = "email_address"\n```\n\n### `WhitelistEmailAddressSetting`\n\n- Setting that specifies a list of addresses exempt from being flagged as duplicate emails.\n- An email will be flagged as a duplicate if it has the same content and is sent to the same recipient within the time frame specified in the RestrictDuplicatesWithinSetting.\n\n\n```ts\ntype WhitelistEmailAddressSetting = "whitelist_email_address"\n```\n\n### `RestrictDuplicatesWithinSetting`\n\n- Restrict duplicates within:\n * 10s\n * 5m\n * 1d\n * 5000 // It converts to 5 seconds.When expressed as a numerical value, it will be interpreted as being in milliseconds.\n- Defaults to 3 minutes\n- Negative values will be treated same as positive values\n- If not set, defaults to 3 min\n- If set as\n\n```ts\ntype RestrictDuplicatesWithinSetting = "restrict_duplicates_within"\n```\n\n### `SettingType`\n\n```ts\ntype SettingType = "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n```\n\n### `Setting`\n\nGeneric setting object used for various email configuration types.\nThe applicable fields depend on the setting type:\n- **signature**: Uses `name`, `value` (plain text), and `html` (rich text)\n- **email_domain**: Uses `value` (domain name)\n- **whitelist_email_address**: Uses `value` (email address)\n-\n\n```ts\ntype Setting = {\n id?: string\n name?: string\n org_id?: string\n type: "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n value?: string\n html?: string\n created_at?: string\n updated_at?: string\n created_by?: string\n updated_by?: string\n}\n```\n\n### `Domain`\n\nCustom email domain configuration.\n\n```ts\ntype Domain = {\n domain?: string\n}\n```\n';
5
- export {
6
- email_settings_default as default
7
- };
@@ -1,7 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
2
-
3
- // src/docs/email-settings.json
4
- var email_settings_default = '# Messaging Settings API\n\n- **Base URL:** `https://email-settings.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/email-settings](https://docs.epilot.io/api/email-settings)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.emailSettings.provisionEpilotEmailAddress(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/email-settings\'\n\nconst emailSettingsClient = getClient()\nauthorize(emailSettingsClient, () => \'<token>\')\nconst { data } = await emailSettingsClient.provisionEpilotEmailAddress(...)\n```\n\n## Operations\n\n**Email addresses**\n- [`provisionEpilotEmailAddress`](#provisionepilotemailaddress)\n- [`setEmailAddressPrimary`](#setemailaddressprimary)\n- [`getEmailAddress`](#getemailaddress)\n- [`deleteEmailAddress`](#deleteemailaddress)\n- [`updateEmailAddress`](#updateemailaddress)\n- [`listEmailAddresses`](#listemailaddresses)\n- [`addEmailAddress`](#addemailaddress)\n\n**Shared inboxes**\n- [`getSharedInbox`](#getsharedinbox)\n- [`deleteSharedInbox`](#deletesharedinbox)\n- [`updateSharedInbox`](#updatesharedinbox)\n- [`listSharedInboxes`](#listsharedinboxes)\n- [`addSharedInbox`](#addsharedinbox)\n\n**Inbox buckets**\n- [`listInboxBuckets`](#listinboxbuckets)\n\n**O365 Outlook Connection**\n- [`connectOutlook`](#connectoutlook)\n- [`getOutlookConnectionStatus`](#getoutlookconnectionstatus)\n- [`getCalendarAdminConsentStatus`](#getcalendaradminconsentstatus)\n- [`getMyCalendarConnection`](#getmycalendarconnection)\n- [`disconnectMyCalendar`](#disconnectmycalendar)\n- [`disconnectOutlook`](#disconnectoutlook)\n- [`connectOutlookMailbox`](#connectoutlookmailbox)\n- [`disconnectOutlookMailbox`](#disconnectoutlookmailbox)\n- [`startMailboxSync`](#startmailboxsync)\n- [`getMailboxSyncStatus`](#getmailboxsyncstatus)\n- [`retryMailboxSync`](#retrymailboxsync)\n- [`getConnectedOutlookEmails`](#getconnectedoutlookemails)\n- [`outlookOAuthCallback`](#outlookoauthcallback)\n\n**Channels**\n- [`connectMsTeams`](#connectmsteams)\n- [`disconnectMsTeams`](#disconnectmsteams)\n- [`getMsTeamsStatus`](#getmsteamsstatus)\n\n**Custom SMTP**\n- [`listSmtpConnections`](#listsmtpconnections)\n- [`createSmtpConnection`](#createsmtpconnection)\n- [`getSmtpConnection`](#getsmtpconnection)\n- [`updateSmtpConnection`](#updatesmtpconnection)\n- [`deleteSmtpConnection`](#deletesmtpconnection)\n- [`testSmtpConnection`](#testsmtpconnection)\n- [`listSmtpSenders`](#listsmtpsenders)\n- [`connectSmtpSender`](#connectsmtpsender)\n- [`disconnectSmtpSender`](#disconnectsmtpsender)\n\n**Settings**\n- [`getSettings`](#getsettings)\n- [`addSetting`](#addsetting)\n- [`deleteSetting`](#deletesetting)\n- [`updateSetting`](#updatesetting)\n\n**Domains**\n- [`addDomain`](#adddomain)\n- [`deleteDomain`](#deletedomain)\n- [`getDomains`](#getdomains)\n- [`verifyNameServers`](#verifynameservers)\n- [`verifyDnsRecords`](#verifydnsrecords)\n- [`verifyDomain`](#verifydomain)\n\n**Schemas**\n- [`ConnectOutlookRequest`](#connectoutlookrequest)\n- [`MailboxSyncStatus`](#mailboxsyncstatus)\n- [`MailboxSyncStatuses`](#mailboxsyncstatuses)\n- [`MailboxSyncFolderStatuses`](#mailboxsyncfolderstatuses)\n- [`MailboxSyncTimeframePeriods`](#mailboxsynctimeframeperiods)\n- [`InboxBucketResponse`](#inboxbucketresponse)\n- [`ProvisionEpilotEmailAddressPayload`](#provisionepilotemailaddresspayload)\n- [`SetEmailAddressPrimaryPayload`](#setemailaddressprimarypayload)\n- [`UpdateEmailAddressPayload`](#updateemailaddresspayload)\n- [`CreateEmailAddressPayload`](#createemailaddresspayload)\n- [`EmailAddressResponse`](#emailaddressresponse)\n- [`ErrorResponse`](#errorresponse)\n- [`SettingMeta`](#settingmeta)\n- [`UpdateSharedInboxPayload`](#updatesharedinboxpayload)\n- [`CreateSharedInboxPayload`](#createsharedinboxpayload)\n- [`SharedInboxResponse`](#sharedinboxresponse)\n- [`SettingsResponse`](#settingsresponse)\n- [`ConnectedOutlookEmail`](#connectedoutlookemail)\n- [`OutlookConnectionError`](#outlookconnectionerror)\n- [`CalendarAdminConsentStatus`](#calendaradminconsentstatus)\n- [`MyCalendarConnectionResponse`](#mycalendarconnectionresponse)\n- [`CalendarConnectionInfo`](#calendarconnectioninfo)\n- [`OutlookConnectionStatus`](#outlookconnectionstatus)\n- [`SmtpConnection`](#smtpconnection)\n- [`CreateSmtpConnectionRequest`](#createsmtpconnectionrequest)\n- [`UpdateSmtpConnectionRequest`](#updatesmtpconnectionrequest)\n- [`SmtpSender`](#smtpsender)\n- [`ConnectSmtpSenderRequest`](#connectsmtpsenderrequest)\n- [`SmtpTestResult`](#smtptestresult)\n- [`SignatureSetting`](#signaturesetting)\n- [`EmailDomainSetting`](#emaildomainsetting)\n- [`EmailAddressSetting`](#emailaddresssetting)\n- [`WhitelistEmailAddressSetting`](#whitelistemailaddresssetting)\n- [`RestrictDuplicatesWithinSetting`](#restrictduplicateswithinsetting)\n- [`SettingType`](#settingtype)\n- [`Setting`](#setting)\n- [`Domain`](#domain)\n\n### `provisionEpilotEmailAddress`\n\nProvisions or reactivates an epilot-managed email address for the organization.\n\n`PUT /v2/email-settings/email-addresses/epilot:provision`\n\n```ts\nconst { data } = await client.provisionEpilotEmailAddress(\n null,\n {\n address: \'mycompany@epilot.cloud\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `setEmailAddressPrimary`\n\nSets the specified email address as the primary address for the organization.\n\n`POST /v2/email-settings/email-addresses/primary`\n\n```ts\nconst { data } = await client.setEmailAddressPrimary(\n null,\n {\n address: \'sales@yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `getEmailAddress`\n\nRetrieves the details of a specific email address by its ID.\n\n`GET /v2/email-settings/email-addresses/{id}`\n\n```ts\nconst { data } = await client.getEmailAddress({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `deleteEmailAddress`\n\nPermanently deletes an email address from the organization.\n\n`DELETE /v2/email-settings/email-addresses/{id}`\n\n```ts\nconst { data } = await client.deleteEmailAddress({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `updateEmailAddress`\n\nUpdates the configuration of an existing email address.\n\n`PUT /v2/email-settings/email-addresses/{id}`\n\n```ts\nconst { data } = await client.updateEmailAddress(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n name: \'Sales Team\',\n user_ids: [\'user-123\', \'user-456\'],\n group_ids: [\'group-789\'],\n default_signature_id: \'sig-abc\',\n shared_inbox_id: \'inbox-xyz\',\n is_active: true\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `listEmailAddresses`\n\nRetrieves all email addresses configured for the organization.\n\n`GET /v2/email-settings/email-addresses`\n\n```ts\nconst { data } = await client.listEmailAddresses()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n }\n]\n```\n\n</details>\n\n---\n\n### `addEmailAddress`\n\nAdds a new email address to the organization.\n\n`POST /v2/email-settings/email-addresses`\n\n```ts\nconst { data } = await client.addEmailAddress(\n null,\n {\n address: \'support@yourcompany.com\',\n name: \'Customer Support\',\n user_ids: [\'user-123\'],\n group_ids: [\'group-456\'],\n default_signature_id: \'sig-789\',\n shared_inbox_id: \'inbox-abc\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n}\n```\n\n</details>\n\n---\n\n### `getSharedInbox`\n\nRetrieves the details of a specific shared inbox by its ID.\n\n`GET /v2/email-settings/shared-inboxes/{id}`\n\n```ts\nconst { data } = await client.getSharedInbox({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n}\n```\n\n</details>\n\n---\n\n### `deleteSharedInbox`\n\nDeletes a shared inbox and reroutes all associated emails to a successor inbox.\n\n`DELETE /v2/email-settings/shared-inboxes/{id}`\n\n```ts\nconst { data } = await client.deleteSharedInbox({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n successorInboxId: \'example\',\n})\n```\n\n---\n\n### `updateSharedInbox`\n\nUpdates the configuration of an existing shared inbox.\n\n`PUT /v2/email-settings/shared-inboxes/{id}`\n\n```ts\nconst { data } = await client.updateSharedInbox(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n color: \'#4CAF50\',\n name: \'Customer Support\',\n assignees: [\'user-123\', \'user-456\'],\n description: \'Incoming customer support requests\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n}\n```\n\n</details>\n\n---\n\n### `listSharedInboxes`\n\nRetrieves all shared inboxes configured for the organization.\n\n`GET /v2/email-settings/shared-inboxes`\n\n```ts\nconst { data } = await client.listSharedInboxes()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n }\n]\n```\n\n</details>\n\n---\n\n### `addSharedInbox`\n\nCreates a new shared inbox for the organization.\n\n`POST /v2/email-settings/shared-inboxes`\n\n```ts\nconst { data } = await client.addSharedInbox(\n null,\n {\n id: \'support-inbox\',\n color: \'#2196F3\',\n name: \'Sales Inquiries\',\n assignees: [\'user-123\', \'user-456\'],\n description: \'Inbound sales and pricing requests\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "name": "Customer Support",\n "color": "#4CAF50",\n "assignees": ["user-123", "user-456"],\n "description": "Incoming customer support requests",\n "bucket_id": "bucket-xyz"\n}\n```\n\n</details>\n\n---\n\n### `listInboxBuckets`\n\nRetrieves all inbox buckets for the organization.\n\n`GET /v2/email-settings/inbox-buckets`\n\n```ts\nconst { data } = await client.listInboxBuckets()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "bucket-abc",\n "inbox_id": "inbox-xyz"\n }\n]\n```\n\n</details>\n\n---\n\n### `connectOutlook`\n\nReturns the Microsoft authorization URL for Outlook OAuth.\n\n`POST /v2/outlook/connect`\n\n```ts\nconst { data } = await client.connectOutlook(\n null,\n {\n mail: true,\n calendar: true,\n return_to: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "authorization_url": "string"\n}\n```\n\n</details>\n\n---\n\n### `getOutlookConnectionStatus`\n\nReturns all Microsoft 365 / Outlook connections for the organization.\nSupports multiple connections (one per Azure AD tenant).\n\n`GET /v2/outlook/connection/status`\n\n```ts\nconst { data } = await client.getOutlookConnectionStatus()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connections": [\n {\n "status": "connected",\n "action": "connect",\n "action_reason": "expired",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "tenant_id": "string",\n "scopes": ["string"],\n "expires_at": "1970-01-01T00:00:00.000Z",\n "is_token_valid": true\n }\n ],\n "has_connections": true,\n "teams_enabled": true\n}\n```\n\n</details>\n\n---\n\n### `getCalendarAdminConsentStatus`\n\nReports whether the caller\'s organization can connect personal Outlook\ncalendars.\n\n`GET /v2/outlook/calendar/admin-consent-status`\n\n```ts\nconst { data } = await client.getCalendarAdminConsentStatus()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "admin_consented": true,\n "admin_consent_url": "https://example.com/path"\n}\n```\n\n</details>\n\n---\n\n### `getMyCalendarConnection`\n\nReturns the calling user\'s personal Outlook calendar connection,\nor null when the user hasn\'t connected yet.\n\n`GET /v2/outlook/calendar/me`\n\n```ts\nconst { data } = await client.getMyCalendarConnection()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection": {\n "user_id": "string",\n "tenant_id": "string",\n "status": "connected",\n "scopes": ["string"],\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "expires_at": "1970-01-01T00:00:00.000Z"\n }\n}\n```\n\n</details>\n\n---\n\n### `disconnectMyCalendar`\n\nRemoves the calling user\'s personal calendar connection.\n\n`DELETE /v2/outlook/calendar/me`\n\n```ts\nconst { data } = await client.disconnectMyCalendar()\n```\n\n---\n\n### `disconnectOutlook`\n\nRemoves the Microsoft 365 / Outlook connection for a specific tenant.\nThis deletes the stored tokens and disconnects the integration.\n\n`POST /v2/outlook/connection/disconnect`\n\n```ts\nconst { data } = await client.disconnectOutlook(\n null,\n {\n tenant_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "tenant_id": "string",\n "affected_shared_inboxes": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `connectMsTeams`\n\nConnects Microsoft Teams channel (click-to-call deep links, meetings) for the organization.\nRequires an active Microsoft 365 / Outlook connection.\n\n`POST /v2/channels/msteams/connect`\n\n```ts\nconst { data } = await client.connectMsTeams()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true,\n "connected_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `disconnectMsTeams`\n\nDisconnects Microsoft Teams channel for the organization.\n\n`POST /v2/channels/msteams/disconnect`\n\n```ts\nconst { data } = await client.disconnectMsTeams()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true\n}\n```\n\n</details>\n\n---\n\n### `getMsTeamsStatus`\n\nReturns the connection status of the Microsoft Teams channel for the organization.\n\n`GET /v2/channels/msteams/status`\n\n```ts\nconst { data } = await client.getMsTeamsStatus()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true,\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `connectOutlookMailbox`\n\nConnects an Outlook mailbox:\n 1. Validates the user has access to the mailbox via Microsoft Graph API\n 2. Creates a mapping between the email address of the mailbox and the outlook connection\n 3. E\n\n`POST /v2/outlook/mailbox/connect`\n\n```ts\nconst { data } = await client.connectOutlookMailbox(\n null,\n {\n email: \'user@example.com\',\n shared_inbox_id: \'default\',\n name: \'string\',\n user_ids: [\'string\'],\n group_ids: [\'string\'],\n default_signature_id: \'string\',\n mailboxSyncTimeframe: \'5m\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "email_address": {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n },\n "outlook_email": "user@example.com",\n "tenant_id": "string",\n "provider": "outlook"\n}\n```\n\n</details>\n\n---\n\n### `disconnectOutlookMailbox`\n\nDisconnect Outlook Mailbox\n\n`POST /v2/outlook/mailbox/{email}/disconnect`\n\n```ts\nconst { data } = await client.disconnectOutlookMailbox({\n email: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "email": "user@example.com"\n}\n```\n\n</details>\n\n---\n\n### `startMailboxSync`\n\nStart Mailbox Sync\n\n`POST /v2/outlook/mailbox/{email}/sync`\n\n```ts\nconst { data } = await client.startMailboxSync(\n {\n email: \'example\',\n },\n {\n timeframe: \'5m\'\n },\n)\n```\n\n---\n\n### `getMailboxSyncStatus`\n\nGet Mailbox Sync Status\n\n`GET /v2/outlook/mailbox/{email}/sync/status`\n\n```ts\nconst { data } = await client.getMailboxSyncStatus({\n email: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "execution_id": "string",\n "status": "RUNNING",\n "timeframe": "5m",\n "started_at": "1970-01-01T00:00:00.000Z",\n "completed_at": "1970-01-01T00:00:00.000Z",\n "inbox": {\n "status": "PENDING",\n "total_messages": 0,\n "processed_messages": 0,\n "failed_messages": 0\n },\n "sent_items": {\n "status": "PENDING",\n "total_messages": 0,\n "processed_messages": 0,\n "failed_messages": 0\n }\n}\n```\n\n</details>\n\n---\n\n### `retryMailboxSync`\n\nRetry Failed Messages\n\n`POST /v2/outlook/mailbox/{email}/sync/retry`\n\n```ts\nconst { data } = await client.retryMailboxSync(\n {\n email: \'example\',\n },\n {\n sync_id: \'string\',\n scope: \'all_failed\',\n message_ids: [\'string\']\n },\n)\n```\n\n---\n\n### `getConnectedOutlookEmails`\n\nReturns all Outlook email addresses connected to the organization.\n\n`GET /v2/outlook/mailbox/mappings`\n\n```ts\nconst { data } = await client.getConnectedOutlookEmails()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "outlook_emails": [\n {\n "outlook_email": "user@example.com",\n "tenant_id": "string",\n "provider": "outlook",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n }\n ],\n "count": 0\n}\n```\n\n</details>\n\n---\n\n### `listSmtpConnections`\n\nReturns all custom SMTP connections configured for the organization.\nPasswords are never returned.\n\n`GET /v2/smtp/connections`\n\n```ts\nconst { data } = await client.listSmtpConnections()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connections": [\n {\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n }\n ],\n "has_connections": true\n}\n```\n\n</details>\n\n---\n\n### `createSmtpConnection`\n\nCreates a new custom SMTP connection. Runs a live verify against the SMTP server\nbefore persisting; on failure the request is rejected and nothing is saved.\nThe password is encrypted via KMS before be\n\n`POST /v2/smtp/connections`\n\n```ts\nconst { data } = await client.createSmtpConnection(\n null,\n {\n smtp_host: \'string\',\n smtp_port: 1,\n smtp_secure: \'tls\',\n smtp_username: \'string\',\n smtp_password: \'{{ env.smtp_password }}\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n}\n```\n\n</details>\n\n---\n\n### `getSmtpConnection`\n\nReturns a single custom SMTP connection by id. The password is never returned.\n\n`GET /v2/smtp/connections/{connectionId}`\n\n```ts\nconst { data } = await client.getSmtpConnection({\n connectionId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n}\n```\n\n</details>\n\n---\n\n### `updateSmtpConnection`\n\nPartial update; omitted fields keep their existing values. The merged\nconfiguration is verified against the SMTP server before persisting.\n\n`PUT /v2/smtp/connections/{connectionId}`\n\n```ts\nconst { data } = await client.updateSmtpConnection(\n {\n connectionId: \'example\',\n },\n {\n smtp_host: \'string\',\n smtp_port: 1,\n smtp_secure: \'tls\',\n smtp_username: \'string\',\n smtp_password: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connection_id": "string",\n "smtp_host": "string",\n "smtp_port": 0,\n "smtp_secure": "tls",\n "smtp_username": "string",\n "smtp_password": "string",\n "connected_by_display_name": "string",\n "connected_by_email": "user@example.com",\n "connected_by_user_id": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "last_tested_at": "1970-01-01T00:00:00.000Z",\n "last_test_status": "ok",\n "last_test_error": "string"\n}\n```\n\n</details>\n\n---\n\n### `deleteSmtpConnection`\n\nDeletes a custom SMTP connection. Messages already sent are unaffected.\n\n`DELETE /v2/smtp/connections/{connectionId}`\n\n```ts\nconst { data } = await client.deleteSmtpConnection({\n connectionId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "connection_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `testSmtpConnection`\n\nRe-runs a live SMTP verify against the saved configuration (EHLO + AUTH + NOOP + QUIT)\nand updates `last_test_status` / `last_tested_at` on the connection.\n\n`POST /v2/smtp/connections/{connectionId}/test`\n\n```ts\nconst { data } = await client.testSmtpConnection({\n connectionId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "status": "ok",\n "error": "string",\n "tested_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `listSmtpSenders`\n\nReturns every address registered to send through a custom SMTP connection.\n\n`GET /v2/smtp/senders`\n\n```ts\nconst { data } = await client.listSmtpSenders()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "senders": [\n {\n "email": "user@example.com",\n "connection_id": "string",\n "reply_to_email": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `connectSmtpSender`\n\nRegisters an address as a sender on a custom SMTP connection:\n 1. Creates the email address so it can be picked in the composer\n 2. Binds it to the connection, so outgoing mail from it is routed the\n\n`POST /v2/smtp/senders`\n\n```ts\nconst { data } = await client.connectSmtpSender(\n null,\n {\n email: \'user@example.com\',\n connection_id: \'string\',\n name: \'string\',\n reply_to_email: \'string\',\n shared_inbox_id: \'default\',\n user_ids: [\'string\'],\n group_ids: [\'string\'],\n default_signature_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "email_address": {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456",\n "address": "sales@yourcompany.com",\n "name": "Sales Team",\n "user_ids": ["user-123", "user-456"],\n "group_ids": ["group-789"],\n "default_signature_id": "sig-abc",\n "shared_inbox_id": "inbox-xyz",\n "is_active": true,\n "is_primary": false,\n "is_epilot_email_address": false\n },\n "sender": {\n "email": "user@example.com",\n "connection_id": "string",\n "reply_to_email": "string",\n "connected_at": "1970-01-01T00:00:00.000Z",\n "connected_by_user_id": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `disconnectSmtpSender`\n\nRemoves a sender address: deletes the email address and its binding to the SMTP\nconnection. The connection itself and messages already sent are unaffected.\n\n`DELETE /v2/smtp/senders/{email}`\n\n```ts\nconst { data } = await client.disconnectSmtpSender({\n email: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "email": "user@example.com"\n}\n```\n\n</details>\n\n---\n\n### `outlookOAuthCallback`\n\nExchanges authorization code for tokens and stores them.\n\n`GET /v2/outlook/oauth/callback`\n\n```ts\nconst { data } = await client.outlookOAuthCallback({\n code: \'example\',\n state: \'example\',\n session_state: \'example\',\n error: \'example\',\n error_description: \'example\',\n error_subcode: \'example\',\n client_info: \'example\',\n error_uri: \'example\',\n admin_consent: \'example\',\n tenant: \'example\',\n clientdata: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "connected": true,\n "expires_at": "1970-01-01T00:00:00.000Z",\n "scope": "string"\n}\n```\n\n</details>\n\n---\n\n### `getSettings`\n\nRetrieves settings of a specific type for the organization.\n\n`GET /v1/email-settings`\n\n```ts\nconst { data } = await client.getSettings({\n type: \'example\',\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `addSetting`\n\nCreates a new setting of the specified type.\n\n`POST /v1/email-settings`\n\n```ts\nconst { data } = await client.addSetting(\n null,\n {\n id: \'a10bd0ff-4391-4cfc-88ee-b19d718a9bf7\',\n name: \'Default Signature\',\n org_id: \'org-123\',\n type: \'signature\',\n value: \'Best regards, The Team\',\n html: \'<p>Best regards,<br/><strong>The Team</strong></p>\',\n created_at: \'2024-01-15T10:30:00Z\',\n updated_at: \'2024-01-20T14:45:00Z\',\n created_by: \'user-123\',\n updated_by: \'user-456\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `deleteSetting`\n\nDeletes a setting by its ID and type.\n\n`DELETE /v1/email-settings`\n\n```ts\nconst { data } = await client.deleteSetting(\n null,\n {\n type: \'signature\',\n id: \'a10bd0ff-4391-4cfc-88ee-b19d718a9bf7\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n}\n```\n\n</details>\n\n---\n\n### `updateSetting`\n\nUpdates an existing setting identified by its ID.\n\n`POST /v1/email-settings/{id}`\n\n```ts\nconst { data } = await client.updateSetting(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n id: \'a10bd0ff-4391-4cfc-88ee-b19d718a9bf7\',\n name: \'Default Signature\',\n org_id: \'org-123\',\n type: \'signature\',\n value: \'Best regards, The Team\',\n html: \'<p>Best regards,<br/><strong>The Team</strong></p>\',\n created_at: \'2024-01-15T10:30:00Z\',\n updated_at: \'2024-01-20T14:45:00Z\',\n created_by: \'user-123\',\n updated_by: \'user-456\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n}\n```\n\n</details>\n\n---\n\n### `addDomain`\n\nAdds a custom email domain to the organization.\n\n`POST /v1/email-settings/domain`\n\n```ts\nconst { data } = await client.addDomain(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `deleteDomain`\n\nRemoves a custom email domain from the organization.\n\n`DELETE /v1/email-settings/domain`\n\n```ts\nconst { data } = await client.deleteDomain(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n---\n\n### `getDomains`\n\nRetrieves all custom email domains for the organization.\n\n`GET /v1/email-settings/domain`\n\n```ts\nconst { data } = await client.getDomains()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n["string"]\n```\n\n</details>\n\n---\n\n### `verifyNameServers`\n\nVerifies that the domain\'s name server (NS) records are correctly configured.\n\n`POST /v1/email-settings/domain/name-servers:verify`\n\n```ts\nconst { data } = await client.verifyNameServers(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `verifyDnsRecords`\n\nVerifies that the domain\'s DNS records (MX, TXT, CNAME) are correctly configured\nin the customer\'s DNS provider.\n\n`POST /v1/email-settings/domain/dns-records:verify`\n\n```ts\nconst { data } = await client.verifyDnsRecords(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n### `verifyDomain`\n\nVerifies ownership and configuration of a custom email domain.\n\n`POST /v1/email-settings/domain:verify`\n\n```ts\nconst { data } = await client.verifyDomain(\n null,\n {\n domain: \'mail.yourcompany.com\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "a10bd0ff-4391-4cfc-88ee-b19d718a9bf7",\n "name": "Default Signature",\n "org_id": "org-123",\n "type": "signature",\n "value": "Best regards, The Team",\n "html": "<p>Best regards,<br/><strong>The Team</strong></p>",\n "created_at": "2024-01-15T10:30:00Z",\n "updated_at": "2024-01-20T14:45:00Z",\n "created_by": "user-123",\n "updated_by": "user-456"\n }\n]\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `ConnectOutlookRequest`\n\nFeature flags selecting which Microsoft Graph scopes to request.\nAt least one flag must be true. Passing a superset of previously\ngranted features triggers incremental consent for the delta only.\n\n\n```ts\ntype ConnectOutlookRequest = {\n mail?: boolean\n calendar?: boolean\n return_to?: string\n}\n```\n\n### `MailboxSyncStatus`\n\n```ts\ntype MailboxSyncStatus = {\n execution_id: string\n status: "RUNNING" | "COMPLETED" | "COMPLETED_WITH_ERRORS" | "FAILED" | "CANCELLED"\n timeframe: "5m" | "1w" | "2w" | "1m"\n started_at: string // date-time\n completed_at?: string // date-time\n inbox?: {\n status?: "PENDING" | "RUNNING" | "COMPLETED" | "FAILED" | "SKIPPED"\n total_messages?: number\n processed_messages?: number\n failed_messages?: number\n }\n sent_items?: {\n status?: "PENDING" | "RUNNING" | "COMPLETED" | "FAILED" | "SKIPPED"\n total_messages?: number\n processed_messages?: number\n failed_messages?: number\n }\n}\n```\n\n### `MailboxSyncStatuses`\n\n```ts\ntype MailboxSyncStatuses = "RUNNING" | "COMPLETED" | "COMPLETED_WITH_ERRORS" | "FAILED" | "CANCELLED"\n```\n\n### `MailboxSyncFolderStatuses`\n\n```ts\ntype MailboxSyncFolderStatuses = "PENDING" | "RUNNING" | "COMPLETED" | "FAILED" | "SKIPPED"\n```\n\n### `MailboxSyncTimeframePeriods`\n\n```ts\ntype MailboxSyncTimeframePeriods = "5m" | "1w" | "2w" | "1m"\n```\n\n### `InboxBucketResponse`\n\nInbox bucket representing the storage container for a shared inbox.\n\n```ts\ntype InboxBucketResponse = {\n id: string\n inbox_id: string\n}\n```\n\n### `ProvisionEpilotEmailAddressPayload`\n\nRequest payload for provisioning an epilot-managed email address.\n\n```ts\ntype ProvisionEpilotEmailAddressPayload = {\n address: string\n}\n```\n\n### `SetEmailAddressPrimaryPayload`\n\nRequest payload for setting an email address as the organization\'s primary address.\n\n```ts\ntype SetEmailAddressPrimaryPayload = {\n address: string\n}\n```\n\n### `UpdateEmailAddressPayload`\n\nRequest payload for updating an email address configuration.\nAll fields are optional; only provided fields will be updated.\n\n\n```ts\ntype UpdateEmailAddressPayload = {\n name?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n shared_inbox_id?: string\n is_active?: boolean\n}\n```\n\n### `CreateEmailAddressPayload`\n\nRequest payload for creating a new email address.\n\n```ts\ntype CreateEmailAddressPayload = {\n address: string\n name?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n shared_inbox_id?: string\n}\n```\n\n### `EmailAddressResponse`\n\nEmail address configuration with all associated metadata.\n\n```ts\ntype EmailAddressResponse = {\n id: string\n created_at: string // date-time\n updated_at?: string // date-time\n created_by?: string\n updated_by?: string\n address: string\n name?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n shared_inbox_id?: string\n is_active?: boolean\n is_primary?: boolean\n is_epilot_email_address?: boolean\n}\n```\n\n### `ErrorResponse`\n\nStandard error response format for all API errors.\n\n```ts\ntype ErrorResponse = {\n error: string\n status: number\n}\n```\n\n### `SettingMeta`\n\nCommon metadata fields for all settings and resources.\n\n```ts\ntype SettingMeta = {\n id: string\n created_at: string // date-time\n updated_at?: string // date-time\n created_by?: string\n updated_by?: string\n}\n```\n\n### `UpdateSharedInboxPayload`\n\nRequest payload for updating a shared inbox configuration.\nAll fields are optional; only provided fields will be updated.\n\n\n```ts\ntype UpdateSharedInboxPayload = {\n color?: string\n name?: string\n assignees?: string[]\n description?: string\n}\n```\n\n### `CreateSharedInboxPayload`\n\nRequest payload for creating a new shared inbox.\n\n```ts\ntype CreateSharedInboxPayload = {\n id?: string\n color: string\n name: string\n assignees?: string[]\n description?: string\n}\n```\n\n### `SharedInboxResponse`\n\nShared inbox configuration with all associated metadata.\n\n```ts\ntype SharedInboxResponse = {\n id: string\n created_at: string // date-time\n updated_at?: string // date-time\n created_by?: string\n updated_by?: string\n name: string\n color: string\n assignees: string[]\n description?: string\n bucket_id: string\n}\n```\n\n### `SettingsResponse`\n\n```ts\ntype SettingsResponse = Array<{\n id?: string\n name?: string\n org_id?: string\n type: "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n value?: string\n html?: string\n created_at?: string\n updated_at?: string\n created_by?: string\n updated_by?: string\n}> | {\n id?: string\n name?: string\n org_id?: string\n type: "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n value?: string\n html?: string\n created_at?: string\n updated_at?: string\n created_by?: string\n updated_by?: string\n}\n```\n\n### `ConnectedOutlookEmail`\n\nMapping between an Outlook email and its Outlook Connection.\nThis tracks which provider/tenant provisions each Outlook email.\n\n\n```ts\ntype ConnectedOutlookEmail = {\n outlook_email: string // email\n tenant_id?: string\n provider?: "outlook"\n connected_at?: string // date-time\n connected_by_user_id?: string\n}\n```\n\n### `OutlookConnectionError`\n\n```ts\ntype OutlookConnectionError = {\n error: string\n error_description?: string\n admin_consent_url?: string // uri\n}\n```\n\n### `CalendarAdminConsentStatus`\n\n```ts\ntype CalendarAdminConsentStatus = {\n admin_consented: boolean\n admin_consent_url?: string // uri\n}\n```\n\n### `MyCalendarConnectionResponse`\n\nPer-user calendar connection metadata, or null when the caller has\nnot connected their personal calendar yet.\n\n\n```ts\ntype MyCalendarConnectionResponse = {\n connection?: {\n user_id: string\n tenant_id: string\n status: "connected" | "expired"\n scopes?: string[]\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_at?: string // date-time\n updated_at?: string // date-time\n expires_at?: string // date-time\n }\n}\n```\n\n### `CalendarConnectionInfo`\n\n```ts\ntype CalendarConnectionInfo = {\n user_id: string\n tenant_id: string\n status: "connected" | "expired"\n scopes?: string[]\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_at?: string // date-time\n updated_at?: string // date-time\n expires_at?: string // date-time\n}\n```\n\n### `OutlookConnectionStatus`\n\n```ts\ntype OutlookConnectionStatus = {\n status: "connected" | "expired" | "pending_auth" | "not_connected"\n action: "connect" | "authorize" | "reconnect" | "none"\n action_reason?: "expired" | "permission_update"\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_by_user_id?: string\n connected_at?: string // date-time\n updated_at?: string // date-time\n tenant_id: string\n scopes?: string[]\n expires_at?: string // date-time\n is_token_valid?: boolean\n}\n```\n\n### `SmtpConnection`\n\n```ts\ntype SmtpConnection = {\n connection_id: string\n smtp_host: string\n smtp_port: number\n smtp_secure: "tls" | "starttls"\n smtp_username: string\n smtp_password?: string\n connected_by_display_name?: string\n connected_by_email?: string // email\n connected_by_user_id?: string\n connected_at?: string // date-time\n updated_at?: string // date-time\n last_tested_at?: string // date-time\n last_test_status?: "ok" | "auth_failed" | "tls_failed" | "host_unreachable" | "timeout" | "secret_missing" | "unknown"\n last_test_error?: string\n}\n```\n\n### `CreateSmtpConnectionRequest`\n\n```ts\ntype CreateSmtpConnectionRequest = {\n smtp_host: string\n smtp_port: number\n smtp_secure: "tls" | "starttls"\n smtp_username: string\n smtp_password: string\n}\n```\n\n### `UpdateSmtpConnectionRequest`\n\nPartial update; omitted fields keep their existing values.\n\n```ts\ntype UpdateSmtpConnectionRequest = {\n smtp_host?: string\n smtp_port?: number\n smtp_secure?: "tls" | "starttls"\n smtp_username?: string\n smtp_password?: string\n}\n```\n\n### `SmtpSender`\n\nAn address allowed to send through a custom SMTP connection. Mirrors an Outlook\nmailbox: the address, its display name and its assignees live on the shared\nemail-address record, while this row binds it to a set of SMTP credentials.\n\n\n```ts\ntype SmtpSender = {\n email: string // email\n connection_id: string\n reply_to_email?: string\n connected_at?: string // date-time\n connected_by_user_id?: string\n}\n```\n\n### `ConnectSmtpSenderRequest`\n\n```ts\ntype ConnectSmtpSenderRequest = {\n email: string // email\n connection_id: string\n name?: string\n reply_to_email?: string\n shared_inbox_id?: string\n user_ids?: string[]\n group_ids?: string[]\n default_signature_id?: string\n}\n```\n\n### `SmtpTestResult`\n\n```ts\ntype SmtpTestResult = {\n status: "ok" | "auth_failed" | "tls_failed" | "host_unreachable" | "timeout" | "secret_missing" | "unknown"\n error?: string\n tested_at: string // date-time\n}\n```\n\n### `SignatureSetting`\n\nSetting that allows to add a signature.\n\n```ts\ntype SignatureSetting = "signature"\n```\n\n### `EmailDomainSetting`\n\nSetting that allows to add a custom domain. For e.g; doe.com\n\n```ts\ntype EmailDomainSetting = "email_domain"\n```\n\n### `EmailAddressSetting`\n\nSetting that allows to add an email address on the custom domain. For e.g; john@doe.com\n\n```ts\ntype EmailAddressSetting = "email_address"\n```\n\n### `WhitelistEmailAddressSetting`\n\n- Setting that specifies a list of addresses exempt from being flagged as duplicate emails.\n- An email will be flagged as a duplicate if it has the same content and is sent to the same recipient within the time frame specified in the RestrictDuplicatesWithinSetting.\n\n\n```ts\ntype WhitelistEmailAddressSetting = "whitelist_email_address"\n```\n\n### `RestrictDuplicatesWithinSetting`\n\n- Restrict duplicates within:\n * 10s\n * 5m\n * 1d\n * 5000 // It converts to 5 seconds.When expressed as a numerical value, it will be interpreted as being in milliseconds.\n- Defaults to 3 minutes\n- Negative values will be treated same as positive values\n- If not set, defaults to 3 min\n- If set as\n\n```ts\ntype RestrictDuplicatesWithinSetting = "restrict_duplicates_within"\n```\n\n### `SettingType`\n\n```ts\ntype SettingType = "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n```\n\n### `Setting`\n\nGeneric setting object used for various email configuration types.\nThe applicable fields depend on the setting type:\n- **signature**: Uses `name`, `value` (plain text), and `html` (rich text)\n- **email_domain**: Uses `value` (domain name)\n- **whitelist_email_address**: Uses `value` (email address)\n-\n\n```ts\ntype Setting = {\n id?: string\n name?: string\n org_id?: string\n type: "signature" | "email_domain" | "email_address" | "whitelist_email_address" | "restrict_duplicates_within"\n value?: string\n html?: string\n created_at?: string\n updated_at?: string\n created_by?: string\n updated_by?: string\n}\n```\n\n### `Domain`\n\nCustom email domain configuration.\n\n```ts\ntype Domain = {\n domain?: string\n}\n```\n';
5
-
6
-
7
- exports.default = email_settings_default;